前言

      本文主要记录了在使用目标检测算法的过程中遇到的问题以及不同算法的实测结果。
      因为自己的显卡不太行,所以下面没有特别标注的话,都是在MX150入门级显卡上的效果。
      如果在文中发现什么问题的话欢迎指正

faster-rcnn

      首先就是我最开始接触的faster-rcnn目标检测算法,faster-rcnn是一个two-stage的检测算法,也就是把检测问题分成了两个阶段,第一个阶段是生成候选区域,第二个阶段是对候选区域位置进行调整以及分类。这种方法的识别错误率低,但是速度很慢,很难达到我想要的实时检测的效果。
      预测速度差不多稳定在0.7fps。如果将参数调整一下,减少候选框数量,准确率会下降百分之四左右(网上看到的,没有实测),速度可以达到2fps左右。但是这个速度对于实时检测来说还是很慢。

yolov4

      因为faster-rcnn速度达不到想要的效果,所以决定使用one-stage算法。one-stage算法就是跳过第一阶段的生成获选区域,直接产生物体的类别概率和位置坐标值,经过单次检测直接得到最终的检测结果。选来选去找到个效果相对更好的yolov4(没有实测,不一定是最好,只是看了些别人写的那种算法比较的文章)。
      yolov4的话速度相比于faster-rcnn来说就要快很多了,实测效果大概能稳定在2.4fps左右,用个中等显卡差不多能达到20fps。并且因为yolov4的特征提取层采用了特征金字塔+下采样的结构以及训练时采用Mosaic数据增强的方法,所以对于小目标检测也有着不错的效果。

yolov4-tiny

      本来已经差不多确定下使用yolov4了,但是后面想想还是需要做出一个好看的效果。因此我又选择了yolov4-tiny。顾名思义yolov4-tiny就是yolov4的简化版。在特征提取时没有采用Mish激活函数,并且在特征加强层只采用了一个特征金字塔,没有像yolov4那样再进行下采样。
      yolov4的训练参数有64363101个,而yolov4-tiny只有5918006个,比yolov4少了十倍。因此yolov4-tiny加载模型的速度上也是更快的。
      yolov4-tiny实测速度大概在22fps左右,在中等点的显卡上速度差不多能达到几百。我看到个在1080ti上的效果是在300fps+。这速度是非常快的。
      当然更少的参数以及更快的速度都是用准确率换的。因为yolov4-tiny只选择了两层来送入特征金字塔。所以对于小物体检测,以及两个目标在一起(一个目标将另一个目标遮挡了一部分是很难检测到的)如图一。
图一      其它的对于独立的物体检测的效果感觉还是不错的,如图二。
图二

关于算法改进可以参考一下这里

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