图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

雷锋网  •  扫码分享
我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?


本文为 AI 研习社编译的技术博客,原标题 Tensorflow Vs Keras? — Comparison by building a model for image classification,作者为DataTurks: Data Annotations Made Super Easy。

翻译 | shunshun    整理 |  凡江


图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

是的,标题中的问题在数据科学家之间的谈话中是很常见。有人说TensorFlow更好,有人说Keras更好。让我们看看这个问题在图像分类的实际应用中的答案。

在此之前,先介绍Keras和Tensorflow这两个术语,帮助你在10分钟内构建强大的图像分类器。


    Tensorflow:

Tensorflow是开发深度学习模型最常用的库。它是有史以来最好的库,在日常实验中被许多极客选择。如果我说Google已经将Tensor Processing Units(TPU)用于处理张量,你能想象吗?是的,他们已经这样做了。他们提出了一个名为TPU的独立实例,它具有最强大的功率驱动计算能力来处理tensorflow的深度学习模型。


    是时候做一个了!

我现在将帮助你使用tensorflow创建一个功能强大的图像分类器。等等!什么是分类器?这只是一个简单的问题,你向你的tensorflow代码询问,给定的图像是玫瑰还是郁金香。所以,首先的首先,让我们在机器上安装tensorflow。官方文档有两个版本,即CPU和GPU版本。对于CPU版本:

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

请注意,我是在GPU上而非CPU上进行实验后才写的这篇博客。这里给出了详细的GPU安装。  

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

现在,让我们采用Google的Tensorflow进行实验来训练模型。谷歌的这个仓库有许多令人惊叹的处理图像的简单实验的脚本。它非常简洁,足以满足我们的目的。还记得前面我用过“强大”这个词吗?是的,当我们使用称为迁移学习的方法时,这个词就会生效。迁移学习是一种有效的方式,它使用预训练模型,这些模型已经训练了几天或几周,然后改变最后一层以适应我们自己的类别。

Inception V3是一个非常好的模型,在[2015 ImageNet Challenge](http://image-net.org/challenges/LSVRC/2015/results)图像分类竞赛中排名第二。当数据集的每个类别具有较少图像数量时,它被提及为迁移学习的最佳网络。

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

 Inception V3  

现在克隆git仓库:

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

现在,你可以选择图像。你所要做的就是以下面的方式存储数据集文件夹。

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

  FLOWER DATA  

它看起来应该像上面图那样(忽略image.py)。通过下面代码获得flower_photos文件夹:

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

创建数据

你可以使用任何你喜欢的图像。越多越好(目标是几千)。向上面文件夹格式那样以类别将它们分开,并确保它们在一个名为tf_files的文件夹中。

你可以下载已经存在的有多种任务使用的数据集,如癌症检测,权力的游戏中的人物分类。这里有各种图像分类数据集。

或者,如果你有自己独特的用例,则可以为其创建自己的数据集。你可以从网上下载图像并立即制作大型数据集,使用像Dataturks这样的注释工具,你可以手动上传图像并标记图像。更好的是,Dataturks的输出可以很容易地用于构建tf_files。

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

                             使用Dataturks创建数据

我发现了一个很棒的插件,可以在Google Chrome上批量下载图像。这个和Dataturks将使构建训练数据变得轻而易举。链接在这里。

您可以尝试使用dataturks的image_classification工具执行此操作。这里该工具提供的最佳功能是,如果我们有一个非结构化数据集,其中所有图像都在一个文件夹中。通过手动标记图像的类别,你可以下载一个json文件,该文件包含嵌入其中的类的图像的所有详细信息。然后使用下面给出的keras和tensorflow脚本:  

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

训练

现在是时候训练模型了。在tensorflow-for-poets-2文件夹中,有一个名为scripts的文件夹,它包含重新训练模型所需的一切。retrain.py有一种特殊的裁剪和缩放图像的方式,非常酷。

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

 然后使用以下命令训练,选项名称本身描述所需的训练路径的位置。

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

这将下载inception模型并使用training文件夹和给定的参数训练最后一层。我使用12GB Nvidia Tesla k80和7GB Vram在GCP实例上训练了4000步。

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

训练时80%数据集用作训练,20%用作测试,我们可以看到,它给出了91%的test_accuracy。现在是时候测试了!我们在`tf_files/`中有一个.pb文件,可用于测试。`label_image.py`中添加了以下更改:  

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

上面的代码将帮助我们绘制正在测试的图像的准确性并保存它。对于rodom图像的置信度百分比如下所示

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?  

下面显示了几个测试图像的输出

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

包含所有类别的少量输出的拼贴画 

正如我们所看到的,结果对于所述任务来说真的很好了。  


    Keras

Keras是一个基于TensorFlow构建的高级API(也可以在Theano之上使用)。与Tensorflow相比,它更加用户友好且易于使用。如果我们是所有这些深度学习的新手,并想从头开始编写一个新模型,那么我会建议使用Keras,因为其易读性和易写性。可以通过下面指令安装:

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

甚至这个东西都包含了tensorflow,所以CPU v/s GPU兼容性变化也将适用于此。

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

因为,我们必须执行使用inception模型的迁移学习对花进行分类的相同任务,我已经看到Keras以标准格式加载模型,如API编写的那样。

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

Keras有一种加载数据集的标准格式,即我们不是直接在数据集文件夹中提供文件夹,而是手动划分训练和测试数据,并按以下方式排列。我使用了我在tensorflow部分下载的相同数据集,并按照以下说明进行了一些更改。

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

它看起来应该如下所示:

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

 TRAIN FOLDER

至于,我们现在已完成数据集的设置,是时候进行训练了。我已经写了一小段代码来进行下面的训练:




想要继续阅读并且查看更多代码、链接和参考文献?

戳链接: http://www.gair.link/page/TextTranslation/997

雷锋网雷锋网雷锋网 (公众号:雷锋网)

A研习社每日更新精彩内容,点击链接 http://www.gair.link/page/translate 即可观看更多精彩内容:

如何利用深度学习和 Pytorch 实现推荐系统

想了解 MIT 发布的最新编程语言 Julia,这篇文章就够了

开发者必看:8月 Python 热门开放源码

亚马逊、谷歌、微软等各家公司人脸识别对比

斯坦福CS231n李飞飞计算机视觉经典课程(中英双语字幕+作业讲解+实战分享)


等你来译:

使用 Python 完成自动特征工程——如何自动创建机器学习特征

利用 Pytorch 和 CoreML 建立一个风格转换的 iOS 程序

10个 Python 中常见的安全问题以及如何避免他们

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

图像分类任务中,Tensorflow 与 Keras 到底哪个更厉害?

随意打赏

tensorflow 分类tensorflow图像Keras图像分类
提交建议
微信扫一扫,分享给好友吧。