实践操作:六步教你如何用开源框架Tensorflow对象检测API构建一个玩具检测器

TensorFlow对象检测API是一个建立在TensorFlow之上的开源框架,可以轻松构建,训练和部署对象检测模型。

到目前为止,API的性能给我留下了深刻的印象。在这篇文章中,我将API的对象设定为一个可以运动的玩具。本文将用六个步骤突出API的性能并教你如何构建一个玩具探测器,你也可以根据这六个步骤扩展与实践你想要构建的任何单个或多个对象检测器。

玩具检测器

代码在我的GitHub repo上。

地址:https://github.com/priya-dwivedi/Deep-Learning/tree/master/tensorflow_toy_detector

第一步:收集数据

第一步是为你的项目收集图像,你可以从谷歌上下载。在我的例子中,我创建了一个飞机玩具的视频,并使用Opencv从视频中提取图像。这节省了我很多时间。我确保图像是从多个角度拍摄的。你也可以随机改变一些图像的亮度,这样探测器就可以在不同的光线条件下工作了。大致来说,你需要提供总共100-150张图片就足够了。参见下面的一些示例图片:

玩具的不同角度

第二步:为图像添加注释

我使用Labelimg来注释图像,它是一个图形化的图像注释工具。

安装地址:https://github.com/tzutalin/labelImg

这是一个非常有用的工具,注释是在Pascal VOC的格式中创建的,稍后你可以看到这个格式的用处。Labelimg是用Python编写的,并使用Qt作为接口。我使用了Python3 + Qt5这个组合来操作,事实证明是没有问题的(请参见带注释的图像示例)。从本质上说,我们为对象识别x和y的最大值与最小值,并将其传递给模型以及用于训练的图像。

使用labelimg为玩具添加注释

第三步:创建TFR数据集

Tensorflow API想让数据集最终变为TFRecord文件格式。这一步骤可能是最棘手的部分。但是,Tensorflow提供了一些方便的脚本,以帮助你启动- create_pascal_tf_record.py和create_pet_tf_record.py。由于labelimg已经以正确的格式创建了注释,所以我使用最小编辑的create_pet_tf_record.py。同时,这个脚本随机抽取30%的数据并创建了一个验证TFR文件。

需要注意的是,你还需要创建一个label.pbtxt文件,用于将标签名转换为一个数字id。这个过程非常简单:

item {
id: 1
name: ‘toy’
}

第四步:创建一个模型配置文件

一旦创建了TFR数据集,那么首先你需要确定你是否将使用现有的模型,并对其进行微调,或者从头开始构建。我强烈推荐使用现有的模型,因为卷积神经网络(CNNs)所了解的大多数特性通常都是对象不可知论的,而对现有的模型进行微调通常是一个简单而准确的过程。但是请注意,如果你决定从头开始构建,你将需要150多个图像,还要花费好几天时间来训练。该API提供了5种不同的模型,可以在执行速度和放置包围盒的精度之间进行权衡。见下表:

TensorFlow检测模型

对于这个项目,我决定使用在coco数据集上训练的faster_rcnn_resnet101。如果你想了解更多关于RCNN的模型的内容,请移步→https://blog.athelas.com/a-brief-history-of-cnns-in-image-segmentation-from-r-cnn-to-mask-r-cnn-34ea83205de4

Tensorflow提供了几个示例配置文件,以开始创建。

示例配置文件地址:https://github.com/tensorflow/models/tree/master/research/object_detection/samples/configs

使用faster_rcnn_resnet101_coco文件,并更新任何需要在文件中配置的路径。记住,不要忘记更新类的个数。

第五步:训练模型

终于!所有困难的(和无聊的)部分都完成了,我们可以开始训练模型了。因为我有一个可以合理使用的GPU,所以我决定在本地进行训练。然而,你也可以在云上进行训练。

你可以同时在两个独立的终端上启动训练工作和评估工作。并启动Tensorboard来监控性能。经过2-3个小时的训练后,可以看到总损失下降到0.077,精确到0.99。通过查看Tensorboard中的图像,我们可以看到这个模型很快就变得准确了。

模型很快就能得到准确的数据

第六步:测试模型

为了测试这个模型,我们首先选择一个模型检查点(通常是最新的),然后导出到一个冻结的推理图中。这个脚本也可以在我的github上找到。我在iPhone上录制的一段新视频中测试了这个模型。在我的前一篇文章中,我使用Python moviepy库将视频解析成帧,然后在每个帧上运行对象检测器,并将结果返回到视频中。

文章地址:https://medium.com/towards-data-science/is-google-tensorflow-object-detection-api-the-easiest-way-to-implement-image-recognition-a8bd1f500ea0

接下来的步骤

在测试过程中,我发现Faster RCNN模型有点慢。接下来,我将探索使用最快的模型-SSD mobilenet,看看是否有明显的准确性下降的问题。

对于这个模型,我只是使用了faster_rcnn_resnet101_coco的模型配置文件中的默认参数。如果它们能被调整以获得更好的性能,那就值得探索了。通过更多的努力,这个过程可以扩展到其他类别。

本文为编译作品,转载请注明出处。更多内容关注微信公众号:atyun_com

时间: 2025-01-24 00:19:06

实践操作:六步教你如何用开源框架Tensorflow对象检测API构建一个玩具检测器的相关文章

六步教你做好微信内容营销

摘要: 第一步:描述上下文背景 在试图得到用户关注前,你一定要做一件事情.建立上下文背景可以让你从人群中脱颖而出. 上下文背景可以归结为你能够让用户沉浸在你的消息中的原因. 第一步:描述上下文背景 在试图得到用户关注前,你一定要做一件事情.建立上下文背景可以让你从人群中脱颖而出. 上下文背景可以归结为你能够让用户沉浸在你的消息中的原因.如果他们关注了你的公众号,订阅就成为您发给他们任何电子邮件的上下文.如果是在您的网站上发现的内容,那么这个人对于你的话题或服务信息的搜索就是上下文.如果你正在报刊

