参考GitHub:

https://github.com/yangninghua/deeplearning_backbone

生成txt


import numpy as np
import structfrom PIL import Image
import osdata_file = 't10k-images.idx3-ubyte'
# It's 7840016B, but we should set to 7840000B
data_file_size = 7840016
data_file_size = str(data_file_size - 16) + 'B'data_buf = open(data_file, 'rb').read()magic, numImages, numRows, numColumns = struct.unpack_from('>IIII', data_buf, 0)
datas = struct.unpack_from('>' + data_file_size, data_buf, struct.calcsize('>IIII'))
datas = np.array(datas).astype(np.uint8).reshape(numImages, 1, numRows, numColumns)label_file = 't10k-labels.idx1-ubyte'# It's 10008B, but we should set to 10000B
label_file_size = 10008
label_file_size = str(label_file_size - 8) + 'B'label_buf = open(label_file, 'rb').read()magic, numLabels = struct.unpack_from('>II', label_buf, 0)
labels = struct.unpack_from('>' + label_file_size, label_buf, struct.calcsize('>II'))
labels = np.array(labels).astype(np.int64)datas_root = 'mnist_test'
if not os.path.exists(datas_root):os.mkdir(datas_root)for i in range(10):file_name = datas_root + os.sep + str(i)if not os.path.exists(file_name):os.mkdir(file_name)for ii in range(numLabels):img = Image.fromarray(datas[ii, 0, 0:28, 0:28])label = labels[ii]file_name = datas_root + os.sep + str(label) + os.sep + \'mnist_test_' + str(ii) + '.png'img.save(file_name)

生成train:

import numpy as np
import structfrom PIL import Image
import osdata_file = 'train-images.idx3-ubyte'
# It's 47040016B, but we should set to 47040000B
data_file_size = 47040016
data_file_size = str(data_file_size - 16) + 'B'data_buf = open(data_file, 'rb').read()magic, numImages, numRows, numColumns = struct.unpack_from('>IIII', data_buf, 0)
datas = struct.unpack_from('>' + data_file_size, data_buf, struct.calcsize('>IIII'))
datas = np.array(datas).astype(np.uint8).reshape(numImages, 1, numRows, numColumns)label_file = 'train-labels.idx1-ubyte'# It's 60008B, but we should set to 60000B
label_file_size = 60008
label_file_size = str(label_file_size - 8) + 'B'label_buf = open(label_file, 'rb').read()magic, numLabels = struct.unpack_from('>II', label_buf, 0)
labels = struct.unpack_from('>' + label_file_size, label_buf, struct.calcsize('>II'))
labels = np.array(labels).astype(np.int64)datas_root = 'mnist_train'
if not os.path.exists(datas_root):os.mkdir(datas_root)for i in range(10):file_name = datas_root + os.sep + str(i)if not os.path.exists(file_name):os.mkdir(file_name)for ii in range(numLabels):img = Image.fromarray(datas[ii, 0, 0:28, 0:28])label = labels[ii]file_name = datas_root + os.sep + str(label) + os.sep + \'mnist_train_' + str(ii) + '.png'img.save(file_name)

生成train.txt

和vaild.txt:

# coding:utf-8
import os
'''为数据集生成对应的txt文件
'''train_txt_path = './train.txt'
train_dir = './mnist_train/'valid_txt_path = './valid.txt'
valid_dir = './mnist_test/'def gen_txt(txt_path, img_dir):f = open(txt_path, 'w')for root, s_dirs, _ in os.walk(img_dir, topdown=True):  # 获取 train文件下各文件夹名称for sub_dir in s_dirs:i_dir = os.path.join(root, sub_dir)             # 获取各类的文件夹 绝对路径img_list = os.listdir(i_dir)                    # 获取类别文件夹下所有png图片的路径for i in range(len(img_list)):if not img_list[i].endswith('png'):         # 若不是png文件,跳过continuelabel = sub_dirimg_path = os.path.join(i_dir, img_list[i])line = img_path + ' ' + label + '\n'f.write(line)f.close()if __name__ == '__main__':gen_txt(train_txt_path, train_dir)gen_txt(valid_txt_path, valid_dir)

