先给出task1的链接:task1-赛题理解

这一节进行数据扩增的试验

读取图片:

train_mask = pd.read_csv('./data/train_mask.csv', sep='\t', names=['name', 'mask'])
train_mask['name'] = train_mask['name'].apply(lambda x: './data/train/' + x)
img = cv2.imread(train_mask['name'].iloc[0])
mask = rle_decode(train_mask['mask'].iloc[0])

opencv数据扩增

垂直翻转

# 垂直翻转plt.figure(figsize=(16, 8))
plt.subplot(1, 2, 1)
plt.imshow(img)plt.subplot(1, 2, 2)
plt.imshow(cv2.flip(img, 0))

水平翻转

plt.figure(figsize=(16, 8))
plt.subplot(1, 2, 1)
plt.imshow(img)plt.subplot(1, 2, 2)
plt.imshow(cv2.flip(img, 1))

随机裁剪

# 随机裁剪,裁剪的效果就是图片变小了。
#图片大小是512x, y = np.random.randint(0, 256), np.random.randint(0, 256)##随机生成一个元素,值>=low ;<hign
#x和y的数据类型是class 'int'
plt.figure(figsize=(16, 8))plt.subplot(1, 2, 1)
plt.imshow(img[x:x+256, y:y+256])plt.subplot(1, 2, 2)
plt.imshow(mask[x:x+256, y:y+256])

噪声

# 噪声
def noise(pic):for i in range(1500):pic[random.randint(0, pic.shape[0] - 1)][random.randint(0, pic.shape[1] - 1)][:] = 255return pic# random.randint(a, b)# 用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b
img_copy = img.copy()
img_aug = noise(img_copy)plt.figure(figsize=(16, 8))
plt.subplot(1, 2, 1)
plt.imshow(img)plt.subplot(1, 2, 2)
plt.imshow(img_aug)

仿射

# 仿射
def fangshe(pic):rows, cols = pic.shape[:2]point1 = np.float32([[50, 50], [300, 50], [50, 200]])point2 = np.float32([[10, 100], [300, 50], [100, 250]])M = cv2.getAffineTransform(point1, point2)dst = cv2.warpAffine(pic, M, (cols, rows), borderValue=(255, 255, 255))# 对图像进行变换(三点得到一个变换矩阵)# 我们知道三点确定一个平面,我们也可以通过确定三个点的关系来得到转换矩阵# 然后再通过warpAffine来进行变换return dstimg_copy = img.copy()
img_aug = fangshe(img_copy)plt.figure(figsize=(16, 8))
plt.subplot(1, 2, 1)
plt.imshow(img)plt.subplot(1, 2, 2)
plt.imshow(img_aug)

albumentations 数据扩增

HorizontalFlip 水平翻转

# HorizontalFlip 水平翻转#p=1表示水平翻转,p=0表示垂直翻转
augments = A.HorizontalFlip(p=1)(image=img, mask=mask)
#augments的数据类型是class 'dict'
#augments['image']的数据类型是numpy.ndarray
img_aug, mask_aug = augments['image'], augments['mask']plt.figure(figsize=(16, 8))
plt.subplot(1, 2, 1)
plt.imshow(img)plt.subplot(1, 2, 2)
plt.imshow(img_aug)

VerticalFlip 垂直翻转

# VerticalFlip 垂直翻转#p=1表示水平翻转,p=0表示垂直翻转
augments = A.VerticalFlip(p=1)(image=img, mask=mask)
#augments的数据类型是class 'dict'
#augments['image']的数据类型是numpy.ndarray
img_aug, mask_aug = augments['image'], augments['mask']plt.figure(figsize=(16, 8))
plt.subplot(1, 2, 1)
plt.imshow(img)plt.subplot(1, 2, 2)
plt.imshow(img_aug)

RandomCrop 随机裁剪

# RandomCrop 随机裁剪augments = A.RandomCrop(p=1, height=256, width=256)(image=img, mask=mask)
#RandomCrop(height, width, always_apply=False, p=1.0)
img_aug, mask_aug = augments['image'], augments['mask']
#img_aug.shape == (256, 256, 3)
#mask_aug.shape == (256, 256)print(mask_aug.shape)plt.figure(figsize=(16, 8))
plt.subplot(1, 2, 1)
plt.imshow(img)plt.subplot(1, 2, 2)
plt.imshow(img_aug)

图略

ShiftScaleRotate 旋转

# 旋转,旋转没有改变图片的维度
#ShiftScaleRotate 旋转augments = A.ShiftScaleRotate(p=1)(image=img, mask=mask)

Blur 模糊

augments = A.Blur(blur_limit=7,always_apply=False, p=0.5)(image=img, mask=mask)

