识别图像中的物体_AI开源二十:Tensorflow 图像分类/物体识别

入门项目:图像分类/物体识别

图像分类,也就是训练系统识别猫猫狗狗,或者车道、海滩、天际线等场景。计算机视觉是一个范围巨大的领域,从面部识别到情感识别,甚至可以进行视觉气体泄漏检测。虽然实现流程各异,但底层系统是相通的。

db5b71eb4a3f74e752cd9e8dc912d62f.gif

有作者创建了一个TensorFlow GitHub库,其中包括两个相互关联的部分。第一部分:能够识别1000个对象的TensorFlow图像分类器。第二部分:创建并训练一个全新的图像分类器。

Google的TensorFlow图像识别系统是目前最准确的图像分类软件。所谓图像识别,就是对图片中的内容进行识别,然而这并非对任意图片都能识别。

只有被训练过的对象,系统才能识别。例如,我们用三个类型训练分类器:猫、狗和牛。三个分类器只能识别相应类别中的一个。如果给出一张骆驼的图片会怎样?图片仍会通过一个分类器,但是置信率会非常的低。

如何快速创建一个TensorFlow图像分类器?只需要简单的三步。当然前提是你已经装好了TensorFlow,而且懂编程、会用Python。

cc399929d4dbc39219471191671e9662.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模型。一旦你有了模型,就能开始用来进行分类处理。