Before we start although it is not fully necessary it’s a good practice to set our image resolution with multiplies of two.
Here in this example we used 1000x1000px.

You can change the settings. (Please note that if you have too many tiles (In this example we have 100×100 = 10000) it can take a while.)

Here is our result so far. All tiles converted into a vector mosaic.

Right click then ungroup.

Now select all tiles and go to effects – convert to shape – ellipse.

Our single size was 10 px. So we enter this value: (Make sure you change size option to Absolute)

Now if we zoom in we have this look:

But in order to achieve real halftone effect we need to size each circle depending on its luminosity. We can achieve this with an Illustrator Script (by wundes.com)
(Download Illustrator Script : https://github.com/johnwun/js4ai/blob/master/sizeByLuminance.jsx)
Once you downloaded the script. Go to file – scripts – other script

Select sizeByLuminance.jsx script.

Depending on your choice click yes or no. For this image we selected Yes. Be aware that this script might take some time.