“大”并非全部 六招教你如何用好大数据

很多人看到"大数据"就认为是数量很大的数据的意思,所以对大数据嗤之以鼻,认为只是概念炒作,没有实际意义.但事实并非如此,大数据的核心并不在规模大,而是它蕴含的是计算和思维方式的转变.大数据的"大"是宏观多变的意思,人类利用数据进行分析,从数据当中发现以前不能发现的价值.那么我们要如何利用好大数据呢? 明确的目标是成功的关键 在公司在发展过程中只有目标设定明确了,才能够缩小选择范围聚焦精力去发展.企业应时刻保持头脑清醒,朝着自己定好的目标前进,才有助于公司进行持续长久

六步,刘朋教你打造高效制胜团队的套路(加强版)

刘朋 诺基亚网络成都研发中心研发经理,成都研发中心ecosystem建设负责人,成都研发中心敏捷教练.10年+软件行业开发.团队教练和团队管理经验,在整洁代码.敏捷最佳实践和软件开发高效能团队有丰富的理论和实战经验.活跃于成都敏捷和技术社区,"天府软件园技术社区·整洁代码俱乐部"发起人,作为讲师多次参加敏捷之旅成都站.MPD成都站.中生代技术社区以及"天府软件园技术社区·整洁代码俱乐部"进行分享,并作为演讲嘉宾代表诺基亚在2015年"四川省第九届互联网大会

教你如何用Excel来聊天

  上班总是不那么自由,用QQ聊个天也跟做贼似的,但是玩Excel则没有事.要是想跟同事聊个天或者女朋友刚好就在同单位怎么暗度陈仓呢?教你如何用Excel来聊天,防老板之绝招. ★第一步:打开Excel2003,新建一个工作簿文档,取名保存(如"工作记录.xls"). ★第二步:执行"工具→共享工作簿",打开"共享工作簿"对话框(见图1),选中"允许多用户同时编辑,同时允许工作簿合并"选项,确定返回. ★第三步:将上述工作簿文

图文教程,8步教你变身数据科学家

调查发现,数据挖掘和分析技能已经在"2016年最希望学会的职业技能"排名中位列第二,不难看出,数据科学正成为一种流行职业. 从行业内部的蓬勃发展,到招聘会上HR们的大声宣传,我们都可以看出,数据科学家已经成为当下最炙手可热的职业之一. 行业专业人士分析,未来几年数据科学岗位缺口将达到数百万.不仅仅是顶级科技公司需要数据科学家,未来各行各业都会需要设立数据科学相关岗位,来帮助他们发展. 工作岗位有了,但是可以做这些工作的人却很少.数据科学行业急需人才,但是现实情况却不容乐观,虽然大批大批

教你如何用word按钮实现文档自动滚动

鼠标的滚轮容易坏,看文章的时候自动滚动就是个问题,拉右边的垂直滚动条很麻烦,怎么办呢?blue1000教你高手是如何用按钮实现文档自动滚动. 其实,从word2002版本开始,Word程序就开始提供文件自动滚动功能,无论电脑鼠标是否有滚轮都可以使用,方便用户轻松地将文件内容上下拖动观看,下面笔者就以Word2007为例,为大家介绍操作方法. 小提示:此方法同样适用于鼠标滚轮损坏的情况下,供用户临时使用. 1.先运行Word2007程序,然后依次点选界面左上角的"office按钮"--&

还记得 Flappy Bird 么?这篇文章教你如何用神经网络破朋友圈纪录!

以下内容来源于一次部门内部的分享,主要针对AI初学者,介绍包括CNN.Deep Q Network以及TensorFlow平台等内容.由于笔者并非深度学习算法研究者,因此以下更多从应用的角度对整个系统进行介绍,而不会进行详细的公式推导. 关于Flappy Bird  Flappy Bird(非官方译名:笨鸟先飞)是一款2013年鸟飞类游戏,由越南河内独立游戏开发者阮哈东(Dong Nguyen)开发,另一个独立游戏开发商GEARS Studios发布.-- 以上内来自<维基百科> Flappy

做好微信内容营销的六步

摘要: 第一步:描述上下文背景 在试图得到用户关注前,你一定要做一件事情.建立上下文背景可以让你从人群中脱颖而出. 上下文背景可以归结为你能够让用户沉浸在你的消息中的原因. 第一步:描述上下文背景 在试图得到用户关注前,你一定要做一件事情.建立上下文背景可以让你从人群中脱颖而出. 上下文背景可以归结为你能够让用户沉浸在你的消息中的原因.如果他们关注了你的公众号,订阅就成为您发给他们任何电子邮件的上下文.如果是在您的网站上发现的内容,那么这个人对于你的话题或服务信息的搜索就是上下文.如果你正在报刊

新手站长如何购买虚拟主机做网站? 只需六步完成建站

作为一个新手站长,笔者也想拥有一个自己的网站.想了好久,才确定了网站的主题,然后开始设计网站的页面.随着http://www.aliyun.com/zixun/aggregation/18434.html">网站页面和网站程序的完工,虚拟主机的选择不得不认真对待.一个好的网站,前提是要有一个好的基础,即虚拟主机空间.因此笔者今天在这里想和众多新手站长们分享一下购买虚拟主机的一些心得. 一.国内外虚拟主机 首先,要考虑的是备案问题,新手站长们都知道国内空间的备案程序不仅错综复杂,而且限制的东