从我们见到的各种图像识别软件来看,机器确实能够识别人脸、猫、狗、花卉、各类车辆等日常生活中的常见物体。但是,这有一个前提:你需要使用这些类别的图像对机器进行训练。
具体来说,这应该被称为“图像分类”。构建一个图像分类器其实并不复杂。最近,技术博客Source Dexter发布了一篇文章,介绍了如何利用TensorFlow快速实现图像分类。
在正式讨论之前,我们需要了解一些基本概念。
当向一个已经训练好的系统输入一张图像时,系统会输出一组概率值,每个训练过的类别对应一个概率值。系统会将图像归类到概率最高的那个类别。例如,如果你训练了一个系统来识别猫和狗,那么当你输入一张图像时,系统会给出这张图像属于猫的概率和属于狗的概率。
然而,这种分类器有一个缺陷:如果输入的是一张蛇的图片,它只能判断这张图片属于猫或狗的概率哪个更高。
简而言之,神经网络是由多个计算单元组成的网络,可以从提供的数据中进行学习。如果将多层神经网络堆叠在一起,就形成了深度神经网络。建立、训练和运行深度神经网络的过程被称为深度学习。
此前,量子位曾发布过一篇关于包括神经网络在内的《25个深度学习基础概念》的文章,感兴趣的话可以查阅。
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行业动态和研究进展。