最近做了个旋转框的任务,leader说要计算mAP和每个类的AP,任务比较急,自己写脚本的话,恐怕一下子搞不定。后面得到遥感界大佬杨学小哥的帮助,找到并运行成功DOTA_devkit这个工具,发现很强大。先贴出github地址: https://github.com/978326187/DOTA_devkit 照例贴出百度网盘地址,你懂的: 链接:https://pan.baidu.com/s/12znldGoHo_h6vEI3XlYYgg 提取码:4kp1
The code is useful for DOTA or ODAI. The code provide the following function
1.Load and image, and show the bounding box on it. 2.Evaluate the result. 3.Split and merge the picture and label.
1.可以在图片上显示包围框 2.评估结果 3.切分图片和标签
1.install swig 首先安装swig sudo apt-get install swig 2.create the c++ extension for python 在DOTA_devkit-master文件夹运行以下命令进行编译: swig -c++ -python polyiou.i python setup.py build_ext --inplace
1.For read and visualize data, you can use DOTA.py 2.For evaluation the result, you can refer to the “dota_evaluation_task1.py” and “dota_evaluation_task2.py” 3.For split the large image, you can refer to the “ImgSplit” 4.For merge the results detected on the patches, you can refer to the ResultMerge.py 其它的不是本文重点,主要是第二条,评估结果。 使用"dota_evaluation_task1.py" 和 “dota_evaluation_task2.py”
下面来重点看一下评估脚本 需要我们修改的就两个部分,如图, 一是三个路径:detpath、annopath、imagesetfile 二是类别名称:classnames 文件夹需要修改的部分要特别注意:我就趟过坑,只要改前面文件夹的部分,后面/{:S}.txt或者/Task1_{:S}.txt不用动。 下面我们一个一个来看,先看第二个文件夹,里面存放的就是DOTA数据集格式的文件,一个图片对应一个txt文件
DOTA数据集的格式: 前面两行不用管 后面的前八个数字为包围框的四点坐标,x0,y0,x1,y1,x2,y2,x3,y3,后面是类别,最后是difficult,不用管。
第一个文件夹,存放的是结果文件,每个类有一个txt文件,每个txt文件里面,一行对应一个目标,第一个参数是图片名称,第二个是置信度,后面八个是四点坐标。注意:所有的置信度都会被列出来,在评估的时候,P-R曲线是置信度由大到小计算的。另外,可以通过ovthresh设置预测框和标签iou的阈值,在上面提到的评估脚本里,很容易找到,这里就不贴图了,这个值越大,说明需要越大的iou才能被列为TP。
第三个文件,是一个txt,列出了所有图片的名称,一行一个,没有后缀。 最后会运行出来类似于下面的结果: map: 0.701 classaps: [75.4753906 53.58937359 36.51126095 93.30143266 92.08902632] classaps对应于前面说的classnames里面的每个类的AP值
至于怎么生成需要的那三个文件夹或文件,那可能就要自己写脚本转换啦,每个人的模型需要的训练文件格式、以及生成的结果不大一样,没有通用性,所以我就不贴出来自己的了,写转换脚本应该是分分钟的事情啦,O(∩_∩)O哈哈~。
写的有点乱,不喜可喷。