数据扩增

  • 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进行数据增强

from PIL import Image
from torchvision import transforms as tfs
import matplotlib.pyplot as pltim=Image.open('dog.jpg')
im_aug=tfs.Compose([tfs.Resize([200,200]),tfs.RandomVerticalFlip(),tfs.RandomCrop(110),tfs.ColorJitter(brightness=0.5,contrast=0.5,hue=0.5),
])nrows=4
ncols=4
figsize=(8,8)
_,figs=plt.subplots(nrows,ncols,figsize=figsize)
for i in range(nrows):for j in range(ncols):figs[i][j].imshow(im_aug(im))figs[i][j].axes.get_xaxis().set_visible(False)figs[i][j].axes.get_yaxis().set_visible(False)
plt.show()


使用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进行数据增强与损失函数相关推荐

  1. 【动手学深度学习PyTorch版】27 数据增强

    上一篇请移步[动手学深度学习PyTorch版]23 深度学习硬件CPU 和 GPU_水w的博客-CSDN博客 目录 一.数据增强 1.1 数据增强(主要是关于图像增强) ◼ CES上的真实的故事 ◼ ...

  2. 【Pytorch学习笔记】数据增强

    前言 torchvision 模块包含常用的数据集,模型建构,图像变换算法,分别是torchvision.datasets,torchvision.models,torchvision.transfo ...

  3. Pytorch 目标检测BoundingBox数据增强 详细记录

    目录 1.resize 2 裁剪crop 2.1 中心裁剪center_crop 2.2 随机图像大小裁剪RandomSize_crop 2.3 随机裁剪Random_crop 3.随机翻转rando ...

  4. 【transformer】【pytorch】DeiT的数据增强

    1 main中的相关参数 #函数:def get_args_parser(): parser.add_argument('--input-size', default=224, type=int, h ...

  5. pytorch图像数据增强N大技巧

    数据增强对深度神经网络的训练来说是非常重要的,尤其是在数据量较小的情况下能起到扩充数据的效果. 还记得当时在学习过拟合的解决方法的时候,就有一条就是数据增强,那么我们这次来学习下,在 pytorch ...

  6. PyTorch 学习笔记(二):PyTorch的数据增强与数据标准化

    本文截取自<PyTorch 模型训练实用教程>,获取全文pdf请点击:https://github.com/tensor-yu/PyTorch_Tutorial 文章目录 transfor ...

  7. 只讲关键点之兼容100+种关键点检测数据增强方法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨DefTruth 编辑丨极市平台 本文介绍了已有的几种关键点检测数据增强的方法,将其的优缺点进行 ...

  8. 深度学习之实现图像数据增强

    深度学习之实现图像数据增强 前言 数据增强的意思就是让数据量增多.对于深度学习来说,大的数据量可以训练出更好的深度学习模型. 在图像增强方面,我们常用的手段如下: 旋转 翻转 缩放 平移 尺度变换 对 ...

  9. 最快最好用的数据增强库「albumentations」 一文看懂用法

    本文内容如下 1. Albumentations的自我介绍 2.案例欣赏 3.如何安装 4.有哪些数据增强方法 4.1 像素级变换(Pixel-level transforms) 4.2 空间级变换( ...

最新文章

  1. C++ 笔记(20)— 异常处理(抛出异常、捕获异常)
  2. gtid mysql failover_Keepalived + MySQLfailover + GTIDs 高可用
  3. 安装php时,configure: error: xml2-config not found. Please check your libxml2 installation
  4. cisco vPC技术
  5. docker $PWD路径_使用docker炼丹
  6. dedeCMS 会员:个人空间模板style修改
  7. 千寻和省cors精度对比_测量员新手上路攻略:解析省CORS和千寻CORS账号区别及其如何选择运用...
  8. winfrom 如何让弹窗不影响主界面_「Win」电脑开机后不给我弹几个广告,我还不太习惯...
  9. 点击APPicon之后都发生了什么
  10. 停掉一台服务器,Nginx响应慢(转载)
  11. Shell编程(CentOS7)
  12. java实现手机扫描二维码后网站跳转新页面
  13. 中国智慧能源行业行情监测及未来动向规划预测报告2022-2028年
  14. 2、python爬虫学习项目之第三方代理IP的使用
  15. 大话数据结构学习笔记(8)二叉树
  16. 六十星系之03廉贞天府坐辰戌
  17. h5跳转页面很慢_【干货】小技巧实现H5跨页帧数跳转
  18. 02中国华南华东华北华中华西等位置画出来
  19. 报警后签了和解协议,还能反悔吗
  20. 【论文精读】2016-CVPR-Learning temporal regularity in video sequences

热门文章

  1. bzoj4427【Nwerc2015】Cleaning Pipes清理管道
  2. 紧跟时代步伐,让我们拥抱MVC 3
  3. 组件设计实战--组件之间的关系 (Event、依赖倒置、Bridge)
  4. java框内的值怎么同步_java并发编程使用锁进行数据同步操作一
  5. mysql gone away 测试_python测试开发django-58.MySQL server has gone away错误的解决办法
  6. java 判断一个数是正整数_【Java】P1075 质因数分解—关于数学方法在解题中的运用—(OJ:洛谷)...
  7. Map的Value值转换为List集合
  8. 3 了解MyBatis映射文件
  9. 服务器新建项目,Perfect(swift) 搭建服务器之新建项目
  10. ios设置中性黑体_ios 解决自定义字体无法显示问题