python马赛克数据增强 python 马赛克拼图_下载图片

这是最终得到的效果,如果你的图片集不同,或者参数设置不同,效果也会有差别。

python马赛克数据增强 python 马赛克拼图_数据集_02

python马赛克数据增强 python 马赛克拼图_数据集_03

1,收集图片素材

要做出上述的效果来,首先就需要大量的图片,图片少了,效果肯定不好,容易重复,需要的像素值找不到相近的等等弊端。人工收集图片的话肯定是非常慢的,如果要手工下载图片,那至少要找图片找很多天了。这个时候一般有两个解决途径:

爬取图片

用网络爬虫从别的网站上爬取图片是个不错的选择,也可以用python来实现。

下载图片数据集

网络上有别人已经整理好的图像数据集,我使用的是斯坦福大学李飞飞制作的imagenet数据集。这个数据集是计算机视觉领域常用的一种数据集,它的训练集大概有100多个g,测试集有10多个g,只是测试集就有10万张图片,够本工程使用了。所以我下载的是他的测试集。网速快的话可以十来分钟就下载下来。图片数据集的迅雷下载链接

python马赛克数据增强 python 马赛克拼图_文件名_04

3,建立索引

建立索引就是保存每张图片出现次数最多的像素值然后保存到文件中。格式为:

文件名称:b,g,r

建立好索引文件之后,就可以知道每个图片和他们最常见的颜色。在使用这些图片的时候,就可以读取整个索引文件,然后定位到图片文件本身。试想一下,如果没有这些索引文件,那么生成一次马赛克拼图就要求一次所有图片的最多像素,太多冗余了。下面是代码:

python马赛克数据增强 python 马赛克拼图_python马赛克数据增强_05

生成的索引文件格式是这样的:

python马赛克数据增强 python 马赛克拼图_下载图片_06

4,画图

首先是读取步骤3生成的索引文件。然后可以选择打乱它,以免一样的图片聚集出现在一个位置附近。

python马赛克数据增强 python 马赛克拼图_python马赛克数据增强_07

python马赛克数据增强 python 马赛克拼图_python 马赛克拼图_08

大功告成。

下面是我的时间统计:

下载图片用了三个多小时

图片预处理用了一个多小时

建立索引大概需要一个多小时

之后画每个一万个像素点左右的图片大概需要三分钟的时间

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!