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