bubbliiiing / yolov8-pytorch

这是一个yolov8-pytorch的仓库,可以用于训练自己的数据集。
GNU General Public License v3.0
600 stars 71 forks source link

训练时logs保存的map和运行get_map.py后的结果不一致 #28

Open yutao98 opened 1 year ago

yutao98 commented 1 year ago

训练自己的数据集时logs\loss_2023_08_05_15_17_52\epoch_map.txt保存的内容如下:

0
0.721732469472461
0.9147414741474148
0.905940594059406
0.8957211510624749
0.9050720861559841

将训练得到的权重运行get_map.py后得到的结果却是:

Get map.
100.00% = box AP        ||      score_threhold=0.5 : F1=1.00 ; Recall=100.00% ; Precision=100.00%
100.00% = pcb AP        ||      score_threhold=0.5 : F1=1.00 ; Recall=100.00% ; Precision=100.00%
97.68% = webcam AP      ||      score_threhold=0.5 : F1=0.97 ; Recall=94.74% ; Precision=100.00%
mAP = 99.23%
Get map done.

哪一个才是准确的?

bubbliiiing commented 1 year ago

一个是验证集,一个是测试集

yutao98 commented 1 year ago

我改了get_map.py的数据集路径,两次用的都是验证集, 看了下utils\callbacks.pyyolo.py里的两个get_map_txt函数不一样,utils\callbacks.py里增加了这几行:

        top_100     = np.argsort(top_conf)[::-1][:self.max_boxes]
        top_boxes   = top_boxes[top_100]
        top_conf    = top_conf[top_100]
        top_label   = top_label[top_100]

以及utils\callbacks.py里的confidence=0.05,而get_map.pyconfidence=0.001。 不知道map具体计算方式,可以直接选更好的结果吗?

bubbliiiing commented 1 year ago

额,嗯 get map会更准