单通道转三通道

import os
import random
from multiprocessing import cpu_count
import numpy as np
import paddle
from PIL import Image# 训练图片的预处理
def train_mapper(sample):img_path, label, crop_size, resize_size = sampletry:#PIL包含九种不同模式:1,L,P,RGB,RGBA,CMYK,YCbCr, I,Fimg = Image.open(img_path).convert('RGB')# 统一图片大小img = img.resize((resize_size, resize_size), Image.ANTIALIAS)# 随机水平翻转r1 = random.random()if r1 > 0.5:img = img.transpose(Image.FLIP_LEFT_RIGHT)# 随机垂直翻转r2 = random.random()if r2 > 0.5:img = img.transpose(Image.FLIP_TOP_BOTTOM)# 随机角度翻转r3 = random.randint(-3, 3)img = img.rotate(r3, expand=False)# 随机裁剪r4 = random.randint(0, int(resize_size - crop_size))r5 = random.randint(0, int(resize_size - crop_size))box = (r4, r5, r4 + crop_size, r5 + crop_size)img = img.crop(box)# 把图片转换成numpy值img = np.array(img).astype(np.float32)# 原本时H-W-C转换成CHWimg = img.transpose((2, 0, 1))img = img / 255.0return img, int(label)except:print("%s 该图片错误,请删除该图片并重新创建图像数据列表" % img_path)# 测试图片的预处理
def test_mapper(sample):img, label, crop_size = sampleimg = Image.open(img)# 统一图像大小img = img.resize((crop_size, crop_size), Image.ANTIALIAS)# 转换成numpy值img = np.array(img).astype(np.float32)# 转换成CHWimg = img.transpose((2, 0, 1))# 转换成BGRimg = img[(2, 1, 0), :, :] / 255.0return img, int(label)# 获取训练的reader
def train_reader(train_list_path, crop_size, resize_size):father_path = os.path.dirname(train_list_path)def reader():with open(train_list_path, 'r') as f:lines = f.readlines()# 打乱图像列表np.random.shuffle(lines)# 开始获取每张图像和标签for line in lines:img, label = line.split(' ')#img = os.path.join(father_path, img)yield img, label, crop_size, resize_size#paddle.reader.xmap_readers进行数据的映射#http://www.paddlepaddle.org/documentation/docs/zh/1.4/api_cn/data/data_reader_cn.html#reader#通过多线程方式,通过用户自定义的映射器mapper来映射reader返回的样本(到输出队列)#参数:#mapper (callable) - 一种映射reader数据的函数。#reader (callable) - 产生数据的reader。#process_num (int) - 用于处理样本的线程数目。#buffer_size (int) - 存有待读取数据的队列的大小。#order (bool) - 是否保持原始reader的数据顺序。 默认为False。return paddle.reader.xmap_readers(train_mapper, reader, 2, 1024)# 测试的图片reader
def test_reader(test_list_path, crop_size):father_path = os.path.dirname(test_list_path)def reader():with open(test_list_path, 'r') as f:lines = f.readlines()for line in lines:img, label = line.split('\t')#img = os.path.join(father_path, img)yield img, label, crop_sizereturn paddle.reader.xmap_readers(test_mapper, reader, 2, 1024)

