运行平台:pycharm

在对数据集进行训练的过程中,为了使网络模型具有更好的鲁棒性,通常我们需要对数据集进行数据增强处理,常见的处理方法有添加噪声、旋转、改变亮度等,如图1,2所示。

图1.原图(coco2017数据集)

图2.数据增强后效果(例)

数据增强代码:

import cv2
import numpy as np
import os.path
import copydef SaltAndPepper(src,percetage):SP_NoiseImg=src.copy()SP_NoiseNum=int(percetage*src.shape[0]*src.shape[1])for i in range(SP_NoiseNum):randR=np.random.randint(0,src.shape[0]-1)randG=np.random.randint(0,src.shape[1]-1)randB=np.random.randint(0,3)if np.random.randint(0,1)==0:SP_NoiseImg[randR,randG,randB]=0else:SP_NoiseImg[randR,randG,randB]=255return SP_NoiseImgdef addGaussianNoise(image,percetage):G_Noiseimg = image.copy()w = image.shape[1]h = image.shape[0]G_NoiseNum=int(percetage*image.shape[0]*image.shape[1])for i in range(G_NoiseNum):temp_x = np.random.randint(0,h)temp_y = np.random.randint(0,w)G_Noiseimg[temp_x][temp_y][np.random.randint(3)] = np.random.randn(1)[0]return G_Noiseimgdef darker(image,percetage=0.9):image_copy = image.copy()w = image.shape[1]h = image.shape[0]#get darkerfor xi in range(0,w):for xj in range(0,h):image_copy[xj,xi,0] = int(image[xj,xi,0]*percetage)image_copy[xj,xi,1] = int(image[xj,xi,1]*percetage)image_copy[xj,xi,2] = int(image[xj,xi,2]*percetage)return image_copydef brighter(image, percetage=1.5):image_copy = image.copy()w = image.shape[1]h = image.shape[0]#get brighterfor xi in range(0,w):for xj in range(0,h):image_copy[xj,xi,0] = np.clip(int(image[xj,xi,0]*percetage),a_max=255,a_min=0)image_copy[xj,xi,1] = np.clip(int(image[xj,xi,1]*percetage),a_max=255,a_min=0)image_copy[xj,xi,2] = np.clip(int(image[xj,xi,2]*percetage),a_max=255,a_min=0)return image_copydef rotate(image, angle, center=None, scale=1.0):(h, w) = image.shape[:2]# If no rotation center is specified, the center of the image is set as the rotation centerif center is None:center = (w / 2, h / 2)m = cv2.getRotationMatrix2D(center, angle, scale)rotated = cv2.warpAffine(image, m, (w, h))return rotateddef flip(image):flipped_image = np.fliplr(image)return flipped_imagefile_dir = "img/"
for img_name in os.listdir(file_dir):img_path = file_dir + img_nameimg = cv2.imread(img_path)rotated_90 = rotate(img, 90)cv2.imwrite(file_dir + img_name[0:-4] + '_r90.jpg', rotated_90)rotated_180 = rotate(img, 180)cv2.imwrite(file_dir + img_name[0:-4] + '_r180.jpg', rotated_180)for img_name in os.listdir(file_dir):img_path = file_dir + img_nameimg = cv2.imread(img_path)flipped_img = flip(img)cv2.imwrite(file_dir +img_name[0:-4] + '_fli.jpg', flipped_img)img_salt = SaltAndPepper(img, 0.3)cv2.imwrite(file_dir + img_name[0:7] + '_salt.jpg', img_salt)img_gauss = addGaussianNoise(img, 0.3)cv2.imwrite(file_dir + img_name[0:-4] + '_noise.jpg',img_gauss)img_darker = darker(img)cv2.imwrite(file_dir + img_name[0:-4] + '_darker.jpg', img_darker)img_brighter = brighter(img)cv2.imwrite(file_dir + img_name[0:-4] + '_brighter.jpg', img_brighter)blur = cv2.GaussianBlur(img, (7, 7), 1.5)cv2.imwrite(file_dir + img_name[0:-4] + '_blur.jpg',blur)

