EasyDL的哪种算法更适合你的图像分类应用
相信不少开发者已经或多或少对百度EasyDL有所耳闻或有所尝试,作为零算法基础实现图像分类和物体检测的”神器”,支持使用少量训练数据,使用通用算法训练,就能很快得到一个图像分类模型。最近百度EasyDL又增加了新的算法AutoDL Transfer (高精度算法)。AutoDL Transfer是百度研发的AutoDL技术之一,结合模型网络结构搜索、迁移学习技术、并针对用户数据进行自动优化的模型,与通用算法相比,训练时间稍长,但更适用于图像的细分类场景,例如,通用算法可适用于区分猫和狗,但如果要区分不同品种的猫,则AutoDL效果会更好。下面我们通过实例来看下这两种算法的应用场景。
不知道大家平时养不养狗,现在大街上狗的品种是真的多,很多都是看着眼熟,如果想准确的叫出名字还真不太容易。笔者利用手里的一些狗的数据来进行训练,看看高精度算法和通用算法的区别。
第一步,登录百度EasyDL,ai.baidu.com/easydl。里面有使用的步骤,还是挺清楚的;
第二步,创建模型、创建数据集。相信使用过EasyDL的朋友对如何创建已经了解了,本文就不详细介绍操作步骤了;
第三步,训练模型,笔者先只添加2个分类共400多张图像(单个分类数据量较丰富)作为训练数据,分别是萨摩耶和博美,在笔者看来这两种犬类从外观特征来看差异很小(忽略体型大小),经常会分不清。


算法上选择通用算法,训练方式默认,然后点击训练。因为数据量较少,不出1个小时,模型就训练好了,我们来看看效果。

Top1的准确率达到了98.49%,通用算法的表现非常不错。那使用AutoDL高精度算法会不会表现得更好呢。接下来我们使用AutoDL算法进行训练看看。

选择百度AutoDL Transfer算法,点击训练。原以为AutoDL会慢一些,结果还是不出一小时就很快完成了训练,我们来看一下效果是不是更好。

结果让笔者很意外,Top1准确率是87.94%,比通用算法的准确率要低一点了。
笔者决定再通过增加分类数量来检验一下两种算法的效果。这次的分类数量提高到了100多种,包含了上万张图像。我们分别用通用算法和百度AutoDL高精度算法进行了训练,因为数据量比较大,这次训练的时间稍微有些长。



采用通用算法的模型准确率是84.25%,而采用百度AutoDL高精度算法的模型准确率是86.88%,这次从准确率来看,高精度算法效果更好。
百度AutoDL算法是以迁移学习为基础的,而迁移学习是机器学习的明天,相比深度学习可以用少量的数据训练出适合的模型。
笔者从网上搜了一张全新的博美狗图像,然后分别用通用和高精度算法来检验模型效果,结果发现采用高精度算法两个训练版本(V2&V4)要比采用通用算法两个版本(V1&V3)准确度更高,这说明 AutoDL高精度算法的分类效果还是非常出色的。




