根據MTCNN中P網絡的輸出,反算到原圖中畫框

根據MTCNN中P網絡的輸出,反算到原圖中畫框

上一篇博文,通過P網絡的輸出,經過一系列比較複雜的工作,得到了我們想要的[_x1,_y1,_x2,_y2,C],_x1,_y1,_x2,_y2是四個偏移量,C是置信度,下面介紹如何反算到原圖畫框。

在這裏插入圖片描述
start_index是索引
offset是偏移量
cls是置信度
scale是縮放尺寸
stride是步長,MTCNN中步長是固定的
因爲在做圖像金字塔的時候,對原圖乘以了一個scale,所以在反算的時候要除以scale

 # 將回歸量還原到原圖上去
    def __box(self, start_index, offset, cls, scale, stride=2, side_len=12):

        _x1 = (start_index[1] * stride) / scale
        _y1 = (start_index[0] * stride) / scale
        _x2 = (start_index[1] * stride + side_len) / scale
        _y2 = (start_index[0] * stride + side_len) / scale

        ow = _x2 - _x1
        oh = _y2 - _y1

        _offset = offset[:, start_index[0], start_index[1]]
        x1 = _x1 + ow * _offset[0]
        y1 = _y1 + oh * _offset[1]
        x2 = _x2 + ow * _offset[2]
        y2 = _y2 + oh * _offset[3]

        return [x1, y1, x2, y2, cls]

x1 = _x1 + ow * _offset[0]
y1 = _y1 + oh * _offset[1]
x2 = _x2 + ow * _offset[2]
y2 = _y2 + oh * _offset[3]
上面的公式是這麼回事:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章