图像分类项目(一):制作自己的TFRecord数据集,读取并显示(详细图解)

自定义数据集、模型,用QT、c++调用tensorflow编译好的pb模型的图像分类项目
第一步:本文
第二步:读取自定义的TFRecord数据集,训练卷积网络并保存pb模型
第三步:opencv读取自定义的pb模型,自定义softmax,argmax函数输出图像分类结果
流程图
在这里插入图片描述
参考如下:
Windows下用c++来调用tensorflow训练好的模型

flower_photos数据集

flower数据集下载
flower_photos文件夹包含了5个文件夹,每一个子文件夹的名称为一种花的名称,代表了不同的类别(daisy雏菊:633张,dandelion蒲公英:898张,roses玫瑰:641张,sunflowers向日葵:699张,tulips郁金香:799张)。平均每一种花都有734张图片,每一张图片都是RGB色彩模式的,大小也不相同。这里用flower数据集可以模拟实际项目。
在这里插入图片描述

保存为tfrecord文件

注意flower_photos文件夹下的txt文件要删掉,不然会报错。
1.get_files函数得到的实际是图片的文件名列表和标签列表。如果不打乱排列的话,最后划分数据集和验证集的时候会发现是按顺序划分的。这里我们为了保证数据集和验证集的分布,开始时先按比例划分每个文件夹。比如5个文件夹,每个文件夹100张图,我们先每个文件夹取80张,5个80张合起来就是训练集,5个20张合起来就是验证集。
2.image2tfrecord中可以看到按文件名读取图像后,图像resize大小为100了。
3.最后保存的训练集和验证集的名称分别是flower_tra100.tfrecords和flower_val100.tfrecords。
我们后面可能会用不同的模型训练,输入的张量大小也不尽相同。例如有的模型要求输入图像是224x224x3的,那我们这里在image2tfrecord函数中图像resize大小改成224x224,生成的文件名改成flower_tra224.tfrecords和flower_val224.tfrecords。生成的文件可以重复使用,适应不同的需求。

"""
这里的图片是采用的花朵集的图片 ,先将图片转化成tfrecorder格式。
这里有5种花朵的图片,每种花朵都放在同一个文件夹下
"""
import os
import numpy as np
from PIL import Image
import tensorflow as tf

def get_files(file_dir, ratio = 0.8):
    """得到训练集和验证集的图像列表和标签列表,默认划分比例为0.8"""
    daisy = []
    label_daisy = []
    dandelion = []
    label_dandelion = []
    roses = []
    label_roses = []
    sunflowers = []
    label_sunflowers = []
    tulips = []
    label_tulips = []
    for file in os.listdir(file_dir):
        pp=os.path.join(file_dir,file)
        for pic in os.listdir(pp):
            pic_path=os.path.join(pp,pic)
            if file=="daisy":
                daisy.append(pic_path)#读取所在位置名称
                label_daisy.append(0)#labels标签为0
            elif file=="dandelion":
                dandelion.append(pic_path)#读取所在位置名称
                label_dandelion.append(1)#labels标签为1
            elif file=="roses":
                roses.append(pic_path)#读取所在位置名称
                label_roses.append(2)#labels标签为2
            elif file=="sunflowers":
                sunflowers.append(pic_path)#读取所在位置名称
                label_sunflowers.append(3)#labels标签为3
            elif file=="tulips":
                tulips.append(pic_path)#读取所在位置名称
                label_tulips.append
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值