坐立不安
青蛙抓不到虫子
> Hello
跑了tf 的minist 训练感觉蛮有意思的,然后试了下 TensorFlow 里面有个项目叫 camera,可以进行物体识别。玩这个项目首先你得 下载tf 项目 在 contrib 文件下找到 ios_examples 就可以看到了。
当然现在是运行不起来的,你还需要3个文件。
libtensorflow-core.a 这个需要自己编译
imagenet_comp_graph_label_strings.txt 这个是文本数据,用来识别物体时显示出对应的文字。
tensorflow_inception_graph.pb 这个是 Google 训练好的模型。
有了这三个添加到工程中你就可以运行了。 ## demo
> -(void)viewDidLoad {
[super viewDidLoad];
square = [[UIImage imageNamed:@"squarePNG"] retain];
synth = [[AVSpeechSynthesizer alloc] init];//文本语音转换
labelLayers = [[NSMutableArray alloc] init];
oldPredictionValues = [[NSMutableDictionary alloc] init]; //载入文本和模型文件
tensorflow::Status load_status;//载入tf
if (model_uses_memory_mapping) {//如果没有模型
load_status = LoadMemoryMappedModel(//载入内存映射模型
model_file_name, model_file_type, &tf_session, &tf_memmapped_env
);
}else {
load_status = LoadModel(model_file_name, model_file_type, &tf_session);
}
if (!load_status.ok()) { LOG(FATAL) << "Couldn't load model: " << load_status; } >tensorflow::Status labels_status = LoadLabels(labels_file_name, labels_file_type, &labels);
if (!labels_status.ok()) {
LOG(FATAL) << "Couldn't load labels: " << labels_status;
} //启动图像采集
[self setupAVCapture];
} NHJ010901
其实它的整个过程,从采集到图像,载入到训练好的模型中。利用多重卷积神经网络提取出特征点,然后逐步分析出是杯子的概率多少,是狗的概率多少。如果杯子的概率高,文本直接转成语音。
当然里面卷积神经是怎么操作的,我们来看看 tf mnist 数据集,我会逐步分析出它们是怎么运作的。
首先我们要加入训练好的 mnist 数据集,这个数据集里面都是谷歌的训练手写数字,每张图片都是28*28像素点。我们在处理的过程中,会将图片展开成 28 * 28 = 784 的向量。用这个方式来表达这张图片。
创建计算图,在session 中启动它,它随后会用 NumPy 科学计算库来完成计算。
然后我们通过为输入图像和目标输出类别创建节点,来开始构建计算图。定义好权重和偏置量。利用 softmax 函数计算概率。还得用 reduce_sum 函数指定最小误差的损失函数,将向量求和。关于这些函数,我也没有太深入,内部是怎么运作的,抽空研究下。
然后就可以开始训练模型来,设置步长,用最速下降法。防止样本重复过拟合,增加了迭代的效率。
每次加入50 个样本,迭代10000次,然后评估模型,输出打印结果。 当然我用的 cpu 跑的,有条件的可以用 gpu跑。哈哈。
91%的准确率。后面我又增加了多层神经网络,提高到了93%,但是没达到官网 97%。
具体可以去看 [MNIST](http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_pros.html) 这里面有详细的介绍,可以让你初步了解关于 tf 的运作过程。