本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。
网友cldud1245是一个鸟类爱好者(以下简称喂鸟哥),最近打算自学Python。
拥有其他语言编程经验的他,可不打算按部就班从Hello World做起,一上来就挑战图像识别!
他用一个摄像头对着自家后院的喂鸟器,拍到来觅食的鸟就尝试判断鸟的种类,并通过Twitter机器人实时发布判断结果。
运行第一天就拍到了17次!最多的时候每十几分钟就有鸟来光顾。
其中卡罗莱纳山雀总共来过8次,就是还不能准确判断是否是同一只。
使用的技术都是开源的!
喂鸟哥把代码放到了Github上开源,只有一个文件、三百多行。来看看他是怎么实现的吧!
作为初学者,他使用的都是已存在的开源项目,没有自己训练新的模型。
目标检测模型使用的是随TensorFlow目标检测API发布的SSD Openimages v4。
鸟类分类模型是TensorFlow Hub上由Google发布的基于MobileNet V2的轻量级模型。
图像处理就是经典的Open CV了。
不过鸟类分类模型中给出的结果都是拉丁文学名,为了方便大家看懂他又写了一个爬虫从维基百科上把对应的俗名爬了下来。
另外,该项目Github中有详细的思路解说,感兴趣的话可以去学习一下!
还有进步空间
从Twitter上发布的结果目前看来准确率还有待提高,比如拍到飞行中的鸟识别起来会遇到困难。
有时也会把两只鸟识别成三只。喂鸟哥打算用非极大值抑制 (Non-Maximum Suppression)来修复这个问题。
不过这才是项目运行的第一天。
喂鸟哥使用鸟类百科图册进行测试,结果还是很准确的,所以怀疑摄像头是否还不够清晰
有人建议他,把网友指出正确名称的评论爬取下来,与图片一起再加入数据集进行训练,就可以不断提高精度。
还有人提议下一步要识别鸟的个体身份,看看到底是同一只鸟反复来吃东西,还是只是一个品种的很多只鸟。
One More Thing
回复中有人问到:“但是它能判断照片是不是在国家公园拍摄吗?”
这个梗来自网络漫画网站XKCD在2014年发表的一幅漫画。
如果要判断一张照片是否在国家公园拍摄,只需要判断一下图片的地理标记信息就行了。
但是要判断照片里有没有鸟,则是一个困难的多的问题。
Flickr的工程师看到后接受了这个挑战,用当时刚刚掀起新一轮热潮的深度学习做出了漫画中描述的这款程序Park or Bird(现已停止访问)。
来看看当时的深度卷积神经网络的架构。
随着技术的发展,今天的我们不仅能识别照片中是否有鸟,还能判断鸟的种类,甚至识别鸟的个体身份也不再是天方夜谭。