作者:一杯奶茶的功夫

链接:https://www.jianshu.com/p/ab35ed21df87

程序员转行学什么语言?

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

这篇文章会讲解如何制作能够分类120种小狗的图像分类器。

这篇文章中所讲述的内容都是基于colab notebook和fastai技术的深度学习的应用。

为什么使用colab?

  • 使用colab的好处是,你不需要有任何显卡GPU,colab中提供了一块免费的k80带12G显存的GPU

  • colab是google提供的一个免费的Jupyter notebook的环境,可以省去安装它的功夫

为什么使用fastai?

  • fastai是一种超级简洁的深度学习工具,代码上甚至比当前Keras还要简洁。

  • 底层是pytorch,能够提供高速的处理性能。

和之前文章中的两个物种(猫和狗)的分类略有不同,这次使用的数据集全部是狗,需要把这些狗分到不同的类别中。也就是说,图片之间特征的区别的差异要比之前猫和狗分类的来的更加细微。

好吧,接下来我们看看如何动手制作。

1.在colab的作业本中配置fastai的环境

!curl https://course.fast.ai/setup/colab | bash

2.导入fastai包

from fastai import *
from fastai.vision import *

3.加载kaggle.json

这里我们准备从kaggle下载所需要的狗的数据集,如果你可以从其他地方得到数据集,那么可以省略步骤3和4,按照自己的方法在环境中导入数据集即可。

!mkdir /content/.kaggle/
!mkdir /content/data/dogsbreed/
PATH = "/content/data/dogsbreed/"
from google.colab import files
# load from upload dialog
uploaded = files.upload()
for fn in uploaded.keys():
  with open(f'/content/.kaggle/{fn}', 'wb') as f:
    f.write(uploaded[fn])

4.安装kaggle环境

!chmod 600 /content/.kaggle/kaggle.json

!pip install kaggle
!cp /content/.kaggle/kaggle.json ~/.kaggle/kaggle.json
!kaggle config set -n path -v{/content}

import kaggle
!kaggle competitions download -p /content/data/dogsbreed/ dog-breed-identification

从结果中可以看到,我们已经从kaggle成功的下载了数据集文件。

5.验证GPU

torch.cuda.is_available()
#True
torch.backends.cudnn.enabled
#True

6.解压缩文件

! cd /content/data/dogsbreed && unzip labels.csv.zip
! cd /content/data/dogsbreed && unzip sample_submission.csv.zip
! cd /content/data/dogsbreed && unzip test.zip
! cd /content/data/dogsbreed && unzip train.zip

7.读取label.csv

labels_df=pd.read_csv(f'{PATH}labels.csv')
labels_df.head()

这里我们可以看到labels.csv中的前五条数据

8.查看狗的类别

labels_df.pivot_table(index='breed',aggfunc=len).sort_values('id',ascending=False)

这里可以看到一共有120行数据,也就是120种狗的类别,以及每种类别里面有多少条数据。

9.加载数据集并显示

data = ImageDataBunch.from_csv(
                      PATH,
                      folder='train',
                      valid_pct=0.2,
                      ds_tfms=get_transforms(),
                      size=224,
                      test='test',
                      suffix='.jpg',
                      bs=64).normalize(imagenet_stats)
data.show_batch(rows=3, figsize=(10,12))

如果一切顺利,这里会显示出9张狗的图片,并且图片上方会显示相应的狗的类别。

如果只显示了图片,而图片上的标签不是类别的话,那说明数据导入部分存在问题。

OK,我们继续下一步。

10.下载与训练模型并微调

learner = create_cnn(data,models.resnet101,metrics=[accuracy])
learner.fit_one_cycle(10)

这里我们设置了10个epoch,会稍微花费点时间大约40分钟。

可以看到,在最后一个epoch时候,我们的精度在89%。当然我们还可以继续调优:)

或者直接从零开始对每一层权重的训练,这都是可以的。

到这里我们就已经成功的完成了一个120种狗狗的图片分类器的制作啦,怎么样?是不是很简单?希望这篇文章可以给每一个前来阅读的朋友带来收获,对深度学习,图像分类有一个直接的体会。

如果有问题,欢迎来评论区留言讨论^^

(本文为AI科技大本营转载文章,转载请联系原作者)

.

人工智能的现状及今后发展趋势如何? 

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

群招募

扫码添加小助手微信,回复:公司+研究方向(学校+研究方向),邀你加入技术交流群。技术群审核较严,敬请谅解。

推荐阅读:

  • 2018 Python开发者大调查:Python和JavaScript最配?

  • 十大经典排序算法动画与解析,看我就够了

  • 访问量最高超7百万的Stack Overflow问题竟然是...

  • 算法警告!该图片涉嫌违规不予显示

  • 交易机器人春天已来?先看完这篇再说吧

  • 30 秒?!Chrome 插件带你速成编程学习 | 程序员硬核评测

  • 为什么程序员下班后只关显示器从不关电脑?

  • 全面剖析企业私有云

  • 月入5万,程序员夫人们过上"贵妇"生活了吗?

点击“阅读原文”,查看历史精彩文章。

