自己制作的数据集

1.剪裁图片

图片大小不一,我的想法是遍历文件夹内的图片进行resize,然后作为放入网络中的输入。但是每个图片名字不一致,要改变,我就用了一个count,从001-999位置,全部剪裁,(这部分其实网络的预处理也可以做,我只是提前做了)。
—————————————————————————————————————

注意点

  1. 这里有个注意点,因为我的图片是网上截取的,所以不能保证每张图片质量都很好,在imread读取的时候,可能出现NoneType,一定要注意,不然会报错(这是个坑,我找了好久,才发现)
  2. 第二个是我把所有的图片都改成了JPG,可能有gif,png等等这类的,存在也会报错,所以建议大家一开始就右击保存,而不要只把图片拉下来。
  3. 因为我不是很熟悉xml文件,并且我的图片都是不需要重新用边界框截取,所以我没有用labelImg去做。
    —————————————————————————————————————
import cv2
import os
count=501
for filename in os.listdir(r"/home/parallels/Downloads/绿色/"):#print("/home/parallels/Downloads/1.黑/"+filename)
#filename=/home/parallels/Downloads/1.黑/1.jpgpath="/home/parallels/Downloads/绿色/"+str(filename)#print(path)img=cv2.imread(path,cv2.IMREAD_COLOR)if img is None:continueif len(str(count))!=3:b=(3-len(str(count)))*"0"+str(count)+".jpg"else:b=str(count)+".jpg"if img.shape[0]>=50 and img.shape[1]>=50:img_2=cv2.resize(img,(50,50))cv2.imwrite(os.path.join("/home/parallels/Downloads/3/"+b),img_2)#cv2.imwrite(os.path.join("/home/wanglin/PycharmProjects/data_test/data/Train400/original.jpg" ), img)count+=1continueelse:os.remove(path)

我这里暂时取得是(50,50,3),可以根据网络选择自己的尺寸,在写个脚本验证一下看看,是不是size都是(50,50)。

import cv2
import os
train=[]
for filename in os.listdir(r"/home/parallels/Downloads/3/"):#print("/home/parallels/Downloads/1.黑/"+filename)
#filename=/home/parallels/Downloads/1.黑/1.jpgpath="/home/parallels/Downloads/3/"+str(filename)#print(path)img=cv2.imread(path,cv2.IMREAD_COLOR)print(img.shape)

2.把所有的图片的路径和标签写到txt文件里去(这部分查了很多网上的教程,dir /b/s> xxx.txt),我是没有实现,路径没有加进去,所以我稍微参考写了一个自己的py文件,供大家去使用。

import os
f = open('/Users/qiubo/Desktop/train_list.txt','w')
for root,dirs,files in os.walk('/Users/qiubo/Desktop/3/',True):for file in files:f.writelines("/Users/qiubo/Desktop/3/"+file)f.write('\n')

这里的f.writelines括号里的前半个是路径,后面是每个图片名,至于标签的话,继续加上就行,并没有很麻烦。

3.读取训练的x,y,我做到这一步就结束了,因为网络需要改造,所以还没有具体想到要几个标签。

import pickle
import numpy as np
import os.path
import codecs
def load_data(datafile, num_class=8, save=False, save_path='dataset.pkl'):fr = codecs.open(datafile, 'r', 'utf-8')train_list = fr.readlines()labels = []images = []for line in train_list:tmp = line.strip().split(' ')fpath = tmp[0]img = cv2.imread(fpath)np_img = np.asarray(img, dtype="float32")images.append(np_img)index = int(tmp[xxx])label = np.zeros(num_class)label[index] = 1labels.append(label)if save:pickle.dump((images, labels), open(save_path, 'wb'))fr.close()return images, labels

这个代码我是在修改了RCNN的预处理过程,就是读取txt文件,然后做个one-hot矩阵,看分类,由于这里我还没有试验过用到自己的数据集,所以大家有错误可以指出来,我修改一下

