模型訓練時樣本類別不均衡怎么辦?


根據樣本種類分布使用圖像調用頻率不同的方法解決。

1、將樣本中的groundtruth讀出來,存為一個列表;

2、統計訓練樣本列表中不同類別的矩形框個數,然后給每個類別按相應目標框數的倒數賦值,(數目越多的種類權重越小),形成按種類的分布直方圖;

3、對於訓練數據列表,每個epoch訓練按照類別權重篩選出每類的圖像作為訓練數據,如使用random.choice(population, weights=None, *, cum_weights=None, k=1)更改訓練圖像索引,可達到樣本均衡的效果。

 

Yolov5中此段代碼解決了樣本不均衡問題:

model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) * nc  # attach class weights
​
cw = model.class_weights.cpu().numpy() * (1 - maps) ** 2 / nc  # class weights
iw = labels_to_image_weights(dataset.labels, nc=nc, class_weights=cw)  # image weights
dataset.indices = random.choices(range(dataset.n), weights=iw, k=dataset.n)  # rand weighted idx

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM