目标检测之四,使用multinet的KittiBox部分进行车辆检测(demo,train,evalute)
使用KittiBox进行车辆检测,训练环境和配置:Ubuntu16.04,python3.5,TensorFlow1.4,i76700K+双GTX Titan X。由于不能直接用作者的源码直接跑,修改了一点点地方,整个过程挺艰辛的(新手刚上路),希望能给大家一点经验。
最近一直在看目标检测的论文和代码,这是一篇用于自动驾驶的论文,在kitti数据集上检测效果特别好,论文称超过了faster-rcnn,在速度和精度上都超越了。能实时检测。Multinet,顾名思义就是指多个网络,这里是指该网络能同时进行三项任务,分类,检测和语义分割。
网络结构如下:
网络共用一个编码器,三个任务分别使用三个解码器。上图编码器部分使用VGG16为例进行编码部分的特征提取,也可以改为其他的网络结构,比如googlenet,resnet50,resnet101之类的替换。
主要看看检测解码器
检测解码器FastBox, 被设计为基于回归的检测系统。我们选择一种基于候选区域的解码器, 因为它可以进行端对端的训练, 并且可以非常有效地完成训练和推理。方法灵感来自ReInspect[39], Yolo [38]和Overfeat [44]。除了标准回归流程之外, 我们还包含一个ROI池化方法, 它允许网络利用更高分辨率的特征, 类似较慢的Faster-RCNN。
该解码器的第一步是产生bounding box的粗略估计。为了实现这一目标, 首先用500个滤波器的1×1卷积层传递编码的特征, 产生一个39×12×500大小的张量, 我们称之为隐藏层。随后该张量用另一个1×1卷积层处理, 输出6个分辨率为39×12的通道。我们称这个张量为prediction, 张量的值具有语义含义。该张量的前两个通道形成图像的粗分割。这