想尝试搭建图像辨认系统?这里有份TensorFlow速成教程
作者头像
  • 立冬
  • 2020-07-27 17:27:30 0

图像分类与深度学习:用TensorFlow快速实现

从我们见到的各种图像识别软件来看,机器确实能够识别人脸、猫、狗、花卉、各类车辆等日常生活中的常见物体。但是,这有一个前提:你需要使用这些类别的图像对机器进行训练。

具体来说,这应该被称为“图像分类”。构建一个图像分类器其实并不复杂。最近,技术博客Source Dexter发布了一篇文章,介绍了如何利用TensorFlow快速实现图像分类。

在正式讨论之前,我们需要了解一些基本概念。

图像分类是如何实现的?

当向一个已经训练好的系统输入一张图像时,系统会输出一组概率值,每个训练过的类别对应一个概率值。系统会将图像归类到概率最高的那个类别。例如,如果你训练了一个系统来识别猫和狗,那么当你输入一张图像时,系统会给出这张图像属于猫的概率和属于狗的概率。

然而,这种分类器有一个缺陷:如果输入的是一张蛇的图片,它只能判断这张图片属于猫或狗的概率哪个更高。

神经网络与深度神经网络

简而言之,神经网络是由多个计算单元组成的网络,可以从提供的数据中进行学习。如果将多层神经网络堆叠在一起,就形成了深度神经网络。建立、训练和运行深度神经网络的过程被称为深度学习。

此前,量子位曾发布过一篇关于包括神经网络在内的《25个深度学习基础概念》的文章,感兴趣的话可以查阅。

TensorFlow简介

TensorFlow是一个数学库,同时也是深度学习领域应用最广泛的开源框架之一,由Google开发。在这篇文章中,我们将使用TensorFlow的预训练模型来设置我们的分类器。

要设置这个分类器,有几个先决条件: - 你的计算机上已安装并配置好TensorFlow; - 你熟悉Python编程。

从头开始训练一个深度学习分类器可能需要数周甚至数月的时间,这取决于你的硬件配置。为了避免这种麻烦,我们可以使用预先训练好的模型。TensorFlow的预训练模型通常可以识别大约1000种不同的物体。

接下来,我们开始设置自己的图像分类器:

第一步:下载预训练模型、计算图和脚本

首先,克隆这个代码仓库并进入相应的目录: git clone https://github.com/akshaypai/tfClassifier

第二步:运行脚本获取最佳预测

你可以提供待分类的图像,运行脚本。默认情况下,脚本会显示概率最高的结果。 python classifier.py --image_file file_path_to_image 如果你想获取前几个分类结果,可以使用以下参数: python classifier.py --image_file file_path_to_image --num_top_predictions number_of_top_results 例如,当我们输入一张石榴的图像时,分类器显示该图像是石榴,概率高达98%。

第三步:运行脚本获取前n个识别结果

现在,我们尝试使用一张具有更多属性的图像,比如下面这幅房子的图像: python classifier.py --image_file ~/Pictures/house.jpg --num_top_predictions 5 结果表明,分类器认为这张图片中包含栅栏的可能性为95%,还可能包含其他对象,如庭院或露台等。

使用TensorFlow的预训练模型对图像进行分类非常简单。然而,预训练模型能识别的类别是有限的。如果你希望分类器识别特定的类别,就需要重新训练这个模型。

下面是重新训练模型的步骤:

第一步:设置图像文件夹

这一步涉及到设置文件夹结构,以便TensorFlow能够轻松获取这些类别。例如,如果你想训练一个神经网络来识别五种花卉:玫瑰、郁金香、蒲公英、康乃馨和万寿菊。

创建文件夹结构时:

  • 为每种花卉创建一个文件夹,文件夹名称应为对应的类别名称(如玫瑰、郁金香等);
  • 将每种花卉的图像添加到相应的文件夹中;
  • 最后,将所有文件夹添加到一个父文件夹中,例如“花卉”。

设置完成后,文件夹结构如下所示: ~/flowers

第二步:运行重新训练脚本

使用以下命令运行脚本: python retrain.py --model_dir ./inception --image_dir ~/flowers --output_graph ./output --how_many_training_steps 500 命令行参数说明:

  • --model_dir:指定预训练模型的位置,预训练模型存储在git仓库的inception文件夹下。
  • --image_dir:在上一步中创建的图像文件夹路径。
  • --output_graph:保存新训练图的位置。
  • --how_many_training_steps:指定训练次数,默认为4000次。找到合适的次数需要不断尝试,确定最佳设置后即可开始使用。

为了提高模型的准确性,还可以使用以下参数:

  • random_crop:随机裁剪可以帮助模型更好地关注图像的主要部分。
  • random_scale:类似于随机裁剪,但可以随机放大图像大小。
  • flip_left_right:翻转图像。

以上就是重新训练深度学习模型所需的所有步骤,这样就可以识别自定义的物体了。

【完】

招聘

我们正在招聘编辑记者、运营等岗位,工作地点位于北京中关村,期待你的加入,一起感受人工智能带来的变革。

相关详情,请在公众号对话界面回复“招聘”两字。

One More Thing…

明天还有哪些值得关注的AI界新闻?在量子位(QbitAI)公众号对话界面回复“明天”,查看我们搜集的最新AI行业动态和研究进展。

    本文来源:图灵汇
责任编辑: : 立冬
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
速成辨认搭建TensorFlow图像尝试教程这里系统
    下一篇