使用Tensorflow构建属于自己的图片分类器

近几年火热的AI领域吸引了众多有志之士加入,在一段时间的学习之后,不知道你是否有一个疑惑:我能够用AI来做点什么呢?

就拿AI最常见的应用而言,人脸识别已经相当成熟,由巨头把持,围棋AI也有好几个开源实现,都是重量级的玩家在玩,医疗领域涉及太广,不是个人能hold住的。还有我们能够想到的领域,如机器翻译、无人驾驶、搜索引擎、美颜…好像都被别人早早布局,现在进入是不是太晚了?

别着急,在机器学习领域,有一个重要的定理叫做 “没有免费的午餐”定理 (No Free Lunch Theorem,简称NFL定理)。NFL定理是这样的,对于一个学习算法Ea,若它在某些问题上比学习算法Eb好,则必然存在另一些问题,在那里Eb比Ea好,这个结论对任何算法均成立。换而言之,机器学习领域,不存在一种算法,对所有问题都有效。

在面对具体的问题时,我们总需要选择算法、训练算法、针对具体问题进行调优,这也是大多数从事机器学习行业的人的工作。下面我就以一个图片分类器的构建为例,说明如何构建一个属于自己的AI模型。

说到图片分类器,有的同学可能又存在疑问?市面上不是已经有很多模型了吗?比如拍照识花、给猫狗图片分类等等。对的,本文就是在这些模型的基础上,训练出能够识别我常喝的两种牛奶的分类器(牛顿不是也说过,要站在巨人的肩膀上。。。)。我常喝的牛奶是长这样的:

要构建自己的图片分类器,首先需要数据,数据不能太少。在深度学习领域,数据往往比算法更重要(不是我说的,吴恩达说的。。。)。在本问题中,我们需要的数据就是有关这两种牛奶包装的图片。一种方法是编写脚本,从网络上抓取,还有一种笨办法,自己拿手机从各个不同角度拍摄。第三种办法是对着这两种牛奶录一段视频,然后通过软件将一帧帧的图像保存为图片,该方法也不是我想到的,你可以看这段视频了解一下。

我选择第三种录视频的方法来生成我的训练数据。

数据生成

首先使用手机拍一段视频,导入到电脑,然后通过软件保存图像。在ubuntu上可以使用ffmpeg软件来完成。

sudo apt-get install ffmpegffmpeg -i VID_20180520_162407.mp4 -r 1 milk_photos/arla/%03d.jpg

训练模型

我们基于ImageNet模型训练自己的模型,这是一个大型视觉识别挑战数据集上训练的模型,可以识别大约1000中物体的类别。

安装tensorflow

pip install --upgrade "tensorflow==1.7.*"

克隆git仓库

git clone https://github.com/googlecodelabs/tensorflow-for-poets-2cd tensorflow-for-poets-2

训练数据集

将前面通过视频生成的图片集放到tf_files目录下,每一类图片单独建一个文件夹,文件夹可以如下所示:

milk_photos
 |----yili
 |      |--001.png
 |      |--002.png
 |      ...
 |
 |----arla
 |      |--001.png
 |      |--002.png
 |      ...

再训练模型

export IMAGE_SIZE=224
export ARCHITECTURE="mobilenet_0.50_${IMAGE_SIZE}"python -m scripts.retrain \
 --bottleneck_dir=tf_files/bottlenecks \
 --how_many_training_steps=500 \
 --model_dir=tf_files/models/ \
 --summaries_dir=tf_files/training_summaries/"${ARCHITECTURE}" \
 --output_graph=tf_files/retrained_graph.pb \
 --output_labels=tf_files/retrained_labels.txt \
 --architecture="${ARCHITECTURE}" \
 --image_dir=tf_files/milk_photos

再训练脚本将生成以下两个文件:

  • tf_files/retrained_graph.pb,再训练的图文件。
  • tf_files/retrained_labels.txt,这是一个包含标签的文本文件。

使用再训练的模型

python -m scripts.label_image \
   --graph=tf_files/retrained_graph.pb  \
   --image=tf_files/milk_photos/yili/008.jpg

结果:

yili (score=0.99988)
arla (score=0.00012)

我们也可以再拍一张照片,试试效果。

至此,训练我们自己的分类器的任务就结束了,在下一篇文章中,我将带领大家探索如何在Android手机上使用我们的图片分类器。

注:本文主要参考了google codelab的教程:<>,这个题目还真不好翻译,TensorFlow之歌?原文的步骤更加详细,有兴趣可以参看原文。使用录制视频的方式生成数据集学的是这个视频: https://youtu.be/EnFyneRScQ8?t=4m17s

本文分享自微信公众号 - 云水木石(ourpoeticlife)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT派

素面变豪华拉面,这位拉面狂魔用GAN和AR实现“味觉转换”

人工智能已经发展到了今天了,创造出“贾维斯”还有点困难。但是,将素面直接变成拉面......嗯,也挺困难的。

16240
来自专栏MixLab科技+设计实验室

WWDC19苹果发布会,谁说程序员不能做设计?SwiftUI、AR 3 、ML 3

在刚刚结束的WWDC发布会中,苹果不仅带来了大家期待已久的 iOS 13,还有3个内容的更新我比较关注,分享给大家。

16520
来自专栏大话存储

从SAS过渡到NVMe岂止仅换个底盘

广告:冬瓜哥新作《大话计算机——计算机系统低层架构原理极限剖析》将于8月份出版,详细内容点击链接。

15810
来自专栏新智元

重新思考图卷积网络:GNN只是一种滤波器

最近关于顶点分类(vertex classification)的工作提出了深度和分布式的学习模型,以实现高性能和可扩展性。

18430
来自专栏AI机器思维

大数据架构下的数据仓库为什么是未来趋势?

人类已经进入数据驱动的时代,数据为先、移动为先、云为先、智能为先的时代!繁杂的数据中隐藏着有用的“智慧”,在企业和每个人心中建立“数据文化”成为建设智慧企业的必...

39220
来自专栏IT派

为了治好你的脸盲,这家表情包网站开源了一个明星识别器丨GitHub

现在,有一家公司来拯救脸盲了,不是你熟悉的硅谷/后厂村大公司,而是一家动图表情包网站:GIPHY。

14530
来自专栏IT派

春招已近,这份GitHub万星的ML算法面试大全请收下

如下所示为整个项目的结构,其中从机器学习到数学主要提供的是笔记与面试知识点,读者可回顾整体的知识架构。后面从算法到笔试面经主要提供的是问题及解答方案,根据它们可...

14830
来自专栏AI机器思维

机器学习中K-近邻算法的案例实践

人类一直有一个梦想,造一个智能机器,让机器帮助我们实现自己的心愿。就像小时候看的动画片《葫芦娃》,如意如意随我心意快快显灵,如意如意,一听这个名字就知道它是代表...

13620
来自专栏新智元

【干货】NLP中的迁移学习教程来啦!(238页PPT下载)

经典的监督机器学习范式是基于对使用单个数据集的任务的单个预测模型的孤立学习。这种方法需要大量的训练示例,并且对于定义明确、范围狭窄的任务效果最好。迁移学习指的是...

19920
来自专栏AI机器思维

情感分析(Sentiment Analysis)—机器学习自我提炼

数据时代,机器学习也进入了大众视野,我们身边到处都有机器学习应用的场景,如人脸识别、智能语音识别、手写数字识别、金融反欺诈和产品精准营销等等。

36520

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励