在KITTI数据集中使用YOLO和Faster R-CNN进行目标检测

22 篇文章 16 订阅
6 篇文章 0 订阅

在检测 KITTI数据集 时采用三种 常见的探测器模型: YOLOv2 , YOLOv3 , Faster R-CNN 和比较他们的表现进行评估通过上传的结果KITTI评估服务器。

注意,有一个以前的YOLOv2 ( click here )模型与YOLOv3执行情况几乎相同,所以,本文会跳过与之相关的一些步骤。 

准备KITTI数据集

KITTI目2D 训练YOLO和使用 KITTI原始数据 用于测试。

下载数据和标签

下载 KITTI目2D左彩色图片的对象数据集(12GB) 和一些测试结果记录的演示视频上面提交您的电子邮件地址来获得下载的链接。 下载 的培训标的对象数据集(5MB) .

转换KITTI标签

为了简化的标签,我们结合的原9KITTI标为6类:

Car
Van
Truck
Tram
Pedestrian
Cyclist

小心,YOLO需要的边界框格式 (center_x, center_y, width, height), 而不是使用典型的格式KITTI.

YOLO配置

YOLO源代码是可以 在这里 . 培训YOLO,旁边培训的数据和标,我们需要以下文件: kitti.data, kitti.nameskitti-yolovX.cfg. 数据和名称的文件,用于喂养的目录和变量YOLO. 配置文件 kittiX-yolovX.cfg 培训KITTI位于

详细的配置

开放的配置文件 yolovX-voc.cfg 和改变以下参数:

[net]
# Training
batch=64
subdivisions=8
height=370
width=1224

[region]
classes=6

random=0  # remove resizing step

注意,这里删除调整大小的步骤在YOLO和比较的结果。 为此原因是描述 以前的帖子 .

Also, remember to change the filters in YOLOv2’s last convolutional layer to be filters=((classes+5)×num)

, so that

# last convolutional layer
[convolutional]
filters=55

For YOLOv3, change the filters in three yolo layers as filters=((classes+5)×3)

, so that

# do the same thing for the 3 yolo layers
[convolutional]
filters=33

You can also refine some other parameters like learning_rate, object_scale, thresh, etc. to obtain even better results.

快R-CNN配置

火车快R-CNN,这里需要传送图像的培训和标签作为输入格式TensorFlow 叫 tfrecord (使用TensorFlow提供的脚本)。 通常,更快的R-CNN是训练有素的如果损失降到低于0.1. 之后该模型的培训,我们需要传输的模式到一个 frozen graph 定义在TensorFlow 做检测推理。 用于测试,这里还编写脚本来节省的检测结果,包括定量和结果 图像与检测的边界的箱子。

对于这部分,需要安装 TensorFlow物检测API 这里写了一些教程来帮助安装和训练。

首先,我们需要克隆 tensorflow/models 从审查,并安装了这个包的根据的 官方教程中安装 .

之后安装软件包,我们需要准备的训练数据集,即, 转换数据集 tfrecord 文件:

python object_detection/dataset_tools/create_kitti_tf_record.py \
    --data_dir=<dataset-root>/object_2d \
    --output_path=/mnt/disk1/kitti-dataset/object_2d/faster-rcnn/kitti \
    --classes_to_use=car ,van ,truck ,pedestrian ,cyclist ,tram ,dontcare \
    --label_map_path=/mnt/disk1/kitti-dataset/object_2d/faster-rcnn/kitti_label_map.pbtxt

然后,开始以培训更快的R-CNN:

python object_detection/legacy/train.py \
    --train_dir=<tensorflow-dir>/models/ \
    --pipeline_config_path=<object-detection-api-dir>/samples/configs/faster_rcnn_resnet101_kitti.config \

当训练完成后,我们需要权重来进行 frozengraph:

python object_detection/export_inference_graph.py \
    --input_type=image_tensor \ 
    --pipeline_config_path=<object-detection-api-dir>/samples/configs/faster_rcnn_resnet101_kitti.config \
    --trained_checkpoint_prefix=<checkpoint-dir>/model.ckpt-58093 \
    --output_directory=<graph-dir>/graph

最后,我们可以试验和保存检测结果KITTI测试数据集使用演示 写在Jupyter笔记本: fasterrcnn/objectdetection/objectdetectiontutorial.ipynb.

评价结果

为对象的检测,人们往往使用指标被称为 平均精度(mAP) 评估业绩的一个探测的算法。 地图是定义为平均的最高精度在不同的回忆值。 我用的是原始KITTI评估工具,这种想库[1]计算出地图 和评估业绩的目标检测模型。
此外,我还计数的时间消耗为每个探测的算法。 注意KITTI评估工具只关心对象的探测器的类 Car, PedestrianCyclist 但不计 Van 等等。 为误报的汽车。

定量的结果为YOLOv2

结果的地图KITTI使用原始YOLOv2 与输入调整 .

BenchmarkEasyModerateHard
45.32%28.42%12.97%
步行18.34%13.90%9.81%
骑自行车8.71%5.40%3.02%

结果的地图KITTI使用修改YOLOv2 没有输入调整 .

BenchmarkEasyModerateHard
88.17%78.70%69.45%
步行60.44%43.69%43.06%
骑自行车55.00%39.29%32.58%

定量的结果为YOLOv3

结果的地图KITTI使用修改YOLOv3 没有输入调整 .

BenchmarkEasyModerateHard
56.00%36.23%29.55%
Pedestrian29.98%22.84%22.21%
自行车9.09%9.09%9.09%

定量的结果更快的R-CNN

结果的地图KITTI使用 再培训 更快的R-CNN。

BenchmarkEasyModerateHard
84.81%86.18%78.03%
Pedestrian76.52%59.98%以51.84%
自行车74.72%56.83%49.60%

定性结果

下图显示了一些例子测试的结果,使用这三种模式。 这里选择的三个典型的道路的场景在KITTI其中包含许多车辆,pedestrains和多类对象。

下图显示一个结果是,更快的R-CNN执行更多的两个YOLO模型。 在这个例子中,YOLO无法检测的人在左手边的,只能检测一个人行在右侧,同时更快的R-CNN可以检测到多个行人的右手边。

执行时间分析

这里还要分析的执行时间为三种模式。 YOLOv2和YOLOv3被称作实时检测模型,以便为KITTI,他们可以完成对象,检测小于40毫每图像。 同时YOLOv3是一点点慢,比YOLOv2. 但是,更快的R-CNN慢得多于YOLO(尽管它叫"快"). 因此,更快的R-美国有线电视新闻网不被用于实时的任务,如自动驾驶,尽管其表现要好得多。

模型推理时间(每帧)
YOLOv215ms
YOLOv335ms
快R-CNN2763ms

顺便说一句,我使用更Quadro GV100为培训和测试。

结论

实现了三种类型的目标检测模型,即YOLOv2,YOLOv3和更快的R-CNN,在KITTI2D物检测数据集。 在实施过程中,能做到的如下:

  1. 预处理的数据和标签
  2. 再培训和修改后的模型
  3. 推断测试结果的使用培训模型
  4. 评估的性能检测

在结束发言时,更快的R-CNN执行最好的对KITTI数据集。 然而,由于执行速度缓慢,不能使用实时自动驾驶的情况。

参考文献/原文:http://yizhouwang.net/blog/2018/12/20/object-detection-kitti/

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源代码杀手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值