阿chai昨天被一个毒虫子咬了。原本只是红肿,后来变成了出“脓”了,而且是一大片。在经历了一系列检查后医生给阿chai开了很多药,内服外敷的都有,还有激素成分的药物。

阿chai在这里提醒小伙伴们,最近真的少往草和树多的地方去,秋天就算是蚊子咬人都很厉害的。既然虫子这么讨厌,那今天来个昆虫识别的demo吧,机器人得“吸取”阿chai的教训,不能被啃啊。

1.蜘蛛侠也被咬了

呃呃呃,蜘蛛侠是蜘蛛侠,阿chai是阿chai,蜘蛛侠能在绿布前表演,阿chai能电脑前码字,认真就输了。

小伙伴们,被蛇虫咬了一定要去医院,真的,别拖,去了天堂也变不成蜘蛛侠。

2.Faster-RCNN

Faster-RCNN是非常优秀的目标检测框架,是Fast RCNN的优化版本,二者主要的不同在于感兴趣区域的生成方法,Fast RCNN使用的是选择性搜索,而Faster RCNN用的是RPN网络。RPN将图像特征映射作为输入,生成一系列object proposals,每个都带有相应的分数。

a.开源demo与paper

Paper:https://www.aliyundrive.com/s/fr12aE6n46E
Caffe:https://github.com/rbgirshick/py-faster-rcnn.git
PyTorch:https://github.com/jwyang/faster-rcnn.pytorch.git
TensorFlow:https://github.com/smallcorgi/Faster-RCNN_TF.git
Keras:https://github.com/you359/Keras-FasterRCNN.git

b.工作流程

(1)输入图像到卷积网络中,生成该图像的特征映射。

(2)在特征映射上应用RPN,返回object proposals和对应的分数。

(3)应用Rol池化层,将所有proposals修正到同样尺寸。

(4)将proposals传递到完全连接层,生成目标物体的边界框。

c.工作点

  • 卷基层:Faster RCNN使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续RPN层和全连接层。
  • RPN:RPN用于生成region proposals。该层通过softmax判断anchors属于positive或者negative,再利用bounding box regression修正anchors获得精确的proposals。
  • Roi Pooling:该层收集输入的feature maps和proposals,综合这些信息后提取proposal feature maps,送入后续全连接层判定目标类别。
  • 分类器:利用proposal feature maps计算proposal的类别,同时再次bounding box regression获得检测框最终的精确位置。

3.Faster-RCNN的昆虫检测

这里我们依托百度飞桨的PaddleX,小伙伴们也可以在AIStudio上运行。

a.环境准备

在安装好Miniconda或Anaconda后我们新建一个环境:

# 新建环境
conda create -n insect_detection python=3.7
conda activate insect_detection
# paddlepaddle 1.8.4
pip install paddlepaddle-gpu=1.8.4
# 静态图
pip install "paddlex<=2.0.0" -i https://mirror.baidu.com/pypi/simple

tar xzf insect_det.tar.gz

然后下载阿chai准备的代码、数据以及模型文件:

git clone https://github.com/zihan987/insects_detection.git
https://pan.baidu.com/s/1VuURAeh610r-gQRO8ROBxg
提取码:fp5n

insect文件解压后,fasterrcnn_model.zip为阿chai训练的模型,insect_det.tar.gz为标注好的昆虫数据。

b.训练模型

如果想自己训练,阿chai提供了训练的代码,在train.py中。我们运行即可进行测试,注意修改数据的路径。

python train.py

训练一定找一个GPU服务器,或者在AIStudio上运行。

阿chai只是训练了20个epoch,小伙伴们可以增加训练轮数。

c.测试效果

阿柴提供了训练的代码,在test.py中,我们可以运行进行测试。

python test.py

在保存的文件夹中可找到效果图片。