ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

三步搞定使用Augmentor对训练数据集进行扩增

2021-06-10 15:57:25  阅读:192  来源: 互联网

标签:index 搞定 enhancementDir 扩增 filePath path showDir os Augmentor


文章目录

前言

在训练模型时,有时在数据量较少情况下,避免过拟合,通常会采取人为进行数据增强来达到扩充数据集的目的,下面就介绍一种使用Augmentor来扩充数据集的方法。

实现过程

  • step 1 将源数据放在E盘
  • step 2 运行脚本
  • step 3 生成扩增后的数据

程序实现过程如下:

import numpy as np, Augmentor, cv2, sys
import os
import shutil
def del_file(path):
    ls = os.listdir(path) 
    for i in ls:
        c_path = os.path.join(path, i)
        if os.path.isdir(c_path):
            del_file(c_path)
        else:
            os.remove(c_path)

def Enhancement(filePath, rate):
    index = ngFilePath.rfind("\\")
    print(index)
    dataType = filePath.find("NG")
    dataType1 = filePath.find("OK")

    if(dataType > 0):
        enhancementDir = filePath[0:index] + "\\" + 'EnhanceImg' + '\\' + 'NG'
    if (dataType1 > 0):
        enhancementDir = filePath[0:index] + "\\" + 'EnhanceImg' + '\\' + 'OK'

    showDir = filePath[0:index] + "\\" + 'showImg'
    singleDir = filePath[0:index] + "\\" + 'sigleImg'

    isExist = os.path.exists(enhancementDir);
    if not isExist:
        os.makedirs(enhancementDir)
    else:
        del_file(enhancementDir)
    isExist = os.path.exists(showDir)

    if not isExist:
        os.makedirs(showDir)
    else:
        del_file(showDir)

    isExist = os.path.exists(singleDir)
    if not isExist:
        os.makedirs(singleDir)
    else:
        del_file(singleDir)

    sourceFiles = os.listdir(filePath)
    num = len(sourceFiles)
    sourceList = list(range(num))
    for i in sourceList:
        sourceFilesName = os.path.join(filePath,sourceFiles[i])
        src = cv2.imread(sourceFilesName, 0)
        shutil.copy2(sourceFilesName, singleDir)
        p = Augmentor.Pipeline(singleDir, showDir)
        p.random_brightness(probability= 0.7, min_factor = 0.5, max_factor= 1.2)
        # p.crop_centre(probability=0.5,160, 160)
        p.resize(probability=1, width=160, height=160)
        p.random_contrast(probability= 0.5, min_factor= 0.5, max_factor= 1.2)
        p.sample(rate)
        # shutil.copy2(sourceFilesName, enhancementDir)
        enhancedImg = os.listdir(showDir)
        enhanceImgList = list(range(len(enhancedImg)))
        sampleImgList =  []
        for j in enhanceImgList:
            fileName = enhancedImg[j]
            sampleImgList.append(fileName)
        numSampleImg = list(range(len(sampleImgList)))
        for k in numSampleImg:
            fileName = os.path.join(showDir, sampleImgList[k])
            shutil.copy2(fileName, enhancementDir)

        del_file(showDir)

if __name__ == '__main__':
    ngFilePath = "E:\\IMG\\NG"
    okFilePath = "E:\\IMG\\OK"
    rate = 10
    Enhancement(okFilePath, rate)

注:
由于这里是做二分类,所以将数据分为OK和NG,这里OK文件夹里随便放了5张图片,然后对这5张图片进行数据增强。

在这里插入图片描述
运行脚本后,后自动生成三个文件夹,数据增强后的数据会自动保存在EnhanceImg文件夹下
在这里插入图片描述在这里插入图片描述

标签:index,搞定,enhancementDir,扩增,filePath,path,showDir,os,Augmentor
来源: https://blog.csdn.net/weixin_41552975/article/details/117781491

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有