在訓練過程中動態調整數據的尺寸可以增強模型對不同size尺寸物體的適應能力,是提升模型泛化能力的一種手段。如在paddledection套件中,就提供了參數設置多種size組合;此外,博主在拜讀SegFormer模型論文時,作者也提到了使用0.5-2.0的倍率對訓練數據進行縮放(作者操作還包含隨機水平翻轉和隨機裁剪)。為此對該操作進行實現,對於圖像的resize均使用PIL.Image實現與ai框架無任何關聯,paddle、pytorch、tensorflwo都可以使用。對目標檢測暫不支持,如果後續有需要會完善。
在使用中切記,進行random_size時,由於要將圖片轉換為uint8,因此傳入的數據不能進行標准化(減均值除方差),只傳入允許歸一化的數據。否則會導致性能極差,模型無法收斂(標准化的數據存在負數,轉uint8後存在信息丟失)
1.1 resize函數的實現
在進行圖像resize時,需要注意的是label的格式是WH,為二維數據,而image的格式為CWH或WHC為三維數據,此外image還分為單通道和三通道,三通道通常為rgb數據,而單通道通常為灰度圖數據。針對於不同的數據需要選用不同的函數進行resize操作,具體共有以下三個函數。
from PIL import