CenterNet(ctdet)学习笔记



  • 自己的理解啦,先列参考吧,感觉参考比我的有价值
    参考:
    centerNet特别好的一篇解读
    高斯半径理解
    高斯半径代码存在的一个问题
    focal loss实现的要点

    我一开始是写在石墨,可以用石墨看着比较舒服一点
    https://shimo.im/docs/gGkQgv9JRQgqd89y/ 《CenterNet(ctdet)学习笔记》



  • Anchor Box缺点

    (1)Anchor的设置需要手动去设计,对不同数据集也需要不同的设计,相当麻烦;
    (2)anchor的生成是预先设定好的,对于较大或者较小的目标检测效果较差。
    (3)Anchor的数量过多使得存在严重的样本不平衡问题。
    (4)训练时需要计算anchor和真实框的IoU,占用大量内存和时间

    论文创新点

    • “anchor”只考虑位置,没有尺寸框,不用手动分前后景
    • 每个目标只有一个正“anchor”,不用NMS
    • 仅缩放4倍,采用了更大分辨率的feature map
    • 对于关键点,只考虑左上右下这两个点

    模型

    0_1600133422798_cf0c3304-3914-4293-98fe-184086c941d1-image.png



  • ★heatmap

    centerNet的heatmap应该是跟cornetNet的生成方式是差不多一样的.
    这张图来自cornerNet,可以看到左上右下两点在一定半径内的生成的预测框和真实框的IoU是很大的,所以在设置heatmap时,直接将距离GT左上右下两点很近的点设置为0太绝对了,所以采用二维高斯核和设置IuO用一种温和的方式过度一下比较好。
    0_1600133546280_b9de79ed-219d-4bcb-b621-b4c6ff9e73ba-image.png

    论文里的一些表示

    0_1600133761318_85102702-8598-4317-9298-70ad6e3b6010-image.png

    高斯半径生成(corner net)

    代码来自corner net
    0_1600133837025_a43006eb-c2ec-40c9-98eb-bc9195288bdc-image.png
    r1,r2,r3来自三种可能的预测框和GT的覆盖方式
    0_1600133900722_78098c79-5bd6-4a6c-a5a6-ca1445e6f4f5-image.png

    0_1600133922552_d13faad8-4874-4438-adf8-e074099fa438-image.png

    0_1600133941228_3439cc41-be29-4c81-8b19-f35cfa95e46f-image.png

    高斯核生成heatmap

    0_1600134026149_69a5b5be-05fd-419d-b879-46ceb799adb0-image.png
    简单矩阵描述一下,也方便后面loss理解
    0_1600134057998_0414418e-e1fd-4a27-ad80-73f0c35ae81a-image.png

    点变框(detector)

    • 网络的输出结果是对每个预测坐标点有 class_num + 4(w,h,offset_x,offset_y)个值

    • 总是要有个操作来代替nms的作用,对heatmap选取某个点的值比周围8个点值都大或等于的点(3*3 max pooling),然后score排序 不考虑类别(? )响取top-100
      0_1600134157210_676cfdf9-3c1d-4b41-bc1b-0d0d6ae4edc5-image.png

    0_1600134167997_cbefb737-91cf-49b0-a23b-fd823351dd9a-image.png

    0_1600134198499_8b119b38-cddd-4e7a-9d48-c294fbada24d-image.png

    0_1600134225698_ce9520fd-01be-42fd-b177-81cef803bd0c-image.png



  • LOSS

    0_1600134765124_36607c81-e92c-44e9-83a2-22bc1e18833f-image.png

    OHME

    仅将损失较大的部分反传,直接忽略简单样本损失
    例:同一样本不同关键点的loss,排序,对其top-k的loss进行再训练

    Focal loss

    二分类交叉熵

    0_1600134859803_cd246f5c-de50-4b3a-910a-d2610945e540-image.png

    Focal loss

    相当于加权重
    0_1600134898305_02abe3ab-f8e8-4d6f-99e5-29944d7097c6-image.png

    0_1600134907588_4ee13c17-1742-4ad9-89d5-ed92e84074e7-image.png

    heatmap loss(目标中心点损失)

    在focal loss结合实际做的改变
    0_1600134945076_5abfd330-b02d-4884-9994-84b00578ea44-image.png

    0_1600134999339_b0e30b90-d2d6-44e2-b082-bef6c391306f-image.png

    ★实现focal loss的几个关键点

    1. 正确的公式
    2. 要有sigmoid确保数值稳定
    3. 输出层要设置正确的bias

    size loss

    0_1600135085566_341eb871-6540-4eb1-8432-38c4c6491b8f-image.png

    offset loss

    0_1600135105760_2fcadf7b-045e-4675-a077-cb7d4101965a-image.png



  • 结果

    0_1600135154595_b2091eac-e3b7-45df-bb35-b9fa342d61d2-image.png



  • 有太多图片放上来都说太大了。。。我就直接截图了😂 ,然后截取的部分就越来越多,CV方向论文前沿变化太快了,但是经典还是经典,值得多次理解的!



  • focal loss的bias的点在它的论文(RetinaNet)中有说:
    0_1600135466440_1eaff879-ac89-4b77-9e00-604bd4dedf8b-image.png
    0_1600135475939_33c75ff5-c71d-4f69-b0f2-3a967a3ded7e-image.png
    0_1600135486585_e4385104-342b-4c65-a12f-b163b80ff1f2-image.png


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

与 Dian 的连接断开,我们正在尝试重连,请耐心等待