自己制作深度学习数据集教程相关推荐

  1. 捡漏!用谷歌图片搜索自制深度学习数据集 | 教程

    铜灵 编译整理 量子位 出品 | 公众号 QbitAI 就怕前脚刚立志搞个新研究,后脚就发现没有合适的数据集可用.AI工程师从入门到放弃,可能就是这么一会的功夫. 别找了,现在深度学习数据集也能自制了 ...

  2. Python——制作深度学习数据集批量重命名图片文件名解决方案

    解决方案 #!usr/bin/env python # -*- coding:utf-8 _*- """ @version: 0.0.1 @author: ShenTuZ ...

  3. 深度学习数据集制作工作_创建我的第一个深度学习+数据科学工作站

    深度学习数据集制作工作 My Home Setup 我的家庭设置 Creating my workstation has been a dream for me, if nothing else. 创 ...

  4. 深度学习数据集标注工具、图像语料数据库等资源

    NLP+VS︱深度学习数据集标注工具.图像语料数据库.实验室搜索ing... 2017年02月07日 12:12:01 阅读数:27032 ~~因为不太会使用opencv.matlab工具,所以在找一 ...

  5. NLP+VS︱深度学习数据集标注工具、图像语料数据库、实验室搜索ing..

    一.NLP标注工具 来源:<构想:中文文本标注工具(附开源文本标注工具列表)> Chinese-Annotator   来源:https://github.com/crownpku/Chi ...

  6. NLP+VS︱深度学习数据集标注工具、图像语料数据库、实验室搜索ing....

    from: https://blog.csdn.net/sinat_26917383/article/details/54908389 一.NLP标注工具 来源:<构想:中文文本标注工具(附开源 ...

  7. 【图像标注】NLP+VS︱深度学习数据集标注工具、图像语料数据库、实验室搜索ing

    因为不太会使用opencv.matlab工具,所以在找一些比较简单的工具.  .  . 一.NLP标注工具BRAT BRAT是一个基于web的文本标注工具,主要用于对文本的结构化标注,用BRAT生成的 ...

  8. 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening

     深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening 主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通 ...

  9. 深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器

     深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器 UFLDL即(unsupervised feature learning & deep learning).这是斯坦福网站上的一篇 ...

  10. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐

    人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐 本教程源代码目录在book/recommender_system,初次使用请您参考Book文档使用说明. 说明: 硬件 ...

最新文章

  1. java.sql.date格式化_如何将java.sql.date格式化为这种格式:“MM-dd-yyyy”?
  2. halcon算子盘点:Chapter 18:元组Tuple
  3. 一个菜鸟程序员的游戏开发心得
  4. spring学习(46):spring的单例bean
  5. 对未标记为可安全执行的脚本_三、??XSS跨站脚本攻击
  6. 使用Linux命令行测试网速
  7. 用matlab开发软件开发,Matlab软件应用与开发new
  8. python_numpy_中的matrix与array的区别
  9. 起II6.0中使用windows2003自带的虚拟主机管理系统
  10. 21 , CSS 构造模型
  11. Matlab中的两种曲线平滑函数
  12. Java 拾遗补阙 ----- 深入解析多态
  13. 二维列表的转置(行列互换,首行变首列,尾行变尾列)
  14. 北京编程女子图鉴,谁说女子不如男
  15. 使用 Python 生成类数字字母混合验证码图片
  16. 管理Linux系统中的进程
  17. 【227】基本计算器II--无括号的加减乘除计算器
  18. 多元线性回归与高斯误差模型的同源关系
  19. 本特利涡流式趋近式proximity位移传感器
  20. js+css简单购物车页面模板

热门文章

  1. SSD的TRIM原理及实践
  2. Vivado synth 8-439 module““not found问题绝对解决,超简单,想解决问题就看这里。
  3. 今天吃什么随机网页_灵魂拷问:今天在西昌你想吃什么?
  4. SAP系统里批次双计量单位的实现
  5. 回首来时路——李天岩
  6. 安科瑞电气系统Acrel-2000在数据中心机房的应用及产品选型
  7. linux u盘保护,如何解除U盘写保护状态?
  8. 论手机网站(wap)网页广告防屏蔽的方法
  9. Hortonworks的开源框架SHC的使用(一)
  10. [计算机网络】【网络设备】网关冗余和负载平衡 (HSRP)