Live data from Hacker News

Make photomosaics, GIFs, and murals from pictures in Python with ML/OpenCV

github.com

1–10 of 23 posts

Re: Make photomosaics, GIFs, and murals from pictures in Python with ML/OpenCV

#3
I'm not an expert in the topic, but my understanding is RGB is a poor color space for computing color difference. This could be why your mosaics end up so washed out. [1] suggests using a CIELAB color space [2].

Edit: Looking at the code more closely it looks like you were using Lab at one point but commented it out[3], so I'm guessing you're already aware of this.

1: https://stackoverflow.com/a/9019461/185171

2: https://en.wikipedia.org/wiki/CIELAB_color_space#CIELAB

3: https://github.com/worldveil/photomosaic/blob/bb720efda11383...

Re: Make photomosaics, GIFs, and murals from pictures in Python with ML/OpenCV

#4

Ok, but where is the ML part? We’ve been creating these mosaics for decades...

It's using the KMeans[1] library from sklearn.cluster. But this isn't really ML, is it? My ML knowledge is limited. Regardless, it's a cool project. OP might want to update the title to remove ML.

[1] https://github.com/worldveil/photomosaic/blob/master/emosaic...

Re: Make photomosaics, GIFs, and murals from pictures in Python with ML/OpenCV

#5
post #4

Ok, but where is the ML part? We’ve been creating these mosaics for decades...

It's using the KMeans[1] library from sklearn.cluster. But this isn't really ML, is it? My ML knowledge is limited. Regardless, it's a cool project. OP might want to update the title to remove ML. [1] https://github.com/worldveil/photomosaic/blob/master/emosaic...

"[Kmeans] algorithm has a loose relationship to the k-nearest neighbor classifier, a popular machine learning technique for classification that is often confused with k-means due to the name." Maybe an ML expert could elaborate? I've been curious on my own projects when to actually mention when they use true ML or not.

https://en.wikipedia.org/wiki/K-means_clustering

Re: Make photomosaics, GIFs, and murals from pictures in Python with ML/OpenCV

#6

Ok, but where is the ML part? We’ve been creating these mosaics for decades...

The face montage building trains a linear classifier on top of the pretrained embedding network - it’s the portion that talks about creating a training folder of your face.

But yes the photomosiacs strictly don’t use ML, unless you count the internal fun stuff Faiss (the similarity search lib) does to construct fast indexes.

Re: Make photomosaics, GIFs, and murals from pictures in Python with ML/OpenCV

#7
post #4

Ok, but where is the ML part? We’ve been creating these mosaics for decades...

It's using the KMeans[1] library from sklearn.cluster. But this isn't really ML, is it? My ML knowledge is limited. Regardless, it's a cool project. OP might want to update the title to remove ML. [1] https://github.com/worldveil/photomosaic/blob/master/emosaic...

Naw I had used the Kmeans part for extracting dominant colors. I was thinking about using it to generate cards and using the top K colors for the background of the card.

As I mentioned above the only ML is the face classifier. There’s a flag that allows you to only include face pics in the photomosaics as well

Re: Make photomosaics, GIFs, and murals from pictures in Python with ML/OpenCV

#8
post #3

I'm not an expert in the topic, but my understanding is RGB is a poor color space for computing color difference. This could be why your mosaics end up so washed out. [1] suggests using a CIELAB color space [2]. Edit: Looking at the code more closely it looks like you were using Lab at one point but commented it out[3], so I'm guessing you're already aware of this. 1: https://stackoverflow.com/a/9019461/185171 2: htt…

It didn’t make a ton of difference empirically when I tried it.

But you’re correct, generally that’s the space you want to be in.

Re: Make photomosaics, GIFs, and murals from pictures in Python with ML/OpenCV

#9
post #5
post #4

Earlier quoted context omitted.

It's using the KMeans[1] library from sklearn.cluster. But this isn't really ML, is it? My ML knowledge is limited. Regardless, it's a cool project. OP might want to update the title to remove ML. [1] https://github.com/worldveil/photomosaic/blob/master/emosaic...

"[Kmeans] algorithm has a loose relationship to the k-nearest neighbor classifier, a popular machine learning technique for classification that is often confused with k-means due to the name." Maybe an ML expert could elaborate? I've been curious on my own projects when to actually mention when they use true ML or not. https://en.wikipedia.org/wiki/K-means_clustering

Right. See my comment above.

As to why it was in the project: If you treat each pixel as an example vector in 3 dimensions and cluster, you get the “dominant” colors for the image. It’s a primitive way to compress images as well. In this case I just was using it to generat fun cards that would use a minimal number of dominant colors. It’s still in the code if you’d like to use it but a bit hidden.

Re: Make photomosaics, GIFs, and murals from pictures in Python with ML/OpenCV

#10
post #3

I'm not an expert in the topic, but my understanding is RGB is a poor color space for computing color difference. This could be why your mosaics end up so washed out. [1] suggests using a CIELAB color space [2]. Edit: Looking at the code more closely it looks like you were using Lab at one point but commented it out[3], so I'm guessing you're already aware of this. 1: https://stackoverflow.com/a/9019461/185171 2: htt…

It didn’t make a ton of difference empirically when I tried it. But you’re correct, generally that’s the space you want to be in.

[deleted]
Post reply on HN