120种小狗图像傻傻分不清?用fastai训练一个分类器相关推荐

  1. 国防大学计算机学院,国防大学和国防科技大学是同一所学校吗?很多人傻傻都分不清!...

    国防大学和国防科技大学,这两所大学名字相近,极易混淆,在很多网站搜索"国防大学录取分数线",出来的全是国防科技大学的的高考录取分数线,所以给广大考生带来了很大困惑,难道国防大学和国 ...

  2. 状态码302_HTTP状态码 201,202,302,405 ... 傻傻分不清,看这一个项目就够啦

    本期搬运 [github]http.cat,它是一款用于提供对应HTTP状态码界面模板的API,并且每次都会返回一张寓意如图的 喵喵相片. 本篇文章大约需要3分钟来阅读,热衷吸猫人士可能会更久.届时你 ...

  3. 小狗拉菲扫地机器人_扫地机器人和吸尘器到底该怎么选?

    为了摆脱繁琐的家居清洁,很多人犹豫到底是选购扫地机器人还是选购吸尘器,有的认为扫地机器人看起来更高端,更智能:而吸尘器还是需要人工操作,看起来并没有那么智能.那到底这两种产品到底该如何选择呢,今天来分 ...

  4. 刻画小狗状态java_JAVA面向接口编程

    JAVA面向接口编程 小狗在不同环境条件下可能呈现不同的状态,小狗通过调用 cry()方法体现自己的当前的状 态.要求用接口封装小狗的状态.具体要求如下. • 编写一个接口 DogState,该接口有 ...

  5. 网站推广策略-网站推广120种实用方法_打杂的_新浪博客

    介绍实用有效的企业网站推广方法,网站推广计划,网站推广方案和网站推广案例等.<网站推广策略>用网络营销的系统性思想研究网站推广,将网站推广作为企业网络营销策略的组成部分. 网站推广120种 ...

  6. 网站推广120种实用方法系列连载

    ·关联网站推广策略(1)--关联网站的作用 (2005-04-12) [摘要]:关联网站推广策略的基本思想是值得借鉴的,只要在实际应用中合理利用关联网站之间的关系,不要使之成为虚假网站流量的工具. ...

  7. Redis 3种集群方式,别傻傻分不清!

    文章目录 Redis 3种集群方式,别傻傻分不清! 1 redis 主从模式配置 前言 redis 主从模式配置 首先更改配置文件 (redis.windows.conf ) 配置主从配置 (redi ...

  8. ar vr mr 计算机技术,AR/VR/MR傻傻分不清?一图带你看懂三种虚拟现实技术

    原标题:AR/VR/MR傻傻分不清?一图带你看懂三种虚拟现实技术 AR.VR早已出现在我们生活中,丰富的AR手机游戏带来了新的娱乐方式,几十块就能买到的VR盒子插进手机就能马上"穿越&quo ...

  9. 鞋子,靴子,拖鞋傻傻分不清楚 pytorch实现分类 入门小案例

    鞋子,靴子,拖鞋傻傻分不清楚 pytorch入门 前言 方法 网络 优化器 损失函数 总体方法 代码实现 图片加字 神经网络 总结 前言 从入学到现在已经两个多月了,看了一个多月的论文不知道学到了啥 ...

最新文章

  1. Android之使用HTTP协议的Get/Post方式向服务器提交数据
  2. python 如何判断一个数为整数?(判断整数,没有小数)(取余)判断整型 isinstance()
  3. 邮件头解析=?utf-8?Q?乱码
  4. org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException:
  5. [react] 举例说明useState
  6. TypeScript学习笔记(第一天)------创建简单的web应用
  7. python课程网课-有没有简单易懂的入门级Python辅导书或网络课程?
  8. atitit.项目设计模式---ioc attilax总结v4 q11
  9. Linux的软链接和硬链接
  10. linux 网卡序列号,linux查看网卡地址和硬盘序列号
  11. linux的一些资讯网站
  12. 慕课软件工程(第五章.初始模块结构图的设计)
  13. Excel怎么批量插入对应产品图片?
  14. 电子工程师必备(电子书版3本全):
  15. :要求查询出每一个雇员的编号,姓名,工资,领导的姓名,部门名称及位置,工资所在公司的工资等级
  16. dd命令 刻录U盘启动
  17. 2019各大互联网公司年会盘点
  18. 2017年山东省第八届ACM程序设计竞赛总结
  19. mysql.server 脚本解析
  20. 切图工具GraphicsMagick安装

热门文章

  1. rails应用ajax之二:使用rails自身支持
  2. 盛大游戏卷入“沙巴克”商标之争
  3. ASP.NET,IIS7.0 上传大视频文件报错
  4. 想在SqlDbHelper.cs类中加的垃圾方法
  5. 在SpringBoot启动类上添加ComponentScan出现springbootapplication already applies given @ComponentScan
  6. redhat linux系统补丁,如何在CentOS和RHEL系统上安装或自动更新安全补丁
  7. 论文中的绘图软件大总结 ---自己感想:当你拼命寻找向上的扶梯时,但也要先不让自己恐高
  8. 记录一次爬取某昵称网站的爬虫
  9. Scrapy框架CrawlSpider类爬虫实例
  10. Windows下安装PHP开发环境