We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在【华为云 ModelArts-Lab AI实战营】第二期中的想提高猫狗识别率可以考虑增加训练数据来提高准确率。我们可以通过Keras来增广猫狗数据集。 我们先把案例提供的25000张图片进行分类及分文件夹。因为,在华为云上的Notebook上增广图片的数量在500张比较好,一次增广量可达到4000,时间在3分钟左右。 首先,我们先按500一份分装到50个文件夹内,再压缩成zip格式文件上传到notbook上。如图: 我们再进入 输入解压命令: unzip catdogdata.zip 到文件目录界面可以看到解压出文件 进行数据增广
from keras.preprocessing.image import ImageDataGenerator import os import numpy as np import tensorflow as tf def creat_x_database(rootdir, resize_row, resize_col): list = os.listdir(rootdir) database = np.arange(len(list) * resize_row * resize_col * 3).reshape(len(list), resize_row, resize_col, 3) for i in range(0, len(list)): path = os.path.join(rootdir, list[i]) # 把目录和文件名合成一个路径 if os.path.isfile(path): ##判断路径是否为文件 image_raw_data = tf.gfile.FastGFile(path, 'rb').read() with tf.Session() as sess: img_data = tf.image.decode_jpeg(image_raw_data) resized = tf.image.resize_images(img_data, [resize_row, resize_col], method=0) database[i] = resized.eval() return database ''' 用以生成一个batch的图像数据,支持实时数据提升。训练时该函数会无限生成数据, 直到达到规定的epoch次数为止。 ''' datagen = ImageDataGenerator( featurewise_center=True, # 去中心化 featurewise_std_normalization=True, # 标准化 rotation_range=10, # 旋转范围, 随机旋转(0-180)度 width_shift_range=0.2, # 随机沿着水平或者垂直方向,以图像的长宽小部分百分比为变化范围进行平移; height_shift_range=0.2, shear_range=0.2, # 水平或垂直投影变换 zoom_range=0.2, # 按比例随机缩放图像尺寸 horizontal_flip=True, # 水平翻转图像 fill_mode='nearest') # 填充像素, 出现在旋转或平移之后 x = creat_x_database('.xxx/xxx/训练文件路径', 256, 256) datagen.fit(x) i = 0 for batch in datagen.flow( x, batch_size=300, save_to_dir='./训练完毕的路径', save_prefix='1', save_format='jpg'): i += 1 if i > 15: break
最后得到的效果:
不过这里还有个数据标注还没完成,下期再补上,因为,我也没搞出来!!!难受!!!
The text was updated successfully, but these errors were encountered:
通过这种生成图像的方式,如果是按照实践中提供的代码进行训练的话,因为是在程序执行时才划分了训练集、验证集和测试集,很可能会导致部分图片及其通过图像增强得到的图片同时出现在训练集、验证集和测试集中,实际上对模型的精度测量会产生了干扰。
除此之外,在训练中如果是将所有图片加载到内存中再进行训练,对内存也是一个很大的考验,很可能导致内存被消耗尽,建议采用model.fit_generator方法进行模型的训练。该方法通过指定图像增强的生成器,在训练的时候,每次从训练集和测试集中随机选取指定数量的图像进行增强后,送入模型进行训练,减少了对内存的占用。 图像增强的生成器需要事先把指定文件夹中的图像再按照分类分为不同的文件夹存放,比如在训练文件夹中再创建dog和cat文件夹来分别存放猫、狗图片。这样的话,生成器可以根据文件夹的不同来区分出生成的图像是属于哪个类别的。
具体的实现步骤,可以参考我的这篇文章:第二期扩展实践:提升模型精度的几种尝试中的第四步。
当然,这种方式的训练时间也是非常慢,同时我的这个实践没有取得很好的效果,最终还是放弃了。再这里提出来,希望对你能够有所帮助,也希望你的实践能取得好的效果!
Sorry, something went wrong.
@leewishyuanfang 嘿嘿 谢谢李哥的指点,嗯。我这办法确实问题很大。我已经在研究你的第四步了。下次你早点发,我就少走弯路了!!!哈哈哈哈
牛逼
No branches or pull requests
在【华为云 ModelArts-Lab AI实战营】第二期中的想提高猫狗识别率可以考虑增加训练数据来提高准确率。我们可以通过Keras来增广猫狗数据集。
我们先把案例提供的25000张图片进行分类及分文件夹。因为,在华为云上的Notebook上增广图片的数量在500张比较好,一次增广量可达到4000,时间在3分钟左右。
首先,我们先按500一份分装到50个文件夹内,再压缩成zip格式文件上传到notbook上。如图:
我们再进入
输入解压命令: unzip catdogdata.zip
到文件目录界面可以看到解压出文件
进行数据增广
最后得到的效果:
不过这里还有个数据标注还没完成,下期再补上,因为,我也没搞出来!!!难受!!!
The text was updated successfully, but these errors were encountered: