本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

码报:干脆面君,你给我站住!你已经被TensorFlow盯上了

时间:2017-08-19 02:50来源:668论坛 作者:www.wzatv.cc 点击:
干脆面君,你给我站住!你已经被TensorFlow盯上了 2017-08-18 14:52 来源:大数据文摘 原标题:干脆面君,你给我站住!你已经被TensorFlow盯上了 大数据文摘作品,转载要求见文末 作者 | D

干脆面君,你给我站住!你已经TensorFlow上了

2017-08-18 14:52 来源:大数据文摘

原标题:干脆面君,你给我站住!你已经TensorFlow上了

大数据文摘作品,转载要求见文末

作者 | Dat Tran

编译 | 康璐、元元、宁云州

谁动了我最爱的干脆面?!

美好的周五,大数据文摘的办公室居然出现了一起偷窃事件。查看监控后,伟大的文摘菌很快用TensorFlow抓住了凶手,TA就是——一只蠢萌的小浣熊

来,j2直播,一起听文摘菌讲讲,这一简易浣熊识别器是如何实现的吧~

文摘菌的这个浣熊识别器到底长啥样呢?先给你看看最终效果~

小偷浣熊独白:文摘菌,我不是故意要吃你的干脆面的 ><

想知道这是如何实现的?在这篇文章中,我会详细说明制作这个浣熊识别器的所有步骤。

为什么要选择浣熊???

不为什么,就是可爱!!!

戳链接可观看视频:https://youtu.be/Bl-QY84hojs

建立数据集

让我们开始吧!我们需要做的第一件事是建立自己的数据集:

TensorFlow物体识别器API使用TFRecord文件格式,所以我们需要把最终数据集转化成这种文件格式。

有几种方法可以生成TFRecord文件。如果你的数据与PASCAL VOC数据集或者Oxford Pet数据集结构类似,可以利用现成的脚本(参考create_pascal_tf_record.py和create_pet_tf_record.py)。如果你的数据集不是上述的数据结构,你需要自己写一个脚本来生成TFRecords(官网上有此做法的解释)。我就是这么做的。

为了准备API的输入文件,你需要解决两个问题。第一,你需要用jpeg或者png编的RGB的图片,第二,你需要一个图片的边界框(xmin, ymin, xmax, ymax)并标识物体类别。我的所有图片都只有一个类别,所有对我而言,这很简单。

我从Google Images和Pixabay爬取了200张浣熊的图片(主要是jpeg格式,也有个别是png格式),并且确保了图片在大小、姿势和光线方面有所区别。下面是我收集的一部分图片。

一部分浣熊图片

然后,我用LabelImg手动给图片打上了标签。LabelImg是一个用Python编写和用Qt做图形交互的图像标注工具。它可以支持Python2和3,但是我使用的是Python2和Qt4来从头编译,因为我用不了Python3和Qt5 。LabelImg非常好用,标注可以保存为PASCAL VOC格式的 XML文件。虽然我可以用create_pascal_tf_record.py脚本生成TFRecord文件,但我还是想自己编写脚本。

不知道为什么,在MAC OSX系统上LabelImg无法打开jpeg格式的图片,所以我不得不把他们转化成png格式然后再转化回jpeg格式。实际上,因为API也能支持png格式,我不需要再转化为jpeg格式,开奖,但是当时我还不知道这一点。下次我会直接使用png格式图片。

最终,在标识了这些图片后,我写了一个脚本把XML文件转化成csv格式并建立了TFRecord。我使用160张图片来训练(train.records),40张图片来测试(test.records)。

注意:

我发现另外一个很好用的标注工具叫做FIAT (Fast Image Data Annotation Tool)。以后我可能也会试试它。

ImageMagick可以在命令行上进行图片处理,例如图片格式转换。假如你从未使用过,这个软件值得一试。

通常来说,建立数据集是最费事的部分。我用了整整两个小时来分类和标注图片,这还是在我只需要分出一个类的前提下。

确保图片是中型号的(参考google图片来看什么是中型图片)。如果图片太大了,你又没有更改默认的批量大小设置,很可能会在训练时因内存不足而报错。

训练模型

在建立好符合要求的API输入文件后,就可以训练模型了。

在训练中,你需要下述部分:

(责任编辑:本港台直播)

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容