这是一个基于迁移学习的目标检测API,可检测图像、视频或实时网络摄像头中的所有目标。SSD模型和Faster R-CNN模型连同Tensorflow中的标签图一起在Mobile Net COCO数据集上进行了预训练。这些模型用于检测图像、视频或实时网络摄像头中捕获的目标。OpenCV用于流目标和预处理。
Github项目地址
https://github.com/kaushikjadhav01/Real-Time-Object-Detection-API-using-TensorFlow
一些测试截图
使用SSD模型进行图像目标检测的输出结果
![279ab786f05845e7feca436e5db29de8.png](https://i-blog.csdnimg.cn/blog_migrate/957354ff3db05d9f9672c065a76a7d5a.jpeg)
使用SSD模型进行视频目标检测的输出结果
![b593a44626d8bd96fffdbc51e11bcb56.png](https://i-blog.csdnimg.cn/blog_migrate/31c91fd05b79ee0364482b24cedcd377.jpeg)
![608209a3361de32727bc65d6c18423d5.png](https://i-blog.csdnimg.cn/blog_migrate/6c4ae51cc7b32c86626576df887209bb.jpeg)
使用SSD模型进行网络摄像头目标检测的输出结果
![b47e77a5aff9f02057f7715ae695b7aa.png](https://i-blog.csdnimg.cn/blog_migrate/dde5485471a80b4443fcc8ae86db1d3a.jpeg)
使用Faster R-CNN模型进行图像目标检测的输出结果
![8a8e54651035f89db373d01ebac04fda.png](https://i-blog.csdnimg.cn/blog_migrate/39ea8cab858feb4c190ce9657c319520.jpeg)
使用Faster R-CNN模型进行视频目标检测的输出结果
![bf22dff5b8df30c344e6196682199692.png](https://i-blog.csdnimg.cn/blog_migrate/c18f7723d922eb3a772474e65dca0b4e.jpeg)
![50e853dea03ff5be28dff03c4f962f90.png](https://i-blog.csdnimg.cn/blog_migrate/8d0af7f60295e82e800d9c12a03a91e7.jpeg)
使用Faster R-CNN模型进行网络摄像头目标检测的输出结果
![5534ab9bee314b33ceacd0d2551a8ba8.png](https://i-blog.csdnimg.cn/blog_migrate/6e9c491cd0b256ac4cdcdd491b925912.jpeg)
技术概念
Faster RCNN:是由Ross Girshick, Shaoqing Ren, Kaiming He和 Jian Sun 在2015年提出的目标检测架构,并且是使用卷积神经网络(如YOLO(You Look Only Once,仅看一次)和SSD(Single Shot Detector,单帧检测器))的著名目标检测架构之一。
更多信息可以查看:https://towardsdatascience.com/faster-rcnn-object-detection-f865e5ed7fc4
Single Shot Detector(SSD):像YOLO一样,仅需使用一张照片即可使用多框检测图像中存在的多个物体。它在速度和高精度目标检测算法方面明显更快。
更多信息可以查看:https://towardsdatascience.com/ssd-single-shot-detector-for-object-detection-using-multibox-1818603644ca
标签映射:是一种将文本与映射符号合理放置在映射上的技术,共同代表现实世界的特征和属性。有效地使用文字可以创建清晰、信息丰富且有吸引力的映射。TensorFlow需要标签映射,即将每个使用的标签映射为整数值。训练和检测过程都使用此映射图。
更多信息可以查看:https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/training.html
推理图:推理图是一个命题图,其中某些弧和某些反弧都增加了信息可以通过其流动的通道,这意味着推理图既是知识的表示,又是对知识进行推论的方法。Channels 有两种形式。第一种类型,即 i-channels,被添加到反向先行弧中,之所以这样命名,是因为它们承载的消息报告从先前节点到规则节点的“我是真实的”或“我被否定”。Channels 也可以被添加到随后的弧中,称为 u-channels,因为它们将消息传递给结果,从而报告“您是真实的”或“您被否定的”。规则通过共享子表达式连接。
更多信息可以查看:http://www.cogsys.org/papers/2013poster15.pdf
协议缓冲区(Protobuf):是一种序列化结构化数据的方法。在开发程序之间通过导线相互通信或存储数据时非常有用。该方法涉及描述某些数据结构的界面描述语言和从该描述生成源代码的程序,该程序用于生成或解析表示结构化数据的字节流。
更多信息可以查看:http://www.cogsys.org/papers/2013poster15.pdf
使用的技术
- TensorFlow
- Keras
- OpenCV
- IPWebcam
- Python
如何安装使用
按照说明安装TensorFlow API :
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md
下载我的仓库并将仓库的jupyter notebook文件放在 Tensorflow API 的 models/research/object_detection 文件夹中
要使用智能手机摄像头代替笔记本电脑网络摄像头,请从应用程序商店上安装IPWebcam应用程序。打开应用程序,然后点击Start Server
将我的jupyter笔记本中的IP地址替换为智能手机上IPWebcam应用程序中显示的IP地址,然后运行jupyter notebook
项目作者
Kaushik Jadhav
- Github:https://github.com/kaushikjadhav01
- Medium:https://medium.com/@kaushikjadhav01
- LinkedIn:https://www.linkedin.com/in/kaushikjadhav01/
- Portfolio:http://kaushikjadhav01.github.io/