如何使用TensorFlow在感兴趣区域周围创建边界框

7
3个回答

6

Inception是一个分类网络,而不是一个定位网络。

你需要另一个架构来预测边界框,比如R-CNN及其更新(更快)的变体(Fast R-CNN,Faster R-CNN)。

如果您想使用Inception,并且您有一个用类别和边界框坐标注释的训练集,您可以添加回归头到Inception,并使网络学习回归边界框坐标。 这就是迁移学习的同样之处,但您只需将最后一个卷积层输出用作特征提取器,并训练此新头部以为每个训练集中的边界框回归4个坐标+1个类别。


2
将物体周围的边界框称为检测,这是该领域中专门设计的一整类网络。在PASCAL VOC比赛中有一个专门的检测类别,那里可以找到好的检测网络。
我最喜欢的检测网络(目前是2012 PASCAL VOC数据集的领先者)是YOLO,它从典型的分类器开始,然后有一些额外的层来支持边界框。它不仅返回类别,还生成原始图像的下采样版本,每个像素都有自己的类别。然后它有一个回归层,预测边界框的确切位置和大小。您可以从预训练的分类器开始,然后将其修改为YOLO网络并重新训练。该过程在关于YOLO的原始论文中有描述。
我喜欢YOLO,因为它结构简单,与其他检测网络相比,它允许您从分类网络中使用迁移学习(使训练更容易),并且检测速度非常快。实际上,它是为视频实时检测而开发的。
如果您想避免使用YOLO作者使用的自定义darknet框架,则可以在TensorFlow中实现YOLO

2

默认情况下,Inception不会输出坐标。有一些特定的工具可以实现这个功能,例如适用于Caffe的Faster R-CNN。

如果您想继续使用TensorFlow,您可以重新训练Inception来输出坐标,前提是您有经过人工标注的图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接