动物识别相关的项目本质上属于图像识别,在我之前的博文中已经有过不少实践了,感兴趣的话可以自行移步阅读即可,这里不是说想要单纯地去做一个动物识别的项目,昨晚在玩手机的时候突然被小孩问到一个动物是不是国家保护动物,我一时间回答不上来,甚至连查了百度以后连字都不认识,今天就想着对于收集到的这些国家一级保护动物用我的专业领域技术来开发一个智能化的自动识别系统,帮助我来对不同的保护动物自动归类识别处理,首先来看下效果图:
这里是从互联网收集汇总获取到的不到100种一级保护动物,当然了有可能是不全的,毕竟我是想将这个事情跟自己的职业结合起来做点有意思的事情而已,倒不是什么动物学专家啥的哈。
简单看下收集到的数据类别清单:
蜂猴
褐马鸡
西藏野驴
豚尾猴
豚鹿
豹
貂熊
赤斑羚
赤颈鹤
遗鸥
野牛
中华白海豚
中华秋沙鸭
丹顶鹤
云豹
亚洲象
儒艮
台湾猴
台湾鬣羚
叶猴
四爪陆龟
坡鹿
塔尔羊
孔雀雉
扬子鳄
扭角羚
普氏原羚
朱鹮
梅花鹿
河狸
灰腹角雉
熊狸
熊猫
熊猴
白唇鹿
白头鹤
白尾海雕
白颈长尾雉
白鹤
紫貂
红胸角雉
绿孔雀
花豹
蒙古野驴
蓝鹇
藏羚羊
虎
虹雉
金丝猴
金钱豹
长臂猿
雪豹
马来熊
高鼻羚羊
野牦牛
野马
野骆驼
鸨
麋鹿
黄腹角雉
黑头角雉
黑长尾雉
黑颈长尾雉
黑颈鹤
黑麂
鼋
鼷鹿
一共67种。
对应的等级信息汇总查询如下:
单张图像处理核心代码如下:
one_img = cv2.imread(one_path)
one_img = cv2.resize(one_img,(100,100))
one_img = one_img.transpose((2,0,1))
相关代码详细实现可以参考我之前的博文,这里就不再赘述了。
模型详细参数结构如下:
整体还是很轻量级的,不足5MB的大小,但是识别性能还是很不错的。
训练200次epoch迭代计算,acc曲线如下所示:
loss曲线如下所示:
为了进一步拆解探索分析模型的识别机理,这里开发集成了GradCAM实现了热力图可视化分析,实例如下所示:
算是一个不错的实践项目吧,记录一下!