前提・実現したいこと
私は現在物体検出の勉強をしています。そこで、今現在デフォルトボックスからバウンディングボックスに変換するコードで疑問点があり、今回質問させていただきました。
①スライスについて、通常[始まりの位置:終わりの位置:スライスの増分]と書いてあったのですが、この認識が合っているのなら、下記コードのdbox_list[:, :2]はどういう意味なのでしょうか?
②デフォルトボックスからバウンディングボックスへの数値の変換はこれで合っているのでしょうか?教科書には、そのようなことが書かれておらず、いきなりこの計算をし始めていて、納得がイマイチできませんでした。
すいませんが、教えていただけたら大変うれしいです。よろしくお願いします。
発生している問題・エラーメッセージ
エラーメッセージ
。
def decode(loc, dbox_list): #必要な関数はオフセット情報とデフォルトボックスの情報
"""
オフセット情報を使い、DBoxをBBoxに変換する。
loc: [8732,4]
SSDモデルで推論するオフセット情報。
dbox_list: [8732,4]
DBoxの情報
boxes : [xmin, ymin, xmax, ymax]
BBoxの情報
DBoxは[cx, cy, width, height]で格納されている、サイズ[8732,4] locも[Δcx, Δcy, Δwidth, Δheight]で格納されている、サイズ[8732,4] オフセット情報からBBoxを求める boxes = torch.cat(( dbox_list[:, :2] + loc[:, :2] * 0.1 * dbox_list[:, :2], dbox_list[:, 2:] * torch.exp(loc[:, 2:] * 0.2)), dim=1)
①↑スライスどうゆう原理でこのようになっているのでしょうか?
boxesのサイズはtorch.Size([8732, 4])となります BBoxの座標情報を[cx, cy, width, height]から[xmin, ymin, xmax, ymax] に boxes[:, :2] -= boxes[:, 2:] / 2 # 座標(xmin,ymin)へ変換 boxes[:, 2:] += boxes[:, :2] # 座標(xmax,ymax)へ変換
②↑これがデフォルトボックスからバウンディングボックスへの変換ってこれで本当にあっているのでしょうか?
return boxes
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー