深度学习(tensorflow) —— 自己数据集读取opencv
https://www.cnblogs.com/WSX1994/p/10954925.html (使用tfrecords创建自己数据集)
本节主要是采用矩阵读取方式
先来看一下我们的目录:
dataset1 和creat_dataset.py 属于同一目录 mergeImg1 和mergeImg2 为Dataset1的两子目录(两类为例子)目录中存储图像等文件
核心文件
creat_dataset.py 文件如下
#来生成训练集和测试集的矩阵
import cv2 as cv
import numpy as np
import os dataset_path = ["mergeImg1","mergeImg2"] #这里为了增加限制,只读取以下俩个(防止有其他文件夹 干扰)
#有效的path
def gain_data(path):
train_data = [];train_label = []
test_data = [];test_label = []
category = 0
for i in os.listdir(path): #dataset 目录下的两类
if i in dataset_path: #读取指定的文件夹 因为会存在其他文件夹
filepath = os.path.join(path,i) #目录下/子目录
if os.path.isdir(filepath):
for file in os.listdir(filepath): #目录下的文件
filename = os.path.join(filepath,file)
img = cv.imread(filename) #打开文件
img = cv.resize(img,(160,160)) #将图片进行大小设置
train_data.append(img)
train_label.append(category) #存储对应标签
category = category + 1 #存储类别变更 (0 , 1)
data = np.array(train_data)
label = train_label
cv.destroyAllWindows()
return data,label #标签转化函数 (0,0,1,1) --> ([1,0],[1,0],[0,1],[0,1])
def label_cov(train_label):
result = []
calss_num = len(set(train_label))
label = [0] * calss_num
for i in train_label:
label[i-1] = 1
result.append(label)
label = [0] * calss_num
result = np.array(result)
return result #将数据x 和标签y 进行随机排列(打乱) 注x和y 应该为矩阵类型
def shuffle_data(x , y):
num_example = x.shape[0]
arr = np.arange(num_example)
np.random.shuffle(arr)
data_train = x[arr]
label_train = y[arr]
return data_train,label_train def gain_data1(path): #对于数据集1 进行获取
train_data,train_label = gain_data(os.path.join(path,"Dataset1"))
lab = label_cov(train_label) #标签转换
lab = np.array(lab)
train_data, lab = shuffle_data(train_data, lab) #随机打乱
return train_data,lab def gain_data2(path): #对于数据集2 获取
train_data,train_label = gain_data(os.path.join(path,"Dataset2"))
lab = label_cov(train_label) #标签转换 keras中不需要 tf需要
lab = np.array(lab)
train_data, lab = shuffle_data(train_data, lab) #随机打乱
return train_data,lab a,b= gain_data1("目录") #a,b返回的就是我们需要的数据 可以直接传入神经网络中
如果大家有什么不明白的可以与我交流。 读取数据所使用的函数都十分简单。
深度学习(tensorflow) —— 自己数据集读取opencv的更多相关文章
- 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别
深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...
- 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识
深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...
- 深度学习Tensorflow相关书籍推荐和PDF下载
深度学习Tensorflow相关书籍推荐和PDF下载 baihualinxin关注 32018.03.28 10:46:16字数 481阅读 22,673 1.机器学习入门经典<统计学习方法&g ...
- AI学习---深度学习&TensorFlow安装
深度学习 深度学习学习目标: 1. TensorFlow框架的使用 2. 数据读取(解决大数据下的IO操作) + 神经网络基础 3. 卷积神经网络的学习 + 验证码识别的案例 机器学习与深度学 ...
- 深度学习Tensorflow生产环境部署(上·环境准备篇)
最近在研究Tensorflow Serving生产环境部署,尤其是在做服务器GPU环境部署时,遇到了不少坑.特意总结一下,当做前车之鉴. 1 系统背景 系统是ubuntu16.04 ubuntu@ub ...
- 深度学习---tensorflow简介
个core可以有不同的代码路径.对于反向传播算法来说,基本计算就是矩阵向量乘法,对一个向量应用激活函数这样的向量化指令,而不像在传统的代码里会有很多if-else这样的逻辑判断,所以使用GPU加速非常 ...
- 吴裕雄--天生自然 神经网络人工智能项目:基于深度学习TENSORFLOW框架的图像分类与目标跟踪报告(续四)
2. 神经网络的搭建以及迁移学习的测试 7.项目总结 通过本次水果图片卷积池化全连接试验分类项目的实践,我对卷积.池化.全连接等相关的理论的理解更加全面和清晰了.试验主要采用python高级编程语言的 ...
- 人工智能新手入门学习路线和学习资源合集(含AI综述/python/机器学习/深度学习/tensorflow)
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] 1. 分享个人对于人工智能领域的算法综述:如果你想开始学习算法,不妨先了解人工 ...
- 深度学习tensorflow实战笔记(1)全连接神经网络(FCN)训练自己的数据(从txt文件中读取)
1.准备数据 把数据放进txt文件中(数据量大的话,就写一段程序自己把数据自动的写入txt文件中,任何语言都能实现),数据之间用逗号隔开,最后一列标注数据的标签(用于分类),比如0,1.每一行表示一个 ...
随机推荐
- KVM下raw和qcow2格式磁盘文件IO测试
1. Host OS 环境 CPU: Intel Xeon E5620 2.40GHz MEM: 16GB DISK: 500GB SATA OS: CentOS5.7 64bit 2. Guest ...
- Python binascii
Python binascii模块 Python binascii模块 用处 包含的函数 相关内置函数 code使用示例 转载请标明出处(http://blog.csdn.net/lis_12/art ...
- Linux环境(Centos) 安装mysql
MariaDB是mysql的开源分支,自从mysql被oracle收购商业化之后,mysql之父在mysql5.5开源的版本的基础上重新开了一个分支,centos也把MariaDB作为mysql的默认 ...
- C++获取字符串长度数
strlen,获取到的是字节数,中文占两个字节. 如何获取字符数,无论中文英文,标点符号,都按一个字符计算呢?这里提供其中的一个方法.那就是通过MultiByteToWideChar函数,将CStri ...
- jenkins+maven+svn实现简单的一键发布
前言 在安装之前,我想说明一下本文的目的,jenkins的一款持续集成工具, 它可以做的事情很多,其中一个主要的功能就是简化部署流程 回想一下我们的发布流程: ...
- Yii项目开发总结
学习Yii很久了,一直做的是小案例,自以为学的还不错.直到最近用Yii开发了一个非常简单的CMS,一路下来,磕磕绊绊,才知自己不足.加上最近正学习着偏架构方面的知识.特此总结一下.小白经验,大神轻拍, ...
- javascript总结37:DOM:innerText 和 innerHTML
innerText 和 innerHTML 作用: 给双标签的元素设置内容/获取双标签里面的内容 不同点: innerText 只是用于获取文本或设置文本 innerHTML 不仅可以用于设置/获取文 ...
- opencv常用函数备忘
//显示图片 IplImage * src = cvLoadImage("xx.JPG"); cvNamedWindow(); cvShowImage("show_ima ...
- C# 生成dll文件 并导入使用
首先 在unity创建一个脚本 并编写内容,其中需要调用的方法.变量要公有化(也可以直接新建cs文件用编译器打开编译,但要先导入UnityEngine.dll). 然后,复制脚本关闭unity,在外界 ...
- Animation(动画效果)
Ctrl+6打开Animation窗口.选择物体,点击录制,保存录制文件后即为给该物体添加了动画效果. Animation可以修改某时间点的物体位置.大小.材质球上的所有属性.碰撞器等等. 可以通过修 ...