Flip 翻转

#Flip 翻转augments = A.Flip(always_apply = False, p = 0.5)(image=img, mask=mask)

Transpose 转置

#Transpose 转置  将图像行和列互换augments = A.Transpose(always_apply=False,p=0.5)(image=img, mask=mask)

RandomGamma 随机Gamma变换

#RandomGamma随机Gamma变换augments = A.RandomGamma(gamma_limit=(80, 120), eps=1e-07, always_apply=False, p=0.5)(image=img, mask=mask)

RandomRotate90 随机旋转0个或多个90度

#RandomRotate90 随机旋转0个或多个90度。augments = A.RandomRotate90(always_apply=False, p=0.5)(image=img, mask=mask)

Rotate 随机旋转图片

#Rotate
#随机旋转图片(默认使用reflect方法扩充图片,可以改为参数等其他方法填充)。augments = A.Rotate(limit=90,interpolation=1,border_mode=4,value=None,mask_value=None,always_apply=False,p=0.5)(image=img, mask=mask)

CenterCrop 随机中心裁剪图片

#随机中心裁剪图片(参数为高宽,一定会进行裁剪,注意其输入为整数)。augments = A.CenterCrop(256,256,always_apply=False,p=1.0)(image=img, mask=mask)

OpticalDistortion 对图像进行光学畸变

#对图像进行光学畸变。
#OpticalDistortion(distort_limit=0.05,shift_limit=0.05,interpolation=1,border_mode=4,value=None,mask_value=None,always_apply=False,p=0.5)augments = A.OpticalDistortion(distort_limit=0.05,shift_limit=0.05,interpolation=1,border_mode=4,value=None,mask_value=None,always_apply=False,p=0.5)(image=img, mask=mask)

GridDistortion 对图像进行网格失真

#对图像进行网格失真。
#GridDistortion(num_steps=5, distort_limit=0.3, interpolation=1, border_mode=4, value=None, mask_value=None, always_apply=False, p=0.5)augments = A.GridDistortion(num_steps=5, distort_limit=0.3, interpolation=1, border_mode=4, value=None, mask_value=None, always_apply=False, p=0.5)(image=img, mask=mask)

ElasticTransform 随机对图像进行弹性变换

#随机对图像进行弹性变换。
#ElasticTransform(alpha = 1,sigma = 50,alpha_affine = 50,interpolation = 1,border_mode = 4,value = None,mask_value = None,always_apply = False,approximate = False,p = 0.5 )augments = A.ElasticTransform(alpha = 1,sigma = 50,alpha_affine = 50,interpolation = 1,border_mode = 4,value = None,mask_value = None,always_apply = False,approximate = False,p = 0.5 )(image=img, mask=mask)

RandomGridShuffle 随机网格洗牌

#RandomGridShuffle(grid=(3,3),always_apply=False,p=1.0)
#随机网格洗牌 参数:将图像以网格方式生成几块,并随机打乱。augments = A.RandomGridShuffle(grid=(3,3),always_apply=False,p=1.0)(image=img, mask=mask)

HueSaturationValue 色调饱和度值

#HueSaturationValue(hue_shift_limit=20,sat_shift_limit=30,val_shift_limit=20,always_apply=False,p=0.5)
#色调饱和度值 参数:随机色调、饱和度、值变化。augments = A.HueSaturationValue(hue_shift_limit=20,sat_shift_limit=30,val_shift_limit=20,always_apply=False,p=0.5)(image=img, mask=mask)

PadIfNeeded 填充

#PadIfNeeded 填充
augments = A.PadIfNeeded(min_height=1024,min_width=1024,border_mode=4,value=None,mask_value=None,always_apply=False,p=1.0)(image=img, mask=mask)

MotionBlur 运动模糊

#给图像加上运动模糊。运动模糊是景物图象中的移动效果。它比较明显地出现在长时间暴光或场景内的物体快速移动的情形里。augments = A.MotionBlur(blur_limit=7,always_apply=False,p=0.5)(image=img, mask=mask)

数据的读取:

在 Pytorch 中数据是通过 Dataset 进行封装,并通过 DataLoder 进行并行读取。所 以我们只需要重载一下数据读取的逻辑就可以完成数据的读取。
Dataset :数据集,对数据进行读取并进行数据扩增;
DataLoder :数据读取器,对 Dataset 进行封装并进行批量读取;

第一步:定义Dataset的类

第二步:实例化Dataset

实例化后的对象可以进行索引数据的操作,同时还可以打印出数据集的长度。

第三步:实例化 DataLoder,批大小为 10

欢迎关注公众号:

