機器學習備註:Yolo訓練時輸出引數的解釋
舉例
比如某一次的輸出結果如下
訓練log中各引數的意義 5: 10.222071, 10.294983 avg loss, 0.000000 rate, 395.829699 seconds, 320 images Loaded: 0.000000 seconds Region Avg IOU: 0.227881, Class: 1.000000, Obj: 0.381839, No Obj: 0.465026, Avg Recall: 0.000000, count: 16 Region Avg IOU: 0.203516, Class: 1.000000, Obj: 0.494320, No Obj: 0.466775, Avg Recall: 0.000000, count: 8 Region Avg IOU: 0.313356, Class: 1.000000, Obj: 0.474162, No Obj: 0.466196, Avg Recall: 0.307692, count: 13 Region Avg IOU: 0.267079, Class: 1.000000, Obj: 0.500940, No Obj: 0.466384, Avg Recall: 0.250000, count: 8 Region Avg IOU: 0.419788, Class: 1.000000, Obj: 0.423686, No Obj: 0.466252, Avg Recall: 0.428571, count: 7 Region Avg IOU: 0.361871, Class: 1.000000, Obj: 0.427209, No Obj: 0.466280, Avg Recall: 0.200000, count: 10 Region Avg IOU: 0.365572, Class: 1.000000, Obj: 0.430385, No Obj: 0.466651, Avg Recall: 0.125000, count: 8 Region Avg IOU: 0.342102, Class: 1.000000, Obj: 0.417325, No Obj: 0.466240, Avg Recall: 0.222222, count: 9
參考原始碼
region_layer.c ==> forward_region_layer()函式最後一行: printf("Region Avg IOU: %f, Class: %f, Obj: %f, No Obj: %f, Avg Recall: %f, count: %d\n", avg_iou/count, avg_cat/class_count, avg_obj/count, avg_anyobj/(l.w*l.h*l.n*l.batch), recall/count, count);
解釋
5 -- batch iteration, 表次訓練了多少個batch次,或者說batch -> batch -> batch ....這樣共訓練了多少個輪迴 10.222071 -total loss 10.294983 - average loss, 平均損失率,最終結構的評估引數,越小越好,官網給出例子是
- 9002 - iteration number (number of batch)
- 0.060730 avg - average loss (error) - the lower, the better(差不達到這個點,或不再下降,就可以停下來了)
Region Avg IOU - 平均的IOU,是預測的bounding box和ground truth的交集與並集之比,期望該值趨近於1。
Class: 標註物體的概率(找到了多少個類/共有多少個類),期望該值趨近於1(俺這隻有一個類,是1) Obj -- 表示把正本判斷為正本得到的平均confidence,該期望該值趨近於1. No Obj -- 表示總confidence/總box數,期望該值越來越小但不為零. Avg Recall:找出來的正本數 與 總的正本數之比值,期望該值趨近於1 count: 總共找到的正本數