1. 程式人生 > 實用技巧 >使用DOTA_devkit進行旋轉框mAP計算

使用DOTA_devkit進行旋轉框mAP計算

最近做了個旋轉框的任務,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資料集的格式:
DOTA資料集的格式
前面兩行不用管
後面的前八個數字為包圍框的四點座標,x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,後面是類別,最後是difficult,不用管。

第一個資料夾,存放的是結果檔案,每個類有一個txt檔案,每個txt檔案裡面,一行對應一個目標,第一個引數是圖片名稱,第二個是置信度,後面八個是四點座標。注意:所有的置信度都會被列出來,在評估的時候,可以通過ovthresh設定閾值的,在上面提到的評估腳本里,很容易找到,這裡就不貼圖了。

結果檔案

第三個檔案,是一個txt,列出了所有圖片的名稱,一行一個,沒有後綴。
圖片名稱列表
最後會執行出來類似於下面的結果:
map: 0.701
classaps: [75.4753906 53.58937359 36.51126095 93.30143266 92.08902632]
classaps對應於前面說的classnames裡面的每個類的AP值

至於怎麼生成需要的那三個資料夾或檔案,那可能就要自己寫指令碼轉換啦,每個人的模型需要的訓練檔案格式、以及生成的結果不大一樣,沒有通用性,所以我就不貼出來自己的了,寫轉換指令碼應該是分分鐘的事情啦,O(∩_∩)O哈哈~。

寫的有點亂,不喜可噴。