• 大小: 12.57MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-13
  • 语言: 其他
  • 标签: TensorFlow  python  

资源简介

这是一个图像识别项目,基于tensorflow,现有的CNN网络可以识别四种花的种类。适合新手对使用tensorflow进行一个完整的图像识别过程有一个大致轮廓。项目包括对数据集的处理,读取数据,CNN网络的定义,训练过程,还实现了一个GUI界面用于使用训练好的网络。
包含3000多张,4种不同花的照片,用cpu训练大概半小时,效果不错,利用好自己可以加以改进!

资源截图

代码片段和文件信息

# 将原始图片转换成需要的大小,并将其保存
# ========================================================================================
import os
import tensorflow as tf
from PIL import Image

# 原始图片的存储位置
orig_picture = ‘D:/ML/flower/flower_photos/‘

# 生成图片的存储位置
gen_picture = ‘D:/ML/flower/input_data/‘

# 需要的识别类型
classes = {‘dandelion‘ ‘roses‘ ‘sunflowers‘‘tulips‘}

# 样本总数
num_samples = 4000


# 制作TFRecords数据
def create_record():
    writer = tf.python_io.TFRecordWriter(“flower_train.tfrecords“)
    for index name in enumerate(classes):
        class_path = orig_picture + “/“ + name + “/“
        for img_name in os.listdir(class_path):
            img_path = class_path + img_name
            img = Image.open(img_path)
            img = img.resize((64 64))  # 设置需要转换的图片大小
            img_raw = img.tobytes()  # 将图片转化为原生bytes
            print(index img_raw)
            example = tf.train.Example(
                features=tf.train.Features(feature={
                    “label“: tf.train.Feature(int64_list=tf.train.Int64List(value=[index]))
                    ‘img_raw‘: tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw]))
                }))
            writer.write(example.SerializeToString())
    writer.close()


# =======================================================================================
def read_and_decode(filename):
    # 创建文件队列不限读取的数量
    filename_queue = tf.train.string_input_producer([filename])
    # create a reader from file queue
    reader = tf.TFRecordReader()
    # reader从文件队列中读入一个序列化的样本
    _ serialized_example = reader.read(filename_queue)
    # get feature from serialized example
    # 解析符号化的样本
    features = tf.parse_single_example(
        serialized_example
        features={
            ‘label‘: tf.FixedLenFeature([] tf.int64)
            ‘img_raw‘: tf.FixedLenFeature([] tf.string)
        })
    label = features[‘label‘]
    img = features[‘img_raw‘]
    img = tf.decode_raw(img tf.uint8)
    img = tf.reshape(img [64 64 3])
    # img = tf.cast(img tf.float32) * (1. / 255) - 0.5
    label = tf.cast(label tf.int32)
    return img label


# =======================================================================================
if __name__ == ‘__main__‘:
    create_record()
    batch = read_and_decode(‘flower_train.tfrecords‘)
    init_op = tf.group(tf.global_variables_initializer() tf.local_variables_initializer())

    with tf.Session() as sess:  # 开始一个会话
        sess.run(init_op)
        coord = tf.train.Coordinator()
        threads = tf.train.start_queue_runners(coord=coord)

        for i in range(num_samples):
            example lab = sess.run(batch)  # 在会话中取出image和label
            img = Image.fromarray(example ‘RGB‘)  # 这里Image是之前提到的
            img.save(gen_picture + ‘/‘ + str(i) + ‘samples‘ + str(lab) + ‘.jpg‘)  # 存下图片;注意cwd后边加上‘/’
            print(example lab)
        coord.request_stop()
        coord.join(threads)
        sess.close()

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-03-10 23:00  .idea\
     文件         197  2020-03-10 16:31  .idea\misc.xml
     文件         270  2020-02-23 03:58  .idea\modules.xml
     文件         186  2020-02-23 03:58  .idea\other.xml
     文件         443  2020-03-10 16:31  .idea\untitled9.iml
     文件       26950  2020-03-10 23:00  .idea\workspace.xml
     目录           0  2020-03-10 18:38  __pycache__\
     文件        2601  2020-02-23 03:58  __pycache__\input_data.cpython-35.pyc
     文件        2268  2020-03-10 17:45  __pycache__\input_data.cpython-36.pyc
     文件        3420  2020-02-23 03:58  __pycache__\model.cpython-35.pyc
     文件        2842  2020-03-10 17:45  __pycache__\model.cpython-36.pyc
     文件        2316  2020-02-23 03:58  __pycache__\test.cpython-35.pyc
     文件        2045  2020-03-10 18:38  __pycache__\test.cpython-36.pyc
     文件        3223  2020-02-23 03:58  create record.py
     目录           0  2020-03-10 23:03  flower\
     目录           0  2020-03-10 17:05  flower\input_data\
     目录           0  2020-03-10 17:05  flower\input_data\dandelion\
     文件        1717  2018-04-12 15:44  flower\input_data\dandelion\1440samples2.jpg
     文件        1706  2018-04-12 15:44  flower\input_data\dandelion\1441samples2.jpg
     文件        1770  2018-04-12 15:44  flower\input_data\dandelion\1442samples2.jpg
     文件        1897  2018-04-12 15:44  flower\input_data\dandelion\1443samples2.jpg
     文件        2065  2018-04-12 15:44  flower\input_data\dandelion\1444samples2.jpg
     文件        1920  2018-04-12 15:44  flower\input_data\dandelion\1445samples2.jpg
     文件        1967  2018-04-12 15:44  flower\input_data\dandelion\1446samples2.jpg
     文件        2245  2018-04-12 15:44  flower\input_data\dandelion\1447samples2.jpg
     文件        2359  2018-04-12 15:44  flower\input_data\dandelion\1448samples2.jpg
     文件        2281  2018-04-12 15:44  flower\input_data\dandelion\1449samples2.jpg
     文件        1621  2018-04-12 15:44  flower\input_data\dandelion\1450samples2.jpg
     文件        1870  2018-04-12 15:44  flower\input_data\dandelion\1451samples2.jpg
     文件        2618  2018-04-12 15:44  flower\input_data\dandelion\1452samples2.jpg
     文件        1284  2018-04-12 15:44  flower\input_data\dandelion\1453samples2.jpg
............此处省略3037个文件信息

评论

共有 条评论