如何使用TensorFlow在ROI周围创建边界框

时间:2016-11-04 15:15:43

标签: python neural-network tensorflow artificial-intelligence

我使用初始v3和tensorflow来识别图像中的某些对象。 但是,它只是创建了一个可能的对象列表,我需要它来通知它们在图像中的位置。

我正在关注花卉教程:https://www.tensorflow.org/versions/r0.9/how_tos/image_retraining/index.html

  

bazel-bin / tensorflow / examples / image_retraining / retrain --image_dir   〜/ flower_photos

3 个答案:

答案 0 :(得分:6)

Inception是一个分类网络,而不是本地化网络。

您需要另一种架构来预测边界框,例如R-CNN及其更新(和更快)的变体(快速R-CNN,更快的R-CNN)。

可选地,如果您想使用初始并且您有一个使用类和边界框坐标注释的训练集,您可以添加一个回归头以便开始,并使网络学会回归边界框坐标。 转移学习也是如此,但你只需使用最后一个卷积层输出作为特征提取器,并训练这个新头部为训练集中的每个边界框回归4个坐标+ 1个等级。

答案 1 :(得分:2)

默认情况下,初始化不输出坐标。有一些特定的工具可以像Caffe那样使用更快的R-CNN。

如果你想坚持使用张量流,你可以重新训练一下,如果你有人类带注释的图像,就输出坐标。

答案 2 :(得分:2)

在对象周围放置边界框通常在字段的术语中称为检测,并且存在为其设计的整个网络类别。 PASCAL VOC competition中有一个单独的类别可供检测,这是找到良好检测网络的好地方

我最喜欢的检测网络(2012年PASCAL VOC数据集的当前领导者)是YOLO,它以典型的分类器开头,但是有一些额外的层来支持边界框。它不是仅仅返回一个类,而是生成原始图像的下采样版本,其中每个像素都有自己的类。然后它有一个回归层,可以预测边界框的确切位置和大小。您可以从预先训练的分类器开始,然后将其修改为YOLO网络并重新训练。该过程在the original paper about YOLO

中描述

我喜欢YOLO,因为它结构简单,与其他检测网络相比,它允许您使用分类网络的转移学习(这使得训练更容易),并且检测速度非常快。它实际上是为视频中的实时检测而开发的。

如果你想避免使用YOLO作者使用的自定义暗网框架,那么有一个implementation of YOLO in TensorFlow