楼主: 时光永痕
755 0

[数据挖掘新闻] 在Keras和TensorFlow中扩展ImageDataGenerator [推广有奖]

  • 0关注
  • 14粉丝

svip3

学术权威

12%

(VIP/贵宾)四级

41%

威望
0
论坛币
26 个
通用积分
49.8622
学术水平
4 点
热心指数
4 点
信用等级
4 点
经验
34070 点
帖子
2731
精华
0
在线时间
317 小时
注册时间
2020-7-21
最后登录
2024-5-13

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在Keras和TensorFlow中扩展ImageDataGenerator
在处理计算机视觉问题时,很多时候我们会遇到需要对整个数据集应用某种形式的转换的情况。Keras中的ImageDataGenerator类提供了多种转换,例如翻转,规范化等。
keras_tokenization
但是,应用Keras中不可用的自定义转换变得很困难。在我们的特定示例中,我们将对我们的数据集应用去噪算法作为预处理转换。一种简单的方法是对数据集中的所有图像应用降噪功能,并将处理后的图像保存在另一个目录中。但是,这浪费了我们的时间和空间。另一种方法是使用preprocessing_function属性即时执行此转换  。
为了加载图像进行训练,我使用在Keras中实现的.flow_from_directory()方法。使用OpenCV进行去噪非常简单,它提供了几种内置算法。在本文中,我将展示如何定义我们自己的预处理功能,将其传递给训练生成器,并将图像直接输入模型中,从而省去了保存它们的需要。
本教程大致分为两部分-
实现去噪算法
扩展预处理功能
让我们马上开始!
第1部分–实现去噪算法
让我们准备一个函数,将图像作为输入,应用内置的降噪算法,然后返回处理后的图像。
导入cv2
将numpy导入为np
def preprocessing_fun(文件名):
    img = cv2.imread(文件名)
    dst = cv2.fastN1MeansDenoisingColored(img,None,10,10,7,21)
    返回dst
我们正在使用OpenCV的fastN1MeansDenoisingColored算法,因为该算法适用于彩色图像。OpenCV还提供了其他算法,可用于单通道图像。
现在我们已经实现了算法,让我们在ImageDataGenerator类中使用它。
第2部分–扩展预处理功能
在这里,我们使用训练生成器中上一节中定义的函数。
img_datagen = ImageDataGenerator(rescale = 1. / 255,
                           preprocessing_function = preprocessing_fun)
training_gen = img_datagen.flow_from_directory(PATH,target_size =(224
                          color_mode ='rgb',batch_size = 32,shuffle = True)
在定义ImageDataGenerator对象的前两行中,您会注意到我们已经将去噪功能传递给了preprocessing_function参数。通过这样做,我们指示数据生成器将此功能作为预处理步骤应用于每个图像,然后再将其提供给模型。这样,我们就无需处理所有图像并将它们写入单独的目录。
专家提示:如果需要执行在不同功能中定义的一系列转换,则可以通过以下方式在训练生成器中使用它。
def transform1(img):
    #应用诸如水平翻转的转换并返回图像
    返回cv2.flip(img,1)
def transform2(img):
    #应用诸如垂直翻转之类的转换并返回图像
    返回cv2.flip(img,0)
def transform3(img):
    #应用180度旋转并返回图像
    返回cv2.rotate(img,cv2.ROTATE_180)
def our_preprocessing_function(filename):
    #组合所有转换
    img = cv2.imread(文件名)
    img1 = transform1(img)
    img2 = transform2(img1)
    final_img = transform3(img2)
    返回final_img
img_datagen = ImageDataGenerator(rescale = 1. / 255,
preprocessing_function = our_preprocessing_function)
training_generator = img_datagen.flow_from_directory(PATH,
target_size =(224
class_mode ='categorical',shuffle = True)
这样,我们可以提供一系列自定义转换,将它们包装在一个函数中,然后将其应用于我们的数据集。该方法简单但功能强大,在资源受限的环境中工作时非常方便。
题库
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Generator Tensor image flow aged

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-31 06:49