mnist转换为3通道的224*244,生成训练train.txt和vaild.txt相关推荐

  1. mnist 转换为record 使用tf data 转换 读取 训练

    原文链接: mnist 转换为record 使用tf data 转换 读取 训练 上一篇: js 数组 堆栈 和 buckets 效率 对比 下一篇: tf data 切换数据集 使用并行提高效率 参 ...

  2. ffmpeg将视频转换为带透明通道的gif

    使用 ffmpeg 也能生成带透明的 gif 文件.比如将 AE 导出的 rgba 通道的 avi 转换为 gif. ffmpeg -i infile.avi -lavfi split[v],pale ...

  3. FPGA----ZCU106基于axi-hp通道的pl与ps数据交互(全网唯一最详)

    1.大家好,今天给大家带来的内容是,基于AXI4协议的采用AXI-HP通道完成PL侧数据发送至PS侧(PS侧数据发送至PL侧并没有实现,但是保留了PL读取PS测数据的接口) 2.如果大家用到SoC这种 ...

  4. OpenCV图像处理使用笔记(三)——单通道的Mat对象强转为三通道的Mat对象

    前言 在机器学习和深度学习的时候,对图像进行处理时,会遇到明明是给的三通道的图像,但因为是黑白的,程序判断为单通道的图像,这样让人很无语,还有有时候有些库必须要传入三通道的RGB图像,但为了提升处理的 ...

  5. Python计算Y通道或者RGB通道的PSNR_SSIM

    Python计算Y通道或者RGB通道的PSNR_SSIM 一. PSNR与SSIM简介 二.代码实现 三.运行.保存结果展示 一. PSNR与SSIM简介 峰值信噪比(Peak Signal-to-n ...

  6. 将yolo标注转换为tensorflow_yolov3标注生成train.txt和test.txt同时做数据清洗

    文章目录 代码: 20200218 貌似上面代码有点bug,新的如下(解决了目标只有单行无法提取的bug,新增了将空目标图片汇总到文件夹的功能): 代码: # -*- encoding: utf-8 ...

  7. 文件夹文件自动生成目录的方法-保存到txt

    文件夹文件自动生成目录的方法-保存到txt 1.打开记事本: 2.复制以下内容: @echo off     dir /b /on >list.txt 3.另存为bat,类型ANSI

  8. 【语言-批处理】生成文件时,文件名变化生成(例如:yuan1.txt、yuan2.txt、yuan3.txt...)

    按123生成文件.bat ::set a = 1 ::for ::if exist %a%.txt() else ( echo 1>1.txt) ::if exist *.txt( del *. ...

  9. 谷歌新大招UDG|直接生成训练数据送给你

    卷友们好,我是rumor. 最近我越来越相信Prompt概念了,不光是paper数量越来越多,关键是用过的都说好.比如我的同事,比如我面试到的同学,再比如我看到的一些实践博客.估计在它席卷所有任务和d ...

最新文章

  1. ElasticSearch 学习笔记 - 10.指标聚合
  2. nodejs+vue.js+webpack
  3. matlab1分钟数据转5分钟,把股票的5分钟k线数据转换成matlab的day文件
  4. ADO.Net 数据库访问技术
  5. jquery easyui
  6. html简单网页设计实验实践结论,网页设计社会实践报告
  7. vue 生成PDF(A4标准PDF分页)
  8. gradle下载不下来依赖包_Gradle 下载依赖jar包及源码
  9. Java 单点登录安全性如何保障?
  10. Windows XP下安装SQL2000企业版
  11. 【五校联考2015 8.20】宝藏
  12. Kalman滤波器参数分析
  13. .NET平台下几种SOCKET模型的简要性能供参考的讨论【转】
  14. 目标级联分析法( Analytical Target Cascading , ATC )理论matlab程序
  15. PS改变背景图片/颜色(3种方法)
  16. 软考(软件设计师知识点) --法律法规
  17. 中国高校鄙视链指南!
  18. 深入理解Spark RDD——RDD实现的初次分析
  19. 微信小程序_图片连拍_闪光灯_手电筒_录制
  20. 卷积神经网络和多模态学习

热门文章

  1. CVE-2021-21315 Linux sudoNode.js命令注入
  2. 1分钟了解 Tree-shaking
  3. 搞定mysql的 行转列(7种方法) 和 列转行
  4. 复旦大学2018--2019学年第一学期(18级)高等代数I期末考试第八大题解答
  5. c++求数组长度 和vector用法
  6. IP-Guard客户端打包程序提示未知错误解决办法
  7. 在python中数据的输出用哪个函数名_在Python中,数据的输出用哪个函数名
  8. Nginx学习之Nginx进程
  9. 高压空气压缩机怎样选择
  10. jQuery中删除cookie失败问题解决方案