给你10万张图片,让你找出与其中某张图片最为近似的10张,你会怎么做?不要轻言放弃,也不用一张张浏览。使用Python,你也可以轻松搞定这个任务。
识别相同或相似的图像,有什么好的方法么?
加vx:tanzhouyiwan 或qq群813622576免费领取Python学习资料一套哦!
我虽然乐于帮助读者解决问题,但实话实说,一开始不太理解这种需求。
我文章里的样例图片(哆啦a梦和瓦力),都是从网络搜集来的。如果你需要从网上找到跟某张图片近似的图像,可以使用Google的“以图搜图”功能啊。
很快,我突然醒悟过来。
这种需求,往往不是为了从互联网上大海捞针,寻找近似图片。而是在一个私有海量图片集合中,找到近似图像。
这种图片集合,也许是你团队的科研数据。例如你研究鸟类。某天浏览野外拍摄设备传回来的图像时,突然发现一个新奇品种。
你于是很想搞清楚这种鸟类的出现时间、生活状态等。这就需要从大量图片里,找到与其近似的图片(最有可能是拍到了同一种鸟)。
这种图片集合,也许是社会安全数据。例如你在反恐部门,系统突然发现某个疑似恐怖分子出现在敏感区域。这家伙每一次现身,都伴随着恶性刑事案件的发生,给人民群众的生命财产安全带来严重威胁。
这时候无论对其衣着、外貌还是交通工具的相似度搜索,就显得至关重要了。
上述例子中,因为你都没有把图像上传到互联网,Google的“以图搜图”引擎功能再强大,也无能为力。
好吧,解决这个问题,很有意义。
下一个问题自然是:这种需求,解决起来复杂吗?
是不是需要跨过很高的技术门槛才能实现?是不是需要花大量经费雇佣专家才能完成?
本文,我为你展示如何用10几行Python代码,解决这个问题。
数据
为了讲解的方便,我们依然采用《如何用Python和深度神经网络识别图像?》一文中使用过的哆啦a梦和瓦力图片集合。
我给你准备好了119张哆啦a梦的照片,和80张瓦力的照片。图片已经上传到了这个Github项目。
请点击这个链接,下载压缩包。然后在本地解压。作为咱们的演示目录。
解压后,你会看到目录下有个image文件夹,其中包含两个子目录,分别是doraemon和walle。
doraemon的目录下,都是各式各样的蓝胖子图片。
瓦力目录下的图片是这个样子的:
数据已经有了,下面我们来准备一下环境配置。
环境
本文中,我们需要使用到苹果公司的机器学习框架TuriCreate。
请注意TuriCreate发布时间不久,目前支持的操作系统列表如下: