tensorflow深度学习(一)

我们公司需要用到深度学习 来识别一些东西,所有研究了一下 tensorflow,现在的代码是python,我需要生产数据集,需要移植到xcode做识别。

 xcode已经用到opencv在做图像处理。

系统

用的Mac OS high Sierra 10.13.1

Anaconda Navigator 1.8.1

python 3.6

spyder 3.2.8

不会搭建平台请到百度自行学习。

需要引用的头文件

import tensorflow as tf

import numpy as np

import os


train_dir = '/Users/Desktop/cd/cd/Far_1/'  #主要说下这个文件夹里边的图片 分成两类 一类是带image的图片名称, 一类是不带。。  图片的名称叫什么都行,学习特征两类,多类,都可以,需要自行修改代码。我是参考识别猫和狗的代码。。

def get_files(file_dir):

    Args:

        file_dir: file directory

    Returns:

        list of images and labels

    car = []

    label_car = []

    not_car = []

    label_not = []

    for file in os.listdir(file_dir):

        name = file.split(sep='.')

        name_car=name[0]

        name_car=name_car[0:5]

        if name_car == 'image':

          car.append(file_dir + file)

          label_car.append(0)

        else:

            not_car.append(file_dir + file)

            label_not.append(1)

#    print('nThere are %d car' %len(car))

    print('There are %d car\nThere are %d not_car' %(len(car), len(not_car)))

    image_list = np.hstack((car, not_car))

    label_list = np.hstack((label_car, label_not))

#    image_list = np.hstack((car))

#    label_list = np.hstack((label_car))

    temp = np.array([image_list, label_list])

    temp = temp.transpose()

    np.random.shuffle(temp)


    image_list = list(temp[:, 0])

    label_list = list(temp[:, 1])

    label_list = [int(i) for i in label_list]



    return image_list, label_list


def get_batch(image, label, image_W, image_H, batch_size, capacity):

    image = tf.cast(image, tf.string)

    label = tf.cast(label, tf.int32)

    # make an input queue

    input_queue = tf.train.slice_input_producer([image, label])


    label = input_queue[1]

    image_contents = tf.read_file(input_queue[0])

#我用的 png的图片,在tensorflow 里边有gif,jpeg,png等。需要用什么类型的图片就改是什么类型的,不然会报错

    #image = tf.image.decode_jpeg(image_contents, channels=3)

    image = tf.image.decode_png(image_contents, channels=3)

#resize_image_with_crop_or_pad 这个方法是处理图像的大小的。如果图片的大小都一样的情况下,剪裁或填充处理,会根据原图像的尺寸和指定的目标图像的尺寸选择剪裁还是填充,如果原图像尺寸大于目标图像尺寸,则在中心位置剪裁,反之则用黑色像素填充。

    image = tf.image.resize_image_with_crop_or_pad(image, image_W, image_H)

    image = tf.image.per_image_standardization(image)


    image_batch, label_batch = tf.train.batch([image, label],

                                                batch_size= batch_size,

                                                num_threads= 64,

                                                capacity = capacity)

    label_batch = tf.reshape(label_batch, [batch_size])

    image_batch = tf.cast(image_batch, tf.float32)


    return image_batch, label_batch

你可能感兴趣的:(tensorflow深度学习(一))