零基础入门语义分割-地表建筑物识别 Task2 数据扩增 -学习笔记相关推荐

  1. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task2:数据扩增方法

    [天池赛事]零基础入门语义分割-地表建筑物识别 Task1:赛题理解与 baseline(3 天) – 学习主题:理解赛题内容解题流程 – 学习内容:赛题理解.数据读取.比赛 baseline 构建 ...

  2. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task6:分割模型模型集成

    [天池赛事]零基础入门语义分割-地表建筑物识别 Task1:赛题理解与 baseline(3 天) – 学习主题:理解赛题内容解题流程 – 学习内容:赛题理解.数据读取.比赛 baseline 构建 ...

  3. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task5:模型训练与验证

    [天池赛事]零基础入门语义分割-地表建筑物识别 Task1:赛题理解与 baseline(3 天) – 学习主题:理解赛题内容解题流程 – 学习内容:赛题理解.数据读取.比赛 baseline 构建 ...

  4. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task4:评价函数与损失函数

    [天池赛事]零基础入门语义分割-地表建筑物识别 Task1:赛题理解与 baseline(3 天) – 学习主题:理解赛题内容解题流程 – 学习内容:赛题理解.数据读取.比赛 baseline 构建 ...

  5. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task3:网络模型结构发展

    [天池赛事]零基础入门语义分割-地表建筑物识别 Task1:赛题理解与 baseline(3 天) – 学习主题:理解赛题内容解题流程 – 学习内容:赛题理解.数据读取.比赛 baseline 构建 ...

  6. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task1:赛题理解与 baseline

    [天池赛事]零基础入门语义分割-地表建筑物识别 Task1:赛题理解与 baseline(3 天) – 学习主题:理解赛题内容解题流程 – 学习内容:赛题理解.数据读取.比赛 baseline 构建 ...

  7. 【天池赛事】零基础入门语义分割-地表建筑物识别

    https://tianchi.aliyun.com/competition/entrance/531872/introduction [天池赛事]零基础入门语义分割-地表建筑物识别:第一章 赛题及b ...

  8. 天池赛题解析:零基础入门语义分割-地表建筑物识别-CV语义分割实战(附部分代码)

    赛题内容 赛题背景 赛题以计算机视觉为背景,要求选手使用给定的航拍图像训练模型并完成地表建筑物识别任务.为更好的引导大家入门,我们为本赛题定制了学习方案和学习任务,具体包括语义分割的模型和具体的应用案 ...

  9. 零基础入门语义分割——Task1 赛题理解

    文章目录 一.赛题数据 二.数据标签 三.评价指标 四.读取数据 比赛地址:零基础入门语义分割-地表建筑物识别 一.赛题数据 遥感技术已成为获取地表覆盖信息最为行之有效的手段,遥感技术已经成功应用于地 ...

最新文章

  1. 解读模拟摇杆原理及实验
  2. C++ Primer 5th笔记(chap 15 OOP)构造函数和拷贝控制
  3. L1-013. 计算阶乘和
  4. Python-数据结构(二)
  5. Eclipse 修改文本编码方式
  6. 递归——阶乘加斐波那契数列(简单掌握递归思想的敲门砖)
  7. KM算法 详解+模板
  8. 2017哈尔滨ACM CCPC-final 总结
  9. 送走2007 ^_^ 迎来2008
  10. protues仿真闪退问题,亲测有效
  11. JQuery高效制作网页特效第六章jQuery选择器课后作业
  12. 雷锋科普:小米M2之芯高通APQ8064芯片组解析
  13. php写出个人所得税,php趣味编程-php求个人所得税
  14. (转)Java面试笔试题大汇总(最全+详细答案)
  15. zb怎么做渲染图_ZBrush渲染效果使用图文教程
  16. 随手笔记Cookie
  17. ajax thinkphp配合ajax的简单列子
  18. Excel中使用正则表达式的方法
  19. Java Thread 和 Park
  20. 首个企业架构TOGAF角色扮演案例培训的诞生

热门文章

  1. vue项目的三种开发模式
  2. java源代码众筹网站_java项目开发实战--使用ssm框架开发众筹网站
  3. 想做一个 基于安卓的智能手机校园订餐系统 求各位大神指导 提供宝贵意见 感谢你们!
  4. 史上最全“大数据”学习资源整理
  5. JAXB常用注解讲解(超详细)
  6. 中国健康、医疗大数据中心盘点(持续更新)
  7. linux kdump 分析工具,Ubuntu 15.10中的Kdump工具实战
  8. 利用无代码搭建“OA办公管理系统”
  9. 在ubuntu下删除mysql数据库
  10. O‘REILLY: Lightbulb End Watching —— 计算指定时间范围内多组时间差之和(秒数)