天池——街景字符编码识别 2

比赛地址:https://tianchi.aliyun.com/competition/entrance/531795/introduction
学习内容:https://github.com/datawhalechina/team-learning/tree/master/03%20%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89%E5%AE%9E%E8%B7%B5%EF%BC%88%E8%A1%97%E6%99%AF%E5%AD%97%E7%AC%A6%E7%BC%96%E7%A0%81%E8%AF%86%E5%88%AB%EF%BC%89

使用工具:Google Colab
使用语言:Python

数据读取和扩增

  • 图像读取:数据的读取有两个较为常用的库 Pillow 和 OpenCV,这两个库都可以用来读取数据。
  • Pillow库
    • Pillow是Python图像处理函式库(PIL)的一个分支。Pillow提供了常见的图像读取和处理的操作,而且可以与ipython notebook无缝集成,是应用比较广泛的库。
    • from PIL import Image #导入Pillow库
    • Pillow库有图像操作和图像处理的函数,是图像处理的必备库
    • Pillow的官方文档:https://pillow.readthedocs.io/en/stable/
  • OpenCV库

.
.
.

.
.

  • 数据扩增 :可以增加训练集的样本,同时也可以有效缓解模型过拟合的情况,也可以给模型带来的更强的泛化能力。 常用的库有torchvision、imgaug、albumentations
    • torchvision库

      • transforms.CenterCrop ——对图片中心进行裁剪
      • transforms.ColorJitter ——对图像颜色的对比度、饱和度和零度进行变换
      • transforms.FiveCrop ——对图像四个角和中心进行裁剪得到五分图像
      • transforms.Grayscale ——对图像进行灰度变换
      • transforms.Pad ——使用固定值进行像素填充
      • transforms.RandomAffine ——随机仿射变换
      • transforms.RandomCrop ——随机区域裁剪
      • transforms.RandomHorizontalFlip ——随机水平翻转
      • transforms.RandomRotation ——随机旋转
      • transforms.RandomVerticalFlip ——随机垂直翻转
      • https://github.com/pytorch/vision
        pytorch官方提供的数据扩增库,提供了基本的数据数据扩增方法,可以无缝与torch进行集成;但数据扩增方法种类较少,且速度中等;
    • imgaug库

      • from imgaug import augmenters as iaa #augmenters是常用的类
      • iaa.Sequential() # 产生一个处理图片的Sequential
      • iaa.someOf() #将Augmenter中的部分变换应用在图片处理上,而不是应用所有的Augmenter。
      • iaa.WithColorspace() #在某个特定的颜色空间对图像进行变换。
      • iaa.WithChannels() #从图片中挑选出一个Channel来进行变换,变换完了之后再将该channel merge回去。
      • iaa.Scale() #将图像缩放到固定大小。
      • iaa.CropAndPad() #截取(crop)或者填充(pad),填充时,被填充区域为黑色。
      • iaa.Sequential([
        iaa.Crop(px=(0, 16)), # 在距离边框0~16个像素中随机裁剪
        iaa.Fliplr(0.5), # 50%的可能性使图片水平镜面翻转。
        iaa.GaussianBlur(sigma=(0, 3.0)) # blur images with a sigma of 0 to 3.0
        ])
      • https://github.com/aleju/imgaug
        imgaug是常用的第三方数据扩增库,提供了多样的数据扩增方法,且组合起来非常方便,速度较快;
    • albumentations库

      • 具体函数可以去百度搜索一下
      • https://albumentations.readthedocs.io
        是常用的第三方数据扩增库,提供了多样的数据扩增方法,对图像分类、语义分割、物体检测和关键点检测都支持,速度较快。

对labels的同步扩增

  • 对xml文件操作,可使用 ElementTree库进行操作。
  • 在Python标准库中,ElementTree有两种实现方式:一种是纯Python的实现xml.etree.ElementTree,另一种是速度更快一点的xml.etree.cElementTree。
  • 步骤:
    1. 读取原影像bounding boxes坐标(读取xml文件并使用ElementTree对xml文件进行解析,找到每个object的坐标值。)
    2. 生成变换序列(用imgaug库的函数,产生一个处理图片的Sequential。)
    3. bounding box 变化后坐标计算(先读取该影像对应xml文件,获取所有目标的bounding boxes,然后依次计算每个box变化后的坐标。)
    4. 将bbox坐标计算出来后,输出xml文件
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读