在区分猫和狗这样差异较大的样本时,通用算法性价比更高。而在区分狗的品种这样有大量分类且样本差异更小的场景下,通用算法“举一反三”的能力就相对较弱了,这时候百度AutoDL高精度算法的效果更出色。
作者:郭晶
EasyDL的哪种算法更适合你的图像分类应用的更多相关文章
- RAID5和RAID10,哪种RAID更适合你(上)
[IT168 专稿]存储是目前IT产业发展的一大热点,而RAID技术是构造高性能.海量存储的基础技术,也是构建网络存储的基础技术.专家认为,磁盘阵列的性能优势得益于磁盘运行的并行性,提高设备运行并行度 ...
- 阅读:RAID5和RAID10,哪种RAID更适合你
阅读:RAID5和RAID10,哪种RAID更适合你-------------------------------------------2013/10/06 存储是目前IT产业发展的一大热点,而RA ...
- 转载:RAID5和RAID10,哪种RAID更适合你
转自 http://storage.it168.com/h/2007-06-28/200706281204046_3.shtml 存储是目前IT产业发展的一大热点,而RAID技术是构造高性能.海量存储 ...
- web前端开发培训和自学 哪种选择更适合你
web前端相对于其他软件开发是比较容易入门的,但是如果深入学习就比较困难了,这门技能需要从业人员掌握一定的设计.代码.交互技能和一些SEO技能,容易入门还涉及这么多知识和技能,那学习web前端开发到底 ...
- Ember.js和Vue.js,哪种框架更适合你?
JavaScript最初是为Web应用程序而创建的.随着前端技术的发展,比起纯JavaScript 脚本,大多数开发人员更喜欢使用基于JavaScript的框架来开发Web应用,如Vue.React等 ...
- 哪种方式更适合在React中获取数据?
作者:Dmitri Pavlutin 译者:小维FE 原文:dmitripavlutin.com 国外文章,笔者采用意译的方式,以保证文章的可读性. 当执行像数据获取这样的I/O操作时,你必须发起获取 ...
- B树、B-树、B+树、B*树介绍,和B+树更适合做文件索引的原因
今天看数据库,书中提到:由于索引是采用 B 树结构存储的,所以对应的索引项并不会被删除,经过一段时间的增删改操作后,数据库中就会出现大量的存储碎片, 这和磁盘碎片.内存碎片产生原理是类似的,这些存储碎 ...
- B+树比B树更适合实际应用中操作系统的文件索引和数据库索引
B+树比B树更适合实际应用中操作系统的文件索引和数据库索引 为什么选择B+树作为数据库索引结构? 背景 首先,来谈谈B树.为什么要使用B树?我们需要明白以下两个事实: [事实1]不同容量的存储器, ...
- nignx 负载均衡的几种算法介绍
负载均衡,集群必须要掌握,下面介绍的负载均衡的几种算法. 1 .轮询,即所有的请求被一次分发的服务器上,每台服务器处理请求都相同,适合于计算机硬件相同. 2.加权轮询,高的服务器分发更多的请求 ...
随机推荐
- 规则“Microsoft Visual Studio 2008 的早期版本”失败。此计算机上安装了 Microsoft Visual Studio 2008 的早期版本。请在安装 SQL Server 2008 前将 Microsoft Visual Studio 2008 升级到 SP1。
今天重装了一下系统后,需要装开发工具,我用的开发工具是Visual Studio2008 和SQL Server2008R2,装完Visual Studio2008的时候在装数据库的时候却出现这样的问 ...
- Android零基础入门第78节:四大组件的纽带——Intent
前面学习Activity时己经多次使用了 Intent,当一个Activity需要启动另一个Activity时, 程序并没有直接告诉系统要启动哪个Activity,而是通过Intent来表达自己的意图 ...
- 用python的curl和lxml来抓取和分析网页内容
Curl是一个强大的URL语法的客户端,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, PO ...
- Linux 桌面玩家指南:19. 深入理解 JavaScript,及其开发调试工具
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- Indy9的TIdFTPServer封装类
在Delphi 7开发下有强大的Indy控件,版本为9,要实现一个FTP服务器,参考自带的例子,发现还要写很多函数,而且不支持中文显示文件列表等等.于是,自己改进封装了下,形成一个TFTPServer ...
- QT 强制杀死进程
bool KillProcess(QString ProcessName){ bool result = false; QString str1; HANDLE hSnapShot = Create ...
- 把滚动箱的样式做如下调整来模拟 TPanel
程序中用 TPanel 做了容器, 需要给它一个背景图片; 发现这竟是个难题! 发现我经常使用的滚动箱控件 TScrollBox, 是一个很好的替代品. 本例需要先添加两个图片资源, 添加方法可以参考 ...
- SYN2102型 NTP网络时间服务器
SYN2102型 NTP网络时间服务器 ntp主时钟服务器ntp时钟服务器厂商使用说明视频链接: http://www.syn029.com/h-pd-57-0_310_1_-1.html 请将 ...
- 使用spring容器干掉if-else
spring容器干掉if-else 场景说明 最近新做一个项目,需要对不同店铺的商品做不同处理.例如storeA需要进行handleA操作,storeB需要进行handleB操作,如此类推 大家很容易 ...
- 原生js封装轮播图
个人实际开发中用到的效果问题总结出来便于自己以后开发查看调用,如果也适用其他人请随意拿走勿喷就行! 原生js对于思路要求比较高,在js代码我都写有备注,足够理解并使用,即使是小白或者刚入行的程序员也比 ...