图片数据增强的方法——收藏
使用cv2,numpy,PIL模块实现图像数据的数据增强。
计算机视觉中的图像增强,是人为的为视觉不变性(语义不变)引入了先验知识。数据增强也基本上成了提高模型性能的最简单、直接的方法了。
一、原图片:
二、数据增强代码:
导包:
import random
import cv2
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
读数据:
img = Image.open("5-8图库/5-8.png")
img = np.array(img)# 展示图片
plt.imshow(img)
plt.show()
图像水平翻转:
def horizon_flip(img):'''图像水平翻转:param img::return:水平翻转后的图像'''return img[:, ::-1]# 展示图片
plt.imshow(horizon_flip(img))
plt.show()
图像垂直翻转:
def vertical_flip(img):'''图像垂直翻转:param img::return:'''return img[::-1]
在一定角度范围内,图像随机旋转:
def rotate(img, limit_up=90, limit_down=-90):'''在一定角度范围内,图像随机旋转:param img::param limit_up:旋转角度上限:param limit_down: 旋转角度下限:return: 旋转后的图像'''# 旋转矩阵rows, cols = img.shape[:2]center_coordinate = (int(cols / 2), int(rows / 2))angle = random.uniform(limit_down, limit_up)M = cv2.getRotationMatrix2D(center_coordinate, angle, 1)# 仿射变换out_size = (cols, rows)rotate_img = cv2.warpAffine(img, M, out_size, borderMode=cv2.BORDER_REPLICATE)return rotate_img
上下左右随机平移:
def shift(img, distance_down=-500, distance_up=500):'''利用仿射变换实现图像平移,平移距离∈[down, up]:param img: 原图:param distance_down:移动距离下限:param distance_up: 移动距离上限:return: 平移后的图像'''rows, cols = img.shape[:2]y_shift = random.uniform(distance_down, distance_up)x_shift = random.uniform(distance_down, distance_up)# 生成平移矩阵M = np.float32([[1, 0, x_shift], [0, 1, y_shift]])# 平移img_shift = cv2.warpAffine(img, M, (cols, rows), borderMode=cv2.BORDER_REPLICATE)return img_shift
固定尺寸随机进行裁剪:
def crop(img, crop_x=600, crop_y=600):'''读取部分图像,进行裁剪:param img::param crop_x:裁剪x尺寸:param crop_y:裁剪y尺寸:return:'''rows, cols = img.shape[:2]# 偏移像素点x_offset = random.randint(0, cols - crop_x)y_offset = random.randint(0, rows - crop_y)# 读取部分图像img_part = img[y_offset:(y_offset+crop_y), x_offset:(x_offset+crop_x)]return img_part
随机调整图像亮度、对比度调整:
def lighting_adjust(img, k_down=0, k_up=5, b_down=0, b_up=3):'''图像亮度、对比度调整:param img::param k_down:对比度系数下限:param k_up:对比度系数上限:param b_down:亮度增值上限:param b_up:亮度增值下限:return:调整后的图像'''# 对比度调整系数slope = random.uniform(k_down, k_up)# 亮度调整系数bias = random.uniform(b_down, b_up)# 图像亮度和对比度调整img = img * slope + bias# 灰度值截断,防止超出255img = np.clip(img, 0, 255)return img.astype(np.uint8)
图像加高斯噪声:
def Gaussian_noise(img, mean=0, std=0.05):'''图像加高斯噪声:param img: 原图:param mean: 均值:param std: 标准差:return:'''image = np.array(img/255, dtype=float)noise = np.random.normal(mean, std ** 0.5, image.shape)out = image + noiseif out.min() < 0:low_clip = -1.else:low_clip = 0.out = np.clip(out, low_clip, 1.0)out = np.uint8(out*255)return out
图像归一化:
def normalization(img, mean = [0.485, 0.456, 0.406], std= [0.229, 0.224, 0.225]):'''图像归一化,图像像素点从(0,255)->(0,1):param img::param mean:所有样本图像均值 默认数值来自imagenet统计:param std: 所有样本图像标准差:return:'''img = img.astype('f')img -= meanimg /= stdimg = np.uint8(img)return img
案例来源与网络,图像时自己生成的,收藏下来以后用。
图片数据增强的方法——收藏相关推荐
- Python PIL库处理图片常用操作,图像识别数据增强的方法
在博客AlexNet原理及tensorflow实现训练神经网络的时候,做了数据增强,对图片的处理采用的是PIL(Python Image Library), PIL是Python常用的图像处理库. 下 ...
- python 图片数据增强_数据增强之批量修改图像尺寸大小(附Python实现)
2019 is a new start! 很久没有更啦~希望不要懒惰.(虽然不努力真滴很舒服诶) 今天就来说一下之前在处理图片时候用到的一些知识. 数据增强 在接触Alexnet网络结构模型的时候,第 ...
- LabelImg,LabelMe工具标注后的图片数据增强
向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习 公众号:datayx 这是一个目标检测和目标分割增强的小工具,需要您事先标记一些图片,然后变化增强图片(支持Lab ...
- 目标检测:python实现多种图像数据增强的方法(光照,对比度,遮挡,模糊)
图像数据增强的内容(可根据需要自定义选择): 1.直方图均衡化 2.clahe自适应对比度直方图均衡化 3.白平衡 4.亮度增强 5.亮度,饱和度,对比度增强 6.去除图像上的高光部分 7.自适应亮度 ...
- Python深度学习-Data Augmentation:使用Augly库进行图片数据增强
Augly AugLy 是一个数据增强库,可以帮助评估和提高模型的稳健性.该库支持四种模式(音频.视频.图像和文本),并且包含 100 多种执行数据增强的方法.如果正在从事使用音频.视频.图像或文本数 ...
- 深度学习之批量图片数据增强
在之前的文章中,分别对数据增强的库函数进行了介绍,本文将结合实际应用进行批量图片的数据增强. 背景:项目采集的是灰度图,原数据只有不到20张图片,因此,选择数据增强的方法,通过不同变换方法的组合,实现 ...
- DL之AlexNet:利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型)
DL之AlexNet:利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型) 目录 利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型) 设计思路 处 ...
- Dataset之图片数据增强:设计自动生成汽车车牌图片算法(cv2+PIL)根据随机指定七个字符生成逼真车牌图片数据集(自然场景下+各种噪声效果)可视化
Dataset之图片数据增强:设计自动生成汽车车牌图片算法(cv2+PIL)根据随机指定七个字符生成逼真车牌图片数据集(自然场景下+各种噪声效果)可视化 导读 设计自动生成汽车车牌图片算法,基于cv2 ...
- Dataset之图片数据增强:基于TF实现图片数据增强(原始的训练图片reshaped_image→数据增强→distorted_image(训练时直接使用))
Dataset之图片数据增强:基于TF实现图片数据增强(原始的训练图片reshaped_image→数据增强→distorted_image(训练时直接使用)) 目录 数据增强步骤 数据增强实现代码 ...
最新文章
- JavaScript基础(三)流程控制
- rsync同步操作 、 发布rsync共享 、 inotify实时同步 、 Split分离解析
- 良心发现?百度网盘不用开会员,下载速度也能达到7M/S了
- 每日一笑 | 马冬梅当上了百度投资董事???
- 机器学习笔记(九):应用机器学习的建议
- java学习笔记之数组
- java https安全传输
- 面试官问你有什么要问的时候,大胆的提出类似问题
- C#中的类型转换(转载)
- SharePoint自动化系列——Set MMS field value using PowerShell.
- Windows查询端口的进程
- 教科书级——黑盒测试设计用例的方法的介绍
- 异名童鞋的微信小游戏性能优化
- 浏览器安全检查5秒解决方案
- PIBOT移植ROS2记录(2)-添加Node与cmd_vel
- 【LeetCode】1160. 拼写单词(C++)
- zabbix监控软件安装
- 200行Perl 语言实现 VCD 转ATE测试pattern ---pattern的解析
- MySQL 8.0.20 Window10免安装版配置及Navicat管理
- 【Windows取证】隐藏用户
热门文章
- 维特比算法在隐马尔可夫模型中的应用
- 《 猜数字》小游戏的Java实现
- linux下安装EDK2开发环境,EDK2开发环境搭建 - osc_y9wmeuxa的个人空间 - OSCHINA - 中文开源技术交流社区...
- 蚂蚁java一二三面面经
- windows环境中安装php的redis扩展及ThinkPhp5使用redis缓存
- 抖音推广——抖音吸粉技巧分享
- layui 动态表格 合并单元格
- Linux下批量把GDK编码的文章转化为UTF-8编码的文章以及“iconv: 未知 xxx 处的非法输入序列”错误处理
- 通过注册表方式启动和关闭手写输入法(方法适合各种应用)
- 基于工业树莓派的AGV机器小车控制系统