2021/5/24 voc-test数据集 yolov4 1得到真实值 2 得到 mAP,P-R曲线
(VOC dataset):
1 python get_gt_txt.py #得到ground truth
2 python get_map.py #得到mAP,P-R曲线图
1 python get_gt_txt.py #得到ground truth
替换为绝对路径 (俩处)
image_ids = ( open("C:/GitHub/test1/data/VOCdevkit/VOC2007/ImageSets/Main/test.txt").read().strip().split() ) # 替换为绝对路径 原来为 VOCdevkit/VOC2007/ImageSets/Main/test.txt
root = ET.parse( "C:/GitHub/test1/data/VOCdevkit/VOC2007/Annotations/" + image_id + ".xml" ).getroot() # 替换为绝对路径 原来为 VOCdevkit/VOC2007/Annotations/
运行结果:
C:\Software\Anaconda3\envs\YOLOv4-pytorch\python.exe C:/GitHub/test1/utils/get_gt_txt.py
Conversion completed!
Process finished with exit code 0
在 C:\GitHub\test1\utils\input\ground-truth 生成 ground-truth文件 ,得到 目标的 ground-truth
2 python get_map.py #得到mAP,P-R曲线图
无改动 运行程序
C:\Software\Anaconda3\envs\YOLOv4-pytorch\python.exe C:/GitHub/test1/utils/get_map.py Error. File not found: C:\GitHub\test1\utils\input\detection-results\0003.txt (You can avoid this error message by running extra/intersect-gt-and-dr.py) Process finished with exit code 0
再议。
5/25
input文件夹下没有detection-results文件,故找不到 。
有人写 生成的detection-results文件也会有这样的结果,原因是 该文件下的 txt文件 内容格式会出错。故需要转化成 要求的格式后放进 detection-results文件。
get_map.py 源自于 https://github.com/Cartucho/mAP
需要在input文件下 建立三个文件 ground-truth files(原始标注), detection-results files(检测结果) 和images-optional(检测图片)在同一文件下 运行程序
源自 https://blog.csdn.net/qq_35699505/article/details/89450321
由于没有detection-results文件 检查eval_voc.py,只有评估结果 没有检测结果 ,还在排查。
5/26
pred_result 与 detection results 感觉是一个东西,大佬写的转换代码(https://github.com/argusswift/YOLOv4-pytorch/issues/142),
pred_result 里内容格式转换成 合适格式的 detection results
生成detection results文件,读取pred_result文件内容,挨个改写到detection results文件,此时生成的detection results文件就是要求的格式,再复制到 input/detection results 里,运行get map.py即可。
还有一个问题 就是数据集分成 训练集 ,验证集,测试集 ,这里仅仅是 将图片的标注格式分为三个部分,如何将图片根据txt标注也随之分割成三个部分。。。。
大佬转换代码出现error,不知解决。
(pred_result 与 detection results 还有一种猜想就是 后者指测试集 前者为评估结果,可能有的会分为俩个部分 有的会分为三个部分,俩个时一样。)
经过查验,pred_result 文件内容确实是 测试集结果,so pred_result就是detection results,只有一种,需要将转换代码。
5/30
pred_result 文件内容确实是 测试集结果,so pred_result就是detection results,需要将转换代码。
大佬转换代码出现error,找不到pred_result对应的txt文档,自行创建detection results文件夹也不行。于是,将结果输出到detection results文件夹改到pred_result文件夹内,自己会拥有自己的格式文件和相对应的txt文档。运行成功,在pred_result文件夹内除原有的txt文档,生成对应序列图片的预测结果的置信度和注释。
但是 每张图片对应多个结果,第一个结果是最好的。(nms未起到作用?)此外 output文件夹内为空(?).
将得到的txt文档复制到 utils/input/detection-results 文件夹内,运行 get_map.py,可以运行 成功但mAP为0,且图中无曲线。
(如何保存原图?)
结果如下,