1 简介
双阶段目标检测是指将目标检测任务分解为两个阶段进行,第一阶段生成候选框,第二阶段对候选框进行分类和位置回归。具体来说,第一阶段通常使用一种称为“区域提议网络”(Region Proposal Network,简称RPN)的模块生成候选框。RPN使用滑动窗口的方式在图像上移动,对每个位置生成若干个大小和长宽比不同的候选框,然后使用卷积神经网络对每个候选框进行分类和回归。第二阶段则使用一个分类器对每个候选框进行分类,判断其是否包含目标,并使用一个回归器对候选框的位置进行微调,得到更准确的目标框。Faster R-CNN是一种经典的双阶段目标检测算法,是R-CNN、Fast R-CNN的改进版本。它的流程如下:
- 使用一个卷积神经网络对输入图像进行特征提取,得到一张特征图。
- 在特征图上使用RPN生成候选框。
- 对每个候选框使用RoI Pooling将其映射到固定大小的特征图上。
- 使用一个分类器对每个RoI进行分类,判断其是否包含目标,并使用一个回归器对RoI的位置进行微调,得到更准确的目标框。
Faster R-CNN的主要优点是能够在保证检测准确率的情况下提高检测速度。其RPN模块可以共享特征提取网络的计算结果,避免了重复计算,从而减少了计算量。此外,RoI Pooling也可以共享特征提取网络的计算结果,进一步提高了检测速度。如图1所示。
图1 Faster-RCNN结构图
2 实验结果
实验环境:
A4000 16GB
Cuda 11.3
训练的是mobilenet
图2 损失曲线
图3 map曲线
图4 实验结果
图5 检测结果
3 实验分析
3.1 Loss分析
从我们的损失曲线可以看出,我们的模型已经收敛。此次共计跑了100个epoch,即使没有画loss的曲线,从验证的MAP曲线也可以看出我们训练的时候并没有出现过拟合现象,训练较为平稳。由于自己找的图片检测不出,这里选用了数据集中的鱼进行检测,可以看到其置信度还是很高的。但是数据集的图片很糊,分辨率不高。如果要想获得更好的模型,我们可以增大数据集,以及做更多的数据增强。
3.2 Map分析
由图3、图4可以看出,我们验证的MAP曲线挺正常的。由于我们的类别较少,并且用了预训练模型。我们的map阈值在50-95可以达到0.68,其中voc的验证指标到达了0.992。说明其训练效果还是不错的,也验证了faster-rcnn的有效性。值得注意的是,我们这次使用的backbone为mobilenet。对比与resnet50,我总结了mobilenet以下的优点。由于时间限制,并没有跑resnet50+rpn作为对比。
- 轻量级:相对于ResNet等深度网络,MobileNet具有更少的参数和计算量。这使得MobileNet适用于在计算资源有限的设备上进行实时推断,例如移动设备和嵌入式设备等。
- 高效性能:MobileNet采用了深度可分离卷积层,这种层次结构将卷积操作分解为深度卷积和逐点卷积两步,从而大幅度减少了模型的计算量,同时保持了合理的准确率。
- 灵活性:MobileNet可以根据需要进行自由的调整和修改,例如更改深度、宽度和分辨率因素等,以满足不同应用场景的需求。这种灵活性使得MobileNet适用于各种计算资源有限的设备和应用场景。
3.3 检测分析
在训练好模型之后,我们对图片进行了检测。其结果如图5所示,我们可以看到其置信度很高,说明模型具有一定的有效性。后期应该进行更多的检测,来验证模型的泛化性。