a5chin/centernet

gt_bboxes

Opened this issue · 5 comments

gt_bboxesですが、画像毎に枠数が異なると思いますが、現状のloss等の計算では、1画像1枠、または、すべての画像で同じ枠数を期待しているように見えます。
各画像、枠数が異なる場合には、Ground Truthとしてどのような値を入力すればよいでしょうか。

@aruaru0 さん,Issue を頂きありがとうございます.

現状のloss等の計算では、1画像1枠を期待しているように見えます。

おっしゃる通りです.
汎用性がなくて申し訳ないです.現状で私が使用しているデータでは,1 つの画像に対して 1 つのアノテーションとなっているためこのような実装にしていました.

各画像、枠数が異なる場合には、Ground Truthとしてどのような値を入力すればよいでしょうか。

本リポジトリは mmdetection を参考にして CenterNet を使用しやすいように変更しているものなので,mmdetection を参考に本リポジトリを変更して Pull Request を頂けると大変ありがたく思います.

汎用性がなくて申し訳ないです.現状で私が使用しているデータでは,1 つの画像に対して 1 つのアノテーションとなっているためこのような実装にしていました.

返答ありがとうございます。上記、了解しました。
lossの入力を含め全体をどのように変更するか悩ましく(dataloaderでheatmapとかに変更した方が良い気もしますので)、ちょっと変更してpull requestまでは難しいかもです。もし、納得のいく変更ができたらpull requestしますので、その時はよろしくお願いします。

dataloader で heatmap とかに変更した方が良い気もします

上記についてですが,私の勉強不足もあり理解できないのでもう少し詳しくお聞きしたいです.

ちょっと変更してpull requestまでは難しいかもです。もし、納得のいく変更ができたらpull requestしますので、その時はよろしくお願いします。

ぜひお待ちしています!

上記についてですが,私の勉強不足もあり理解できないのでもう少し詳しくお聞きしたいです.

考えている内容ですが(そこまで詳しくないので間違っているかもですが)
datasetを読み込むモジュールで、画像と真値を読み込んで、それをimage, heatmap, hw, centerに変換して出力するようにします。それぞれのフォーマットは(ch, w, h), (class, w, h), (2, w, h), (2, w, h)。

こうしておけば、出力フォーマットが固定(枠数に限らず一定)になるので、dataloaderモジュールで(batch, ch, w, h)....のフォーマットに変換されて楽かなと。

lossの部分は、上記フォーマットを直接読み込むように処理を変えるだけ(現状コードはloss内部で変換している)なので、修正楽かなと思いました。

あとは、util関数として、1枚の画像に対してラベルから、heatmap, hw, centerを生成する関数を用意すればいいかなと。

説明わかりにくくて申し訳ないです。思いつきで、ちゃんとまとまっていないので。

返信ありがとうございます.

おっしゃっていることがようやく理解できました.
loss関数内で行っている一部の変形処理を Dataset 及び DataLoader で行うことでフォーマットが固定されてわかりやすいということだったのですね!

確かにおっしゃる通りな気がします.わかりやすく答えて頂きありがとうございました!