美文网首页
tensorflow深度学习(一)

tensorflow深度学习(一)

作者: baihualinxin | 来源:发表于2018-04-25 14:42 被阅读0次

    我们公司需要用到深度学习 来识别一些东西,所有研究了一下 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深度学习(一)

          本文链接:https://www.haomeiwen.com/subject/ktfylftx.html