Ubuntu16 YoloV3-tiny自训练模型计算mAP实现和调试记录

之前使用自己的数据集训练了YoloV3-tiny模型检测了单个目标(原文link),现在总结一下参考的各个文章的特点,以及实现mAP计算的实现和调试记录。

1. 基于Darknet中的YOLO-v3训练自己的数据

这篇文章详细记录了整个训练、测试、原理等内容,但关于mAP计算的部分我在darknet目录下无法找到对应的文件,但理论知识可以阅读学习。

Ubuntu16 YoloV3-tiny自训练模型计算mAP实现和调试记录_第1张图片
其中“8、YOLO-v3原理简单介绍 ”中详细介绍了yolov3-voc.cfg的参数,十分有用。
Ubuntu16 YoloV3-tiny自训练模型计算mAP实现和调试记录_第2张图片

2. YOLOv3 mAP计算(Python3实现

原博提供的修改voc_eval.py代码可用,解决了Python3下运行数据报错的问题。

3. py-faster-rcnn中的voc_eval.py解读

本篇文章对voc_eval.py进行了详细注释解读,非常适合代码理解和学习。但由于数据读取等相关问题无法在python3下成功运行。

4. YOLOv3 mAP计算教程

实现mAP的计算基本参考了这篇文章,博主写的很详细,除了介绍了单一目标AP的计算以外,还提供了自己编写的统一计算mAP的脚本computer_Single_ALL_mAP.py,直接得到mAP。

5. 读入路径问题解决

因为上述脚本读取test.txt中的数据为仅图片标号,而我在之前训练的过程中生成的test.txt中是直接写入的文件路径,如下:
在这里插入图片描述
此时直接运行compute_mAP.py文件,则会出现路径错误无法读取文件的报错。
基于此我写了一个读取原文件提取文件标号并写入新文件的脚本,如下:

'''
处理txt中存的文件路径,输出txtfile_name_only_num.txt,其中只存数据的编号
'''
txtfile_name = "2007_test"  #处理文件路径
data = []

for line in open(txtfile_name + ".txt", "r"):
    pic_num = line.split("/")[-1]
    num = pic_num.split(".")[0]
    data.append(num)
    # print(data)


with open(txtfile_name + "_only_num" + ".txt", "w") as f:
    for num in data:
        f.writelines(num + "\n")

此时只要将compute_mAP.py中需要的test.txt文件路径换为上面生成的txt文件即可。

mAP的计算结果如下:
Ubuntu16 YoloV3-tiny自训练模型计算mAP实现和调试记录_第3张图片

你可能感兴趣的:(深度学习,python,深度学习,人工智能,神经网络,自动驾驶)