CV Project

260 阅读3分钟

利用Faster R-CNN模型,训练了一个可以实时探测并分类交通路标的卷积神经网络。经过测试,此模型的mAP达到了79.3。

为什么使用 Faster R-CNN?

1. 这是一个用于物体探测以及分类的集合网络

Faster R-CNN 包含 region proposal network(RPN) 和object detection network,这两个网络共享同一组从图片提取特征的卷积层

2. 延迟低,保证快速推断

使用RPN来代替原来使用分割算法生成候选框的方式,使得获得region proposals的速度要快很多。极大的提升了检测框生成速度。

Dataset

使用LISA traffic signs,从行车记录的视频中截图而来,有马路、山路、隧道多种驾驶环境,还有因为颠簸造成的模糊,更符合真实驾驶环境,因为终极目标是使我们的模型可以用于无人驾驶

数据预处理

  1. 把灰度图片去除,只保留彩色图片,这样每个图片的channels数量就统一了

  2. 把二十余个Annotations信息(包含图片中的路标类名,坐标,方框的宽高)都集合到一起

  3. 把数据按9:1的比例分为Training和Testing 两部分

Training 过程

参数

  • 共有2857张彩色图片和3222个(包含路标类别和其在图片内坐标的)注解,把他们按9:1的比例分给Training和 Testing 两部分。

  • 为了利用GPU的并发性,把batch size 设为8

  • 模型的其他参数参考了过去的训练模型

Loss

训练过程中的输入是一个tensors的列表,输出的是三种loss,classifier loss, object detection loss和 classification loss的dictionary。每个图片的loss是三种loss的平均值之和。

随着Epochs的增加,Train Loss变得越来越小,最终训练了30个Epochs

Inference过程

  1. 输出是包含三个部分 output label, output bounding box, 和confidence score的字典。通过输出,可以评估模型的整体准确率。

  2. 为了解决重叠边框问题, 利用NMS从预测出的一众方框中找到离ground truth box最接近的框:

IoU: intersection over Union 计算两个方框的重合度 

NMS: Non-Maximum Suppression 设定阈值为0.05,保留与ground truth box的IOU超过0.5的box为最终预测结果。因为交通路标之间一般离得很远,重叠的可能性很小,即使阈值只有0.05也足够分清不同的路标。(如果两个路标离得很近,阈值又小,属于另一个路标的边框很可能也被认为是这个路标的了。在这种情况下要增大阈值) 

最终把 552 个 labels before NMS 变成了 332 个 ground truth labels 

另一种NMS&IoU

在目标检测中,分类器会给每个方框计算出一个class score,就是这个方框属于每一类的概率,NMS就是根据这些值来进行的,主要流程: 

  • 对于每一类,首先把所有score<thresh1的方框的score设为0
  • 之后,将所有的方框按照得分排序,选中最高分及其对应的方框
  • 遍历其余的方框,如果和当前最高分方框的重叠面积(IoU)大于一定的阀值,便将该方框删除
  • 从未处理的方框中继续选择一个最高分的方框,重复上述过程(操作另一个物体)
  • 重复上述过程,直到找到全部保留的方框
  • 然后根据所有保留方框的class score和class color画出最后的预测结果

模型评估

评估指标

mAP (mean Average Precision),即所有类别的AP (Average Precision) 平均值

1. 计算每个类别的AP时,需要计算 Precision 和 Recall

Precision = TP / (TP + FP)

Recall = TP / (TP + FN)

TP(True Positive,真正):将正类预测为正类的数量;即与Ground truth区域的IoU>=threshold的预测框

FP(False Positive,假正):将负类预测为正类的数量,误报;即与Ground truth区域IoU < threshold的预测框

FN(False Negative,假负):将正类预测为负类的数量,漏报;遗漏的Ground truth区域
TN(True Negative,真负):将负类预测为负类的数量;没法算,因为没有标框的地方无法界定

2.  AP是Precision-Recall Curve(PRC)曲线所覆盖的面积,用来衡量模型在每个具体类别上的好坏。mAP就是给每一分类分别计算AP,再做mean平均

结果

  • mAP 为 79.3 
  • 出现频次高的路标,比如“停车”,“直行”准确率高,频次的低的准确率相对差一点。 

Tips

我们用已训练好的 Resnet-50-FPN 作为卷积层的主干