使用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进行数据增强
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进行数据增强与损失函数相关推荐
- 【动手学深度学习PyTorch版】27 数据增强
上一篇请移步[动手学深度学习PyTorch版]23 深度学习硬件CPU 和 GPU_水w的博客-CSDN博客 目录 一.数据增强 1.1 数据增强(主要是关于图像增强) ◼ CES上的真实的故事 ◼ ...
- 【Pytorch学习笔记】数据增强
前言 torchvision 模块包含常用的数据集,模型建构,图像变换算法,分别是torchvision.datasets,torchvision.models,torchvision.transfo ...
- Pytorch 目标检测BoundingBox数据增强 详细记录
目录 1.resize 2 裁剪crop 2.1 中心裁剪center_crop 2.2 随机图像大小裁剪RandomSize_crop 2.3 随机裁剪Random_crop 3.随机翻转rando ...
- 【transformer】【pytorch】DeiT的数据增强
1 main中的相关参数 #函数:def get_args_parser(): parser.add_argument('--input-size', default=224, type=int, h ...
- pytorch图像数据增强N大技巧
数据增强对深度神经网络的训练来说是非常重要的,尤其是在数据量较小的情况下能起到扩充数据的效果. 还记得当时在学习过拟合的解决方法的时候,就有一条就是数据增强,那么我们这次来学习下,在 pytorch ...
- PyTorch 学习笔记(二):PyTorch的数据增强与数据标准化
本文截取自<PyTorch 模型训练实用教程>,获取全文pdf请点击:https://github.com/tensor-yu/PyTorch_Tutorial 文章目录 transfor ...
- 只讲关键点之兼容100+种关键点检测数据增强方法
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨DefTruth 编辑丨极市平台 本文介绍了已有的几种关键点检测数据增强的方法,将其的优缺点进行 ...
- 深度学习之实现图像数据增强
深度学习之实现图像数据增强 前言 数据增强的意思就是让数据量增多.对于深度学习来说,大的数据量可以训练出更好的深度学习模型. 在图像增强方面,我们常用的手段如下: 旋转 翻转 缩放 平移 尺度变换 对 ...
- 最快最好用的数据增强库「albumentations」 一文看懂用法
本文内容如下 1. Albumentations的自我介绍 2.案例欣赏 3.如何安装 4.有哪些数据增强方法 4.1 像素级变换(Pixel-level transforms) 4.2 空间级变换( ...
最新文章
- C++ 笔记(20)— 异常处理(抛出异常、捕获异常)
- gtid mysql failover_Keepalived + MySQLfailover + GTIDs 高可用
- 安装php时,configure: error: xml2-config not found. Please check your libxml2 installation
- cisco vPC技术
- docker $PWD路径_使用docker炼丹
- dedeCMS 会员:个人空间模板style修改
- 千寻和省cors精度对比_测量员新手上路攻略:解析省CORS和千寻CORS账号区别及其如何选择运用...
- winfrom 如何让弹窗不影响主界面_「Win」电脑开机后不给我弹几个广告,我还不太习惯...
- 点击APPicon之后都发生了什么
- 停掉一台服务器,Nginx响应慢(转载)
- Shell编程(CentOS7)
- java实现手机扫描二维码后网站跳转新页面
- 中国智慧能源行业行情监测及未来动向规划预测报告2022-2028年
- 2、python爬虫学习项目之第三方代理IP的使用
- 大话数据结构学习笔记(8)二叉树
- 六十星系之03廉贞天府坐辰戌
- h5跳转页面很慢_【干货】小技巧实现H5跨页帧数跳转
- 02中国华南华东华北华中华西等位置画出来
- 报警后签了和解协议,还能反悔吗
- 【论文精读】2016-CVPR-Learning temporal regularity in video sequences
热门文章
- bzoj4427【Nwerc2015】Cleaning Pipes清理管道
- 紧跟时代步伐,让我们拥抱MVC 3
- 组件设计实战--组件之间的关系 (Event、依赖倒置、Bridge)
- java框内的值怎么同步_java并发编程使用锁进行数据同步操作一
- mysql gone away 测试_python测试开发django-58.MySQL server has gone away错误的解决办法
- java 判断一个数是正整数_【Java】P1075 质因数分解—关于数学方法在解题中的运用—(OJ:洛谷)...
- Map的Value值转换为List集合
- 3 了解MyBatis映射文件
- 服务器新建项目,Perfect(swift) 搭建服务器之新建项目
- ios设置中性黑体_ios 解决自定义字体无法显示问题