零基础入门CV赛事-Task2 数据读取与数据扩增

12 篇文章 0 订阅
8 篇文章 0 订阅

零基础入门CV赛事-Task2 数据读取与数据扩增

数据读取与数据扩增

学习目标

  • 学习Python和Pytorch中图像读取
  • 学会扩增方法和Pytorch读取赛题数据

图像读取

报错归纳

  1. Pillow

根据baseline给出的步骤,安装pillow,但是报错,查了下是因为pillow在7.0以后的版本对相关组件不支持,但是忘记截图,就找了我在CSDN上看到的帖子,并试着用该方法,结果出现了跟评论区一样的问题。
报错,博主给出的解释是版本过高,其实是不支持
其实问题没解决
报错解释:torchvision在运行时要调用PIL模块,调用PIL模块的PILLOW_VERSION函数。但是PILLOW_VERSION在Pillow 7.0.0之后的版本被移除了,Pillow 7.0.0之后的版本使用__version__函数代替PILLOW_VERSION函数。

打开报错提示中的文件路径C:\Users\Public\Anaconda3\Lib\site-packages\PIL,打开__init__.py文件就可以看到如下解释:
确实是版本问题,但不是重装低版本就能解决的
参考一个博主给出的建议,根据报错的最后一行提示,打开function.py文件

version 替换原来的PILLOW_VERSION,点击保存即可。

  • BrokenPipeError: [Errno 32] Broken pipe
    关于这个报错,该问题的产生是由于windows下多线程的问题,是跟DataLoader有关。官方给出的API如下,
  • num_workers (int, optional) – how many subprocesses to use for data loading. 0
    means that the data will be loaded in the main process. (default: 0)

据此,解决方法为将num_works参数为 **0 **

常用扩增方法

  • **几何变换(Geometric Transformations):**由于训练集与测试集合中可能存在潜在的位置偏差,使得模型在测试集中很难达到训练集中的效果,几何变换可以有效地克服训练数据中存在的位置偏差,而且易于实现,许多图像处理库都包含这个功能。
  • **颜色变换(Color Space):**图片在输入计算机之前,通常会被编码为张量(高度×宽度×颜色通道),所以可以在色彩通道空间进行数据增强,比如将某种颜色通道关闭,或者改变亮度值。
  • **旋转 | 反射变换(Rotation/Reflection):**选择一个角度,左右旋转图像,可以改变图像内容朝向。关于旋转角度需要慎重考虑,角度太大或者太小都不合适,适宜的角度是1度 到 20度。

  • **噪声注入(Noise Injection):**从高斯分布中采样出的随机值矩阵加入到图像的RGB像素中,通过向图像添加噪点可以帮助CNN学习更强大的功能。

  • **内核过滤器(Kernel Filters):**内核滤镜是在图像处理中一种非常流行的技术,比如锐化和模糊。将特定功能的内核滤镜与图像进行卷积操作,就可以得到增强后的数据。直观上,数据增强生成的图像可能会使得模型面对这种类型的图像具有更高的鲁棒性。

  • **混合图像(Mix):**通过平均图像像素值将图像混合在一起是一种非常违反直觉的数据增强方法。对于人来说,混合图像生成的数据似乎没有意义。虽然这种方法缺乏可解释性,但是作为一种简单有效的数据增强算法,有一系列的工作进行相关的研究。Inoue在图像每个像素点混合像素值来混合图像,Summers和Dinneen又尝试以非线性的方法来混合图像,Takahashi和Matsubara通过随机图像裁剪和拼接来混合图像,以及后来的mixup方法均取得了不错的成果。

  • **随机擦除(Random Erasing):**随机擦除是Zhong等人开发的数据增强技术。他们受到Dropout机制的启发,随机选取图片中的一部分,将这部分图片删除,这项技术可以提高模型在图片被部分遮挡的情况下性能,除此之外还可以确保网络关注整个图像,而不只是其中的一部分。

  • **缩放变换(Zoom):**图像按照一定的比例进行放大和缩小并不改变图像中的内容,可以增加模型的泛化性能。

  • **移动(Translation):**向左,向右,向上或向下移动图像可以避免数据中的位置偏差,比如在人脸识别数据集合中,如果所有图像都居中,使用这种数据增强方法可以避免可能出现的位置偏差导致的错误。

  • **翻转变换(Flipping):**通常是关于水平或者竖直的轴进行图像翻转操作,这种扩充是最容易实现的扩充,并且已经证明对ImageNet数据集有效。

  • **裁剪(Cropping):**如果输入数据集合的大小是变化的,裁剪可以作为数据预处理的一个手段,通过裁剪图像的中央色块,可以得到新的数据。在实际使用过程之中,这些数据增强算法不是只使用一种,而是使用一套数据增强策略,在AutoAugment这篇文章中,作者尝试让模型自动选择数据增强策略。

相关paper及概述链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值