对图片数据集进行数据增强操作相关推荐

  1. 【AutoML】如何选择最合适的数据增强操作

    大家好,欢迎来到专栏<AutoML>.在这个专栏中,我们会讲述AutoML技术在深度学习中的应用.这一期讲述在数据增强中的应用,这也是AutoML技术最早期的应用之一. 作者&编辑 ...

  2. 对PASCAL VOC 数据集进行数据增强

    对PASCAL VOC 数据集进行数据增强 1.GitHub仓库位置 目的:对VOC数据集的对象检测的数据进行数据增强.如果能帮到您请给本人一颗⭐,拜托了!!!!! https://github.co ...

  3. python浮雕图片_python图像数据增强——imgaug (二)

    在这章我们展示一个涵盖了大部分数据增强方法的例子.这里有大量的代码,可能会引起部分读者的不适,但是大家可以主要看注释,以及最后的总结性的话语,在实际上使用的时候再详细的看具体的实现,有一些.from ...

  4. 数据集可以导入mysql_利用数据集进行数据访问操作

    数据访问有两种不同的方式,一种是用Connection, Command , DataReader来进行数据对数据的操作,另一种是用DataAdapter(适配器)来进行数据操作,而数据则一般放在内存 ...

  5. 图片的混合空间增强操作Opencv-python实现

    基于Opencv-python的图片混合空间增强操作 文章目录 基于Opencv-python的图片混合空间增强操作 前言 一.混合空间增强操作流程图 二.python代码实现操作 三.效果图 前言 ...

  6. coco关键点数据集水平翻转数据增强,连同标注一起变化

    对coco图片进行水平翻转时,连同关键点标注也要对应着进行变化. 首先是x坐标,从x变为了width-1-x,然后对应的,人体的左右边要进行交换,比如原来的左手就变成右手,原来的右手变成左手,通过以下 ...

  7. Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集简介、下载、使用方法(包括数据增强)之详细攻略

    Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集简介+数据增强(将已有MNIST数据集通过移动像素上下左右的方法来扩大数据集为初始数据集的5倍) 目录 MNIST ...

  8. 数据增强——对文件夹中的图片进行读取、数据增强,保存操作

    图片读取.数据增强.图片保存代码 """ # 数据增强实现 """ import cv2 import numpy as np import ...

  9. 【Python】mmSegmentation语义分割框架教程(自定义数据集、训练设定、数据增强)

    文章目录 0.mmSegmentation介绍 1.mmSegmentation基本框架 1.1.mmSegmentation的model设置 1.2.mmSegmentation的dataset设置 ...

最新文章

  1. 文件转换html文件失败,pandoc文档转换失败,出现错误67
  2. Can‘t attach to the process: ptrace(PTRACE_ATTACH, ..)
  3. 实例对象的索引的方法
  4. 最新安卓手机性价比榜公布:Redmi连夺三冠
  5. 【零基础学Java】—static关键字概述(十六)
  6. 【浅墨著作】《OpenCV3编程入门》内容简介勘误配套源代码下载
  7. Linux:struct dirent
  8. 解决Windows10无法卸载Edge浏览器,亲测有效
  9. (2^n)-1是质数,则n肯定是质数
  10. 软件测试工具常用的都有哪些?
  11. 51单片机洞洞板用的visio图_怎样用洞洞板焊接一个向STC80c51或者AT89C51单片机里面烧录程序的电路板?...
  12. 职业生涯规划书-前端
  13. 电脑键盘equals在哪个位置_常用标点符号和电脑键盘符号英语表示 -
  14. 嵌入式系统原理与实践期末个人总结
  15. Good Ticket(深搜)
  16. GitHub注册教程(图文详解)
  17. 【ROM制作工具】小白轻松一键搞定纯净ROM刷机包
  18. 南京航空航天大学计算机组成原理,2017年南京航空航天大学计算机科学与技术学院829计算机专业基础之计算机组成原理考研题库...
  19. 区块链入门教程(9)--使用WeBASE-Front部署及调用合约
  20. Python实现的图书分析大屏展示系统(附源码)

热门文章

  1. [梁山好汉说IT] 梁山好汉和抢劫银行
  2. matchesSelector 匹配选择器表达式sizzle的实现
  3. 盘菩提子串珠盘的是心情
  4. 如何找回IOS访问限制密码
  5. linux时间同步命令
  6. 东芝为何无法成为通用电气?日媒:或在于赚钱方法
  7. 解决vue元素复用问题
  8. java最多保留两位小数_java使double保留两位小数的多方法 java保留两位小数
  9. 2023年全国硕士研究生招生考试数学(一)试题及参考答案
  10. 私有云---openstack