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

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

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

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

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

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

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

数据生成

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

sudo apt-get install ffmpeg

ffmpeg -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-2

cd 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

python图片分类器_使用 Tensorflow 构建属于自己的图片分类器相关推荐

  1. 随机森林分类器_建立您的第一个随机森林分类器

    随机森林分类器 In this post, I will guide you through building a simple classifier using Random Forest from ...

  2. python 图片自动分类机_用tensorflow神经网络实现一个简易的图片分类器

    文章写的不清晰请大家原谅QAQ 这篇文章我们将用 CIFAR-10数据集做一个很简易的图片分类器. 在 CIFAR-10数据集包含了60,000张图片.在此数据集中,有10个不同的类别,每个类别中有6 ...

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

    近几年火热的AI领域吸引了众多有志之士加入,在一段时间的学习之后,不知道你是否有一个疑惑:我能够用AI来做点什么呢? 就拿AI最常见的应用而言,人脸识别已经相当成熟,由巨头把持,围棋AI也有好几个开源 ...

  4. c调用python keras模型_使用TensorFlow 2.0创建Keras模型的三种方法

    TensorFlow 2.0和tf.keras提供了三种方式来实现神经网络模型:Sequential API Functional API Model subclassing 下面我将分别使用这三种方 ...

  5. python维度扩展_在TensorFlow中实现矩阵维度扩展

    一般TensorFlow中扩展维度可以使用tf.expand_dims().近来发现另一种可以直接运用取数据操作符[]就能扩展维度的方法. 用法很简单,在要扩展的维度上加上tf.newaxis就行了. ...

  6. python节日贺卡图片大全_简单漂亮三年级新年贺卡图片大全

    春节是中国最隆重的传统节日,它象征着团结.兴旺,是对未来寄托新的希望的佳节.下面小编给大家分享一些简单漂亮三年级新年贺卡图片,大家快来跟小编一起欣赏吧. 简单漂亮三年级新年贺卡图片展示 简单漂亮三年级 ...

  7. python商城开发_使用FastAPI 构建的商城项目API

    使用FastAPI 构建的商城项目API 学习FastAPI 构建项目目录 构建项目接口 环境 项目文件结构 文件结构是仿照Flask项目目录构建的,官方推荐的模版对我而言太大. . |_FastDe ...

  8. react打包后图片丢失_如何快速构建React组件库

    俗话说:"麻雀虽小,五脏俱全",搭建一个组件库,知之非难,行之不易,涉及到的技术方方面面,犹如海面风平浪静,实则暗礁险滩,处处惊险〜 目前团队内已经有较为成熟的 Vue 技术栈的 ...

  9. python 词汇表_使用Counter构建词汇表

    这里只记录两种情况: 1 数据集是一段连续的文本,所有词汇放在一个list中(一维的) text: 此时Counter(text),text可以是一个list,统计该list中所有元素出现的次数并返回 ...

最新文章

  1. 不支持打开非业务域名htts:....请重新配置
  2. iOS 最新版 CocoaPods 的安装流程
  3. html5中的新标签
  4. Ext2、Ext3和Ext4之间的区别
  5. 下一代Hotmail和MSN Messenger最新界面截图
  6. python编程快速上手-----让繁琐工作自动化_每周一书《Python编程快速上手 让繁琐工作自动化》分享!...
  7. Collaborative Filter - Data Mining基础(ACM暑校)
  8. python内置数据结构字符串
  9. 这文字的起始位置_ae制作文字动画?ae文字动画教程
  10. JVM学习笔记之-类加载子系统,类的加载与类的加载过程,双亲委派机制
  11. python wav模块获取采样率, 采样点,声道,量化位数和时间
  12. expecting statement错误的一种情况(phpstorm 8.0.2)
  13. 读书笔记之:高质量程序设计指南——C++/C
  14. 方法的重载与重写_我们不一样,不一样,重写与重载
  15. 微软架构师谈编程语言发展
  16. Wavenet基础学习
  17. Apache RewriteCond on HTTP_COOKIE
  18. nodejs动态加载代码
  19. android微信图片编辑带滤镜,微信更新了一个小功能,一些图片编辑软件可能要被打入冷宫了...
  20. 最全面DS18B20中文资料

热门文章

  1. bat脚本删除目标文件夹
  2. 搜狗蜘蛛池批量推送-搜狗蜘蛛池打造
  3. linux java火焰图_Linux程序性能分析和火焰图
  4. 魏永明 “自主”操作系统
  5. 【数据结构】二叉搜索树(BST树)的定义、构建、插入、删除及查找操作
  6. Java_面向对象编程-2
  7. 三国风云辅助软件 Ver 2.0
  8. 日更100天(49)每天进步一点点
  9. mysql注入带外通道攻击_防止SQL注入攻击的方法
  10. 耳机左右声道_立体声切换