近期趁着闲下来整理一下之前做的各种东西。
首先是这么一个猫脸识别器:基于Google提供、Tensorflow框架下的object detection API,只需准备几百张自己的数据集,在Google提供的训练好的模型上进一步训练,可以在短时间内得到一个性能相对较好(准确率95%左右)、最终调用接口也十分方便的自定义识别器。基于已有模型、实现对新物体识别的训练方法叫做Transfer Learning。
个人认为Google这个接口十分良心,直接方便了广大工程师,可以快速地完成自己的特定应用,例如在摄像头中监控特定目标是否出现等等。而且这个识别器既包含分类(Classification)的功能也包含了精确定位位置(Detection)的功能,下一步大概就是Segmentation了吧(笑)。
再说回猫脸识别。调查猫脸识别的时候,我们发现CSDN上倒是有基于opencv的代码,但是在Cats v.s. Dogs的数据集上跑了一下效果并不好,并且各种参数十分莫名根本不知道该怎么调。该数据集本来是一个猫脸狗脸识别大赛的数据集,对于我们的应用刚好合适。Google的API有整只猫的识别,但是没有猫脸和猫眼睛的识别,于是就想到了在已有模型上进行Transfer Learning,可以快速达到目标。
主要参考了以下内容:
[1] Google自己github上的说明,此说明写的非常详细,只看这份说明就可以完成所有的操作。
https://github.com/tensorflow/models/tree/master/research/object_detection.
[2] 英文不够好导致不能清楚理解的朋友可以跟我一一样参考一下这篇中文博客~一篇讲的还可以但不够仔细的linux上的实现。
https://blog.csdn.net/c2a2o2/article/details/78436735.
[3] 原博文找不到了,在原模型基础上学习识别Racoon(小浣熊!),github上的代码架构十分清晰,但是README写的十分简略。