使用PyTorch和Albumentations进行数据增强与损失函数
數據擴增
- Part 1 數據讀取與數據擴增
- 圖像讀取
- 數據擴增
- 基于圖像處理的數據擴增
- 幾何變換
- 灰度和彩色空間變換
- 添加噪聲和濾波
- 圖像混合(Mixing images)
- 隨機搽除(Random erasing)
- 基于深度學習的數據擴增
- 使用PyTorch進行數據增強
- 使用Albumentations進行數據增強
- Part 2 評價與損失函數
- IOU
- Dice coefficient
- Dice Loss
- Binary Cross-Entropy
- Balanced Cross-Entropy
- Focal Loss
Part 1 數據讀取與數據擴增
圖像讀取
常用的圖像讀取方法:OpenCV-python、Pillow、matplotlib.image、scipy.misc、skimage
- Pillow只提供最基礎的數字圖像處理,功能有限,但方便輕巧
- Scikit-image是基于scipy的一款圖像處理包,功能強大
- OpenCV是一個非常全面的圖像處理、計算機視覺庫
- Pillow讀入的圖片是img類,其他庫讀進來的圖片都是numpy矩陣
- OpenCV讀入的彩色圖像通道順序是BGR,其他圖像庫讀入的彩色圖像順序都是RGB
數據擴增
數據擴增是一種有效的正則化方法,可以緩解模型過擬合,迫使網絡學習到更魯棒、更多樣的特征,給模型帶來更強的泛化能力。
常用數據擴增技術分類:
推薦論文閱讀:A survey on Image Data Augmentation for Deep Learning-2019
https://link.springer.com/article/10.1186/s40537-019-0197-0#Sec3
基于圖像處理的數據擴增
幾何變換
旋轉、縮放、翻轉、裁剪、平移、仿射變換
作用:幾何變換可以有效的對抗數據中存在的位置偏差、視角偏差、尺寸偏差,而且易于實現
灰度和彩色空間變換
亮度調整,對比度、飽和度調整,顏色空間轉換,色彩調整,gamma變換
作用:對抗數據中存在的光照、色彩、亮度、對比度偏差
添加噪聲和濾波
- 添加高斯噪聲、椒鹽噪聲
- 濾波:模糊、銳化、霧化
作用:應對噪聲干擾、惡劣環境、成像異常等特殊情況,幫助學習更泛化的特征
圖像混合(Mixing images)
隨機搽除(Random erasing)
基于深度學習的數據擴增
- 基于GAN的數據增強(GAN-based Data Augmentation):使用GAN生成模型來生成更多的數據,可用做解決類別不平衡問題的過采樣技術。
- 神經風格轉換(Neural Style Transfer):通過神經網絡風格遷移來生成不同風格的數據,防止模型過擬合
- AutoAugment
使用PyTorch進行數據增強
在PyTorch中,常用的數據增強的函數主要集成在torchvision.transforms
使用PyTorch進行數據增強
使用Albumentations進行數據增強
https://github.com/albumentations-team/albumentations
Part 2 評價與損失函數
IOU
T表示真實前景,P表示預測前景
Dice coefficient
A表示真實前景,B表示預測前景,Dice系數取值范圍為[0,1]
用來度量集合相似度的度量函數,通常用于計算兩個樣本之間的像素之間的相似度。
Dice系數不僅在直觀上體現了target與prediction的相似程度,同時其本質上還隱含了精確率和召回率兩個重要指標。
Dice Loss
通過Dice系數轉變而來,為了能夠實現最小化的損失函數,方便模型訓練,以1-Dice的形式作為損失函數。
在一些場合還可以添加上Laplace smoothing減少過擬合(為了解決零概率問題):
Binary Cross-Entropy
y:真實值,非1即0;
yˉ\bar{y}yˉ?:所屬此類的概率值,為預測值;
交叉熵損失函數可以用在大多數語義分割場景中,BCE損失函數(Binary Cross-Entropy Loss)是交叉損失函數(Cross-Entropy Loss)的一種特例,BCE Loss只能應用在二分類任務中,對于像素級的分類任務時效果不錯。
缺點:當前景像素的數量遠小于背景像素的數量時,可能會使得模型嚴重偏向背景,導致效果不佳。
Balanced Cross-Entropy
y:真實值,非1即0;
yˉ\bar{y}yˉ?:所屬此類的概率值,為預測值;
設置β>1\beta >1β>1,減少假陰性;設置β<1\beta <1β<1,減少假陽性
優點:相比于原始的二元交叉熵Loss,在樣本數量不均衡的情況下,可以獲得更好的效果。
Focal Loss
Focal Loss最初是出現在目標檢測領域,主要是為了解決正負樣本、難易樣本比例失調的問題。
簡而言之,α\alphaα解決正負樣本不平衡問題,γ\gammaγ解決難易樣本不平衡問題。
易分樣本(即置信度高的樣本),對模型的提升效果非常小,模型應該主要關注那些難分的樣本。
總結
以上是生活随笔為你收集整理的使用PyTorch和Albumentations进行数据增强与损失函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux_新建用户
- 下一篇: 关于SI522替代FM17522和MFR