手机应用商店app下载官方网站下载,阿里云如何上传网站,全球速卖通下载,创业做电商需要多少钱— 全文阅读5分钟 —在本文中#xff0c;你将学习到以下内容#xff1a;通过数据增强增加样本量调整图片大小便于网络训练前言图像识别的准备工作就是要对我们拿到手的样本图片进行预处理#xff0c;具体就是数据增强和调整图片大小#xff0c;这些准备工作都是为训练网络做…— 全文阅读5分钟 —在本文中你将学习到以下内容通过数据增强增加样本量调整图片大小便于网络训练前言图像识别的准备工作就是要对我们拿到手的样本图片进行预处理具体就是数据增强和调整图片大小这些准备工作都是为训练网络做准备。图片预处理一定要合理有效符合机器学习的要求。数据增强(data augmentation)当我们拿到一套图片数据准备进行机器学习的时候样本量往往不够多因此需要对现有的图片进行数据增强。一方面是为了增加样本量另一方面能够提高模型的泛化能力。假设我们有一组商标图片如下商标图片当我们进行100类的机器学习时显然这一类的样本量不够多在这里我们通过keras库进行数据增强。以商标图片中的第一张图片为例from keras.preprocessing.image import ImageDataGenerator, img_to_array, load_imgpic_path r./3ac79f3df8dcd100755525327e8b4710b8122fdc.jpgaugmentation_path r./data_augmentation1234fromkeras.preprocessing.imageimportImageDataGenerator,img_to_array,load_imgpic_pathr./3ac79f3df8dcd100755525327e8b4710b8122fdc.jpgaugmentation_pathr./data_augmentation首先导入keras库建立图片路径和数据增强保存路径接下来定义ImageDataGenerator告诉他通过哪些操作产生新的图片。data_gen ImageDataGenerator(rotation_range30,width_shift_range0.1,height_shift_range0.1,zoom_range0.2,fill_modenearest)123456data_genImageDataGenerator(rotation_range30,width_shift_range0.1,height_shift_range0.1,zoom_range0.2,fill_modenearest)在这里根据当前的图片需求选择了旋转、平移、缩放、边缘填充的操作其他操作详见。有些操作的设置要符合实际情况比如旋转操作不能把图片完全倒立了这样的数据增强反而不利机器学习。img load_img(pic_path)x img_to_array(img)x x.reshape((1,) x.shape)n 1for batch in data_gen.flow(x, batch_size1, save_to_diraugmentation_path, save_prefixtrain, save_formatjpeg):n 1if n 6: # 6表示生成6张新的图片break12345678imgload_img(pic_path)ximg_to_array(img)xx.reshape((1,)x.shape)n1forbatchindata_gen.flow(x,batch_size1,save_to_diraugmentation_path,save_prefixtrain,save_formatjpeg):n1ifn6:# 6表示生成6张新的图片break加载图片的地址转变成array格式给ImageDataGeneratorsave_prefix表示新图片的名字前缀save_format表示新图片保存的格式。需要注意的是在这里根据我们定义的操作从这些操作中随机选择几种生成6张图片。最终在data_augmentation文件夹中生成6张新的商标图片新的商标图片在实际操作中应该多去尝试数据增强的各种操作。好的样本扩充能够增加模型的泛化能力提高准确率。数据增强完整代码如下from keras.preprocessing.image import ImageDataGenerator, img_to_array, load_imgpic_path r./3ac79f3df8dcd100755525327e8b4710b8122fdc.jpgaugmentation_path r./data_augmentationdata_gen ImageDataGenerator(rotation_range30,width_shift_range0.1,height_shift_range0.1,zoom_range0.2,fill_modenearest)img load_img(pic_path)x img_to_array(img)x x.reshape((1,) x.shape)n 1for batch in data_gen.flow(x, batch_size1, save_to_diraugmentation_path, save_prefixtrain, save_formatjpeg):n 1if n 6:break1234567891011121314151617181920fromkeras.preprocessing.imageimportImageDataGenerator,img_to_array,load_imgpic_pathr./3ac79f3df8dcd100755525327e8b4710b8122fdc.jpgaugmentation_pathr./data_augmentationdata_genImageDataGenerator(rotation_range30,width_shift_range0.1,height_shift_range0.1,zoom_range0.2,fill_modenearest)imgload_img(pic_path)ximg_to_array(img)xx.reshape((1,)x.shape)n1forbatchindata_gen.flow(x,batch_size1,save_to_diraugmentation_path,save_prefixtrain,save_formatjpeg):n1ifn6:break图片大小调整(resize)统一调整图片的大小便于后面进行机器学习。我们以调整data_augmentation文件夹生成的新图片为例from PIL import Imageimport osimg_path r./data_augmentationresize_path r./resize_imagefor i in os.listdir(img_path):im Image.open(os.path.join(img_path,i))out im.resize((224, 224))if not os.path.exists(resize_path):os.makedirs(resize_path)out.save(os.path.join(resize_path, i))123456789101112fromPILimportImageimportosimg_pathr./data_augmentationresize_pathr./resize_imageforiinos.listdir(img_path):imImage.open(os.path.join(img_path,i))outim.resize((224,224))ifnotos.path.exists(resize_path):os.makedirs(resize_path)out.save(os.path.join(resize_path,i))使用PIL库改变图片大小使用os库读取文件路径将resize后的图片放到resize_image文件夹中。resize后的大小为224*224(这个大小是为了后面ResNet使用)。resize后的图片效果如下resize后的图片当你完成这一步的时候图像识别的准备工作就完成一半了剩下的就是将这些图片制成tfrecord格式方便训练网络读取。