Artificial Intelligence 8 min read

Open‑Source Bird Species Detection with TensorFlow, MobileNet V2 and OpenCV

A hobbyist builds a Python‑based bird‑recognition system using TensorFlow's SSD OpenImages model, a MobileNet V2 classifier from TensorFlow Hub, and OpenCV, shares the open‑source code on GitHub, discusses early results, challenges like accuracy and non‑maximum suppression, and outlines future improvements.

Python Programming Learning Circle
Python Programming Learning Circle
Python Programming Learning Circle
Open‑Source Bird Species Detection with TensorFlow, MobileNet V2 and OpenCV

关注+星标,每天学习Python新技能

因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享

网友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(现已停止访问)。

来看看当时的 深度卷积神经网络 的架构。

随着技术的发展,今天的我们不仅能识别照片中是否有鸟,还能判断鸟的种类,甚至识别鸟的个体身份也不再是天方夜谭。

<p>长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等。</p><p style="text-align:center;"><img src="https://mmbiz.qpic.cn/mmbiz_jpg/iaahNUMjJc7tfmwyuPKscwlibjPZMBZnVjO47uykuHH316Xuicsvic3xibKfSDWHYlacCF94M6Jauynu8uV3icC3qpHQ/640?wx_fmt=other"/></p>
<p>推荐阅读</p><p><a href="http://mp.weixin.qq.com/s?__biz=MzU4NDY1Nzc4Mg==&amp;mid=2247537597&amp;idx=1&amp;sn=7cfa0deb805b4522f88f5efb7a84ef5c&amp;chksm=fd946da4cae3e4b236d2024eb94fe6cb92cf0730db297ca015e1b55ea3254c5c68e1aab52f65&amp;scene=21#wechat_redirect" target="_blank">用Python自动给抖音漂亮小姐姐视频点赞!</a></p><p><a href="http://mp.weixin.qq.com/s?__biz=MzU4NDY1Nzc4Mg==&amp;mid=2247537597&amp;idx=2&amp;sn=dd108377770b38c06992391272d58134&amp;chksm=fd946da4cae3e4b2b1c2af29bec4f27374683d7ef4a79a4da1ffbc96d218e3c74ab9a5859ac3&amp;scene=21#wechat_redirect" target="_blank">我用Python爬取800只基金数据,发现……</a></p><p><a href="http://mp.weixin.qq.com/s?__biz=MzU4NDY1Nzc4Mg==&amp;mid=2247537569&amp;idx=1&amp;sn=84b155513e6b700db8d07311f1fcab46&amp;chksm=fd946db8cae3e4ae49b3643f07f28e7204e54679e18e9d44d07356210e7326ab7cd0562a8bdd&amp;scene=21#wechat_redirect" target="_blank">Python编程进阶,常用8大技巧!</a></p><p><a href="http://mp.weixin.qq.com/s?__biz=MzU4NDY1Nzc4Mg==&amp;mid=2247537569&amp;idx=2&amp;sn=36dba4436af4841bbdfb8151b9b18011&amp;chksm=fd946db8cae3e4ae8ee0fd3a1a20f463d99db20fa9c92b5a2aa49c71e7f63836702f0271d990&amp;scene=21#wechat_redirect" target="_blank">10个提高python水平的高级知识点</a></p>

点击 阅读原文 了解更多

machine learningcomputer visionpythonTensorFlowopencvBird Detection
Python Programming Learning Circle
Written by

Python Programming Learning Circle

A global community of Chinese Python developers offering technical articles, columns, original video tutorials, and problem sets. Topics include web full‑stack development, web scraping, data analysis, natural language processing, image processing, machine learning, automated testing, DevOps automation, and big data.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.