繁体   English   中英

编码边界框进行训练

Encode bounding boxes for training

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试训练一个基本的卷积网络以定位图像中的对象。 我把图像划分成其具有的形状的numpy的阵列480, 640, 3 (唤起注意,宽度,RGB)。 目标是带有盒子点的2D numpy数组。 它的形状是18, 2 (max_boxes,(X,Y))。

我将其输入一个相当简单的卷积模型(如果有帮助,我可以发布源代码),该模型擅长对图像进行分类。

当我训练模型时,它很快达到了约0.77的精度,损失高达〜35。 此后,它停止学习,并且当我尝试测试图像时,它表现超级好。

为什么是这样? 我是否对目标数据进行了错误编码,或者在训练网络时出现问题? 这样做的“标准”方法是什么? 我应该如何解决?

示例输出

Raw output:
[[[0.02862035 0.02726501]
  [0.02820634 0.02730229]
  [0.02834299 0.02714084]
  [0.02819964 0.02701551]
  [0.02831725 0.02733742]
  [0.02820959 0.02748821]
  [0.02811676 0.02731069]
  [0.0284538  0.0269504 ]
  [0.02842114 0.02728475]
  [0.02858478 0.02691348]
  [0.02842172 0.0273287 ]
  [0.02865605 0.02686743]
  [0.02795038 0.02733723]
  [0.0287733  0.02693835]
  [0.02838135 0.02726109]
  [0.02785174 0.02761061]
  [0.03038537 0.02532353]
  [0.02849848 0.0269334 ]]]
Formatted:
[[[18.317022   17.44961   ]
  [13.539045   13.105101  ]
  [ 0.02834299  0.02714084]
  [ 0.02819964  0.02701551]
  [ 0.02831725  0.02733742]
  [ 0.02820959  0.02748821]
  [ 0.02811676  0.02731069]
  [ 0.0284538   0.0269504 ]
  [ 0.02842114  0.02728475]
  [ 0.02858478  0.02691348]
  [ 0.02842172  0.0273287 ]
  [ 0.02865605  0.02686743]
  [ 0.02795038  0.02733723]
  [ 0.0287733   0.02693835]
  [ 0.02838135  0.02726109]
  [ 0.02785174  0.02761061]
  [ 0.03038537  0.02532353]
  [ 0.02849848  0.0269334 ]]]
Correct:
[[44.0, 50.0], [52.0, 51.5], [39.5, 44.5], [42.5, 46.0], [46.5, 48.0], [46.5, 48.0], [53.5, 55.5], [33.5, 53.0], [51.0, 57.0], [45.5, 54.0]]

格式化我将每个元素乘以hight和width以使其不规范化:

for e in output:
    e[0] *= 640
    e[1] *= 480

编码图像

def format_data(X):
    X = array(X)
    n, h, w, c = X.shape
    X = X.reshape(n, h, w, c).astype("float32")
    X = X / 255 # normalize between 0 and 1
    return X

编码目标数据

def format_output(y, max_box_count=0):
    for e in y:
        if len(e) > max_box_count:
            max_box_count = len(e)

    y_array = []
    for e in y:
        e_zeros = zeros((max_box_count, 2))
        e_zeros[:len(e)] = e
        y_array.append(e_zeros)

    for e in y_array:
        e[0] /= 640
        e[1] /= 480

    return array(y_array).astype('float32'), max_box_count
问题暂未有回复.您可以查看右边的相关问题.
1 在训练步骤中Yolo v1边界框

我想实现Yolo v1,但我对算法有一些疑问。 我理解在YOLO中,我们划分每个单元格的图像(7x7)并且我们预测固定数量的边界框(本文默认为2,具有4个坐标:x,y,w,h),置信度得分我们还预测每个细胞的类别得分。 在测试步骤中,我们可以使用NMS算法来删除对象的多个检测。 ...

3 我试图在训练后打印边界框,我面临着保存边界框的困难

我正在使用ssd mobilenet从图像进行对象检测。 在训练后打印带有类标签的边界框时,只打印一个边界框。每个类都有多个边界框,但是从整个图像中只打印一个边框。 我试图在detection_classes上迭代for循环,但结果是重复显示了一个边界框 我需要使用类标签打印所有类 ...

4 训练Tensorflow对象检测而无边界框注释

通过将其坚持以下所示的PASCAL VOC格式,我设法在自己的数据集中对对象检测模块进行了重新训练。 这种格式边界方向的盒子和窥视到他们的TFRecords创建脚本 ,它期待了好多个,这些地面实况值,以生成相应的TFRecords。 边界框的问题在于,它可以为您提供近似值,并且注释旋 ...

6 删除边界框内的边界框以进行数字识别

我正在尝试数字识别。 但是经过轮廓查找。 如图所示,我在数字0,6,8的主边界框内得到了边界框。 请帮助我完成图像处理的初始步骤。 我尝试使用组矩形,但它们无法正常工作。 请检查下面的代码。 谢谢。 图片: http : //tinypic.com/r/1twx05/5 ...

7 如何使用MDL使用边界框进行测试

我正在尝试计算与MDL边界框的交集,我的代码是基于WM的伟大文章http://metalbyexample.com/picking-hit-testing/#more-738 认为t0应该是最近的点https://www.scratchapixel.com/lessons/3d-basic ...

8 在Matlab中进行边界框坐标测量

我是Matlab的新手。 我想测量RGB或灰度图像中边框的x和y坐标以及质心。 我不知道该怎么办才能解决这个问题。 谁能帮我解决这个问题? 这是我到目前为止的代码 ...

2016-03-21 05:07:03 1 373   matlab
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM