TensorFlow入门,零基础到精通只需3分钟!
TensorFlow是Google的开源深度学习库,你可以使用这个框架以及Python编程语言,构建大量基于机器学习的应用程序。而且还有很多人把TensorFlow构建的应用程序或者其他框架,开源发布到GitHub上。2015年11月9日,Google正式发布并开源TensorFlow,目前官方正式版本为TensorFlow 1.2。下面这段视频,是当年TensorFlow刚发布时,Google发布的一个官方介绍短片,Jeff Dean等出镜讲述。
![](https://img.haomeiwen.com/i12990982/c007e398cdf3c6c6.jpeg)
入门项目:图像分类/物体识别
图像分类,也就是训练系统识别猫猫狗狗,或者车道、海滩、天际线等场景。计算机视觉是一个范围巨大的领域,从面部识别到情感识别,甚至可以进行视觉气体泄漏检测。虽然实现流程各异,但底层系统是相通的。
![](https://img.haomeiwen.com/i12990982/c3046e4c423e3243.gif)
有作者创建了一个TensorFlow GitHub库,其中包括两个相互关联的部分。第一部分:能够识别1000个对象的TensorFlow图像分类器。第二部分:创建并训练一个全新的图像分类器。
Google的TensorFlow图像识别系统是目前最准确的图像分类软件。所谓图像识别,就是对图片中的内容进行识别,然而这并非对任意图片都能识别。
只有被训练过的对象,系统才能识别。例如,我们用三个类型训练分类器:猫、狗和牛。三个分类器只能识别相应类别中的一个。如果给出一张骆驼的图片会怎样?图片仍会通过一个分类器,但是置信率会非常的低。
如何快速创建一个TensorFlow图像分类器?只需要简单的三步。当然前提是你已经装好了TensorFlow,而且懂编程、会用Python。
![](https://img.haomeiwen.com/i12990982/8ffb9277c755b9fb.gif)
第一步:下载
下载预训练的模型、图片和脚本。使用如下命令即可。
git clone https://github.com/akshaypai/tfClassifiercd tfClassifier
第二步:运行脚本找到最佳预测
给定一个图片,运行脚本来进行分类。默认情况下,会显示最佳预测。
Python classifier.py --image_file file_path_to_image
为了获得top n分类,可以使用如下参数。
Python classifier.py --image_file file_path_to_image --num_top_predictions number_of_top_results
示例:比方我们给出这样一张图片。
python classifier.py --image_file ~/Pictures/fruit.jpgpomegranate (score = 0.98216)
分类器表示:这是石榴,准确率98%。
第三步:运行脚本获得top n识别分类
现在我们尝试给出一个具有更多属性的图像,如下图的房子。
python classifier.py --image_file ~/Pictures/house.jpg --num_top_predictions 5picket fence, paling (score = 0.95750)worm fence, snake fence, snake-rail fence, Virginia fence (score = 0.03615)beacon, lighthouse, beacon light, pharos (score = 0.00018)boathouse (score = 0.00013)patio, terrace (score = 0.00007)
从上面的结果可以看出,分类器以95%的可能性预测图片中有一个栅栏,另外分类器还发现了其他围栏、庭院、露台等。
到此为止,你已经学到如何设置TensorFlow图像识别系统。虽然,这个系统被限制在预训练模型的几个分类器之间。
那么我们接下来看看第二部分,如何增加一些新的分类器。
也是三个步骤。
第一步:下载预训练模型以及所需脚本
我已经把全部所需的文件整合进一个git仓库里。使用下面的命令可以下载。
git clone https://github.com/akshaypai/tfClassifiercd tfClassifier
第二步:设置图像文件夹
这个步骤用于设置文件夹结构,以便数据流图可以简单地拾取分类。假设,你想重新训练五种新的花朵分类器:玫瑰、郁金香、蒲公英、五月花和万寿菊,那么需要如下的三个步骤来创建相应的文件夹结构:
1、为每种花型创建一个文件夹,文件夹的名称就是类型的名称
2、将花的所有图像添加到各自的文件夹中,所有的玫瑰放入玫瑰花文件夹
3、将所有的文件夹,添加到一个父文件夹中,可以命名为:花
然后我们就得到如下的结构:
~/flowers~/flowers/roses/img1.jpg~/flowers/roses/img2.jpg...~/flowers/tulips/tulips_img1.jpg~/flowers/tulips/tulips_img2.jpg~/flowers/tulips/tulips_img3.jpg...
这样,文件夹结构已经OK了。
第三步:运行预训练脚本
使用如下命令运行脚本。
python retrain.py --model_dir ./inception --image_dir ~/flowers --output_graph ./output --how_many_training_steps 500
部分命令行参数:
-model_dir这个参数给出了预训练模型的位置。
-image_dir在步骤二中创建的文件夹路径
-output_graph存储新训练图的位置
-how_many_training_steps这代表要执行的迭代次数,默认为4000
以上就是如何重新训练一个TensorFlow Inception模型。一旦你有了模型,就能开始用来进行分类处理。那么如何来动手实践一下自己的掌握程度呢?可以试试谷歌的AIY视觉套件——AIY Vision Kit。
![](https://img.haomeiwen.com/i12990982/f5b24f27316a65a9.gif)
AIY Vision Kit 是AIY Projects的第二个产品。谷歌AIY Vision Kit(视觉套件)可以处理图像识别和计算机视觉, 支持离线识别上千种常见物体(动物、植物)以及人脸、面部表情等。AIY Vision Kit包括纸板外壳、按钮、扬声器、以及Raspberry Pi Zero WH,Raspberry Pi 相机,SD卡等等。这款酷炫的盒子套件的计算机视觉功能均由附带的Vision Bonnet板控制。
VisionBonnet板是该项目的核心,采用Intel Movidius MA2450芯片。 这种低功率视觉处理单元能够运行神经网络模型来识别物体。
![](https://img.haomeiwen.com/i12990982/1f3662f936a0def6.jpeg)
附带的软件运行三个基于TensorFlow的神经网络。 其中一个基于谷歌的MobileNets平台,能够识别超过1,000个日常物品。 第二个可以在图像中发现面部和表情。 最后一个是专门用于识别猫,狗和人的神经网络。 Google还为AIY Vision创建了一个工具,允许您使用TensorFlow训练新模型。 该套件支持Python API以进行基本更改,例如更改按钮LED的颜色,调整扬声器音量等。