yolov3回顾

1,结构
(1)生成3个尺度的输出,分别是(13,13,255)(26,26,255)(52,52,255)255=3*(80+4+1)80个类概率,坐标,置信度。3是每个框会生成3个预测框。
2. 训练
(1)创建网络模型 里边设置下输入、输出、损失函数
(2)开始训练,主要是将数据分批输入到模型中。如何分批生成训练数据,以及对初始训练数据转换格式preprocess_true_boxes()用到这个函数。
(3)preprocess_true_boxes()先将每个方框的数据坐标转化为中心坐标,然后进行归一化。
创建y_true张量格式3x [10,gride,gride,3,85]3种尺度, 10个batch,13*13个网格区域,一个区域生成3个预测框,85个元素,也就是生成和网络输出一样的数据格式。

        for t, n in enumerate(best_anchor):
            for l in range(num_layers):
                if n in anchor_mask[l]:
                    i = np.floor(true_boxes[b,t,0]*grid_shapes[l][1]).astype('int32')
                    j = np.floor(true_boxes[b,t,1]*grid_shapes[l][0]).astype('int32')
                    k = anchor_mask[l].index(n)
                    c = true_boxes[b,t, 4].astype('int32')
                    y_true[l][b, j, i, k, 0:4] = true_boxes[b,t, 0:4]
                    y_true[l][b, j, i, k, 4] = 1
                    y_true[l][b, j, i, k, 5+c] = 1

    return y_true

假设一个batch_size N 个框,这N个框可能对应三个尺度,13-13 ,26-26, 52-52,每个尺度3个预测框,为了确定每个boundingbox 对应的最佳anchor,
计算boundingbox 与 9个anchor的IOU,则是N*9个,一个boundingbox9个,选出最佳IOU,得到N个IOU,找到bestIOU对应的boundingbox和对应的anchor的下标。3x [10,gride,gride,3,85],这样两个3的位置就找到了,gride,gride对应之前的坐标位置,置信度与概率都是1. 这是转化待训练的数据。

在这里插入图片描述
3. 检测
(1)在yolo_boxes_and_scores()函数中算出 网络模型3层的boxes(?4),box_score(?80)输出,及置信度。意思就是说 可以作画的位置坐标求出来了,对应框的得分,类别也都计算出来了,但是这是所有的网格预测的所有的框,有些得分太低,有些会重复框出来,NMS来解决这个问题,找到最合适的框,然后作图。
运行非极大抑制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值