有些人会使用IBM Watson来建立自己的图片识别系统,但是Watson虽然使用方便,但其定制化的能力就比较弱了。对于希望能给构建的图像识别系统增加更多灵活性的同学来说。TensorFlow是个不错的选择。
到底选哪个合适呢?
Watson和Tensorflow没法直接比较。Watson是一系列已经构建好的API;而Tensorflow是一个library。如果你知道怎么用的话,可以根据项目的需求,做出各种各样的调整。甚至做一个Tensorflow版的水货Watson。
下面的案例,就是我们通过利用谷歌的Inception v3 network来做一个翻版。
在开始之前,你需要先安装一个Docker。
Docker地址——https://www.docker.com/products/docker-toolbox
然后,创建一个 tf_files的文件夹 ,作为项目的主文件目录
在 tf_files下面,再创建test_set 和 training_set两个文件夹
然后在training_set 里创建maul 和 vader这两个需要识别的图片分类。
将下载的图片文件都复制到这两个分类文件夹里
目录结构
然后打开docker的终端
用cd命令进入tf_files目录下
输入这条命令
下载下面这个Python Script
有了这个Script你之后就可以假装是个码农了
curl -L https://goo.gl/tx3dqg > label_image.py
然后启动 docker
docker run -it -v $PWD:/tf_files gcr.io/tensorflow/tensorflow:latest-devel
Tips
Docker run命令介绍
http://www.lupaworld.com/article-250439-1.html
到此准备工作就结束了
可以开始训练模型了
惊喜不惊喜?
意外不意外?
重新训练
再用cd命令
切换到 /tensorflow文件目录下
把最新的内容更新
cd /tensorflow git pull
更新完成后,运行一下命令
重新训练模型
python tensorflow/examples/image_retraining/retrain.py \ --bottleneck_dir=/tf_files/bottlenecks \ --how_many_training_steps 500 \ --model_dir=/tf_files/inception \ --output_graph=/tf_files/retrained_graph.pb \ --output_labels=/tf_files/retrained_labels.txt \ --image_dir /tf_files/training_set
在机器正在忙着训练的时候,你要是等不及,可以玩一局王者荣耀,等你打完,模型应该训练好了
然后你就可以运行刚才下载的Python Script来进行测试了
python /tf_files/label_image.py /tf_files/test_set/my_test_photo.jpg
如果没有什么问题,
你应该会得到差不多这样的反馈
maul (score = 0.99071)
vader (score = 0.00929)
请注意
Tensorflow返回的数值是经过标准化之后的数值
他们相加等于1
所以这数字对于某些情况下
可能会误导你
其实实际并没有数值显示的那么高
结论
总的来说,Watson用起来比Tensorflow要简单得多。如果你有钱,项目又不复杂,尽量用Watson。
但是如果想要骗到妹子,让她觉得你不仅仅会修电脑,或者在不懂行的投资人面前装装逼,那Tensorflow就太适合了。
用Tensorflow搭建的分类器可以放在你自己的服务器或者本机上,这样就不用付服务器费用了,以尽可能小的成本装逼是我的一贯行为准则。