AI ninja project [day 20] object detection

好的,假设在你的农地旁,
有人或动物不时就发出类似卡车或是车子的声音,
让你的手机半夜一直发出警报,
这个时候该怎麽办呢?

也许我们可以搭配object detection来确认是不是真的有人在偷农作物。

我建议是使用Linux或是用colab的环境来安装使用object detection,
我曾经成功使用windows系统训练过一次自己的模型,
但却不想再成功一次了。
如果想挑战看看使用windows的环境或是自己训练辨识特定物件的模型可以参考下面的文件。

object-detection-api 文件
https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/

可以应用像是工厂辨识特殊零件损坏,以及补救维修资讯的显现。
或是植物特殊的病虫害资讯显现,以及应对方法。

但这篇介绍是从已经训练好的模型来对图片进行物件辨识。

教学网页:
https://www.tensorflow.org/hub/tutorials/tf2_object_detection

colab:
https://colab.research.google.com/github/tensorflow/hub/blob/master/examples/colab/tf2_object_detection.ipynb#scrollTo=-y9R0Xllefec

安装及引入:
https://ithelp.ithome.com.tw/upload/images/20210920/20122678z8upV1UpWa.png

建立将图片转成numpy array的function:
https://ithelp.ithome.com.tw/upload/images/20210920/20122678dUOXnFJOWj.png

可供选择已经训练好的object detection模型,
如果有更喜欢的可以从tf hub查找,
主要是看有辨识到哪些物件,符不符合需求。
https://ithelp.ithome.com.tw/upload/images/20210920/201226789EEYIxD5w2.png

测试图片 及
COCO17_HUMAN_POSE_KEYPOINTS:辨识姿势所需要的list,如果辨识之後不需要看人体姿势,不放这个list也可以
https://ithelp.ithome.com.tw/upload/images/20210920/20122678kS60XMYyHb.png

安装Object Detection API
https://ithelp.ithome.com.tw/upload/images/20210920/201226782DzhXbyFi9.png

载入後续需要使用到的功能:
https://ithelp.ithome.com.tw/upload/images/20210920/20122678ChVLfMdoWw.png

那我们将标签对应输出的index号码使用一个字典来保存:
https://ithelp.ithome.com.tw/upload/images/20210920/20122678THF8cbRWmY.png

也可以从github查看这个模型所有的标签及对应id:
https://github.com/tensorflow/models/blob/master/research/object_detection/data/mscoco_label_map.pbtxt

用tf_hub载入模型:
https://ithelp.ithome.com.tw/upload/images/20210920/201226784iOgdYfRaK.png

将测试图片转成numpy array,
如果有需要的话,下面也提供了将图片翻转及转灰阶的方法:
https://ithelp.ithome.com.tw/upload/images/20210920/20122678l9GVhjrwwX.png

进行辨识:
https://ithelp.ithome.com.tw/upload/images/20210920/20122678eus8ODIMZj.png

将推论结果作图:
https://ithelp.ithome.com.tw/upload/images/20210920/201226782H3jv0hcCX.png

https://ithelp.ithome.com.tw/upload/images/20210920/20122678Xw11FIuSuC.png

假设不想看到人体姿势的辨识,
可以将 keypoint, keypoint_scores, keypoint_edges这三个参数拔除。


<<:  快速新增范例资料

>>:  抽象类别和介面 (2)

全域

全域变数 = 全域物件的属性 var deposit =500; //全域变数 console.lo...

【Day 26】迁移学习(Transfer Learning)(上)

Transfer Learning的意思是,假设你现在有一些跟你的task没有直接相关的data,那...

深度学习模型

LeNet LeNet-5为LeCun大神在1998年所提出的卷积神经网络算法。 卷积类神经网路 1...

区块链篇

区块链不管怎麽说,也是近年来火红的几个议题之一, 所以即使我不熟悉,也没甚麽兴趣,还是决定发一篇。 ...

企划实现(24)

使用tablatout串fragment xml程序码 <?xml version="...