-
Notifications
You must be signed in to change notification settings - Fork 335
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【第二章】p.89 Dbox 出力部分の実装に関しての質問 #42
Comments
@tabasoon さま ご質問ありがとうございます。
理由は、画像サイズをそのまま使用していると、ネットワークの重みで画像サイズや画像サイズの変化に対応・吸収する必要があるからです。 例えば、画像サイズ300の場合は、画像サイズ1のときと比べ、同じ出力を出すには重みは1/300である必要があります。 基本的にPyTorchの場合は入力は平均0、標準偏差1の分布に近いものを想定し、それに対応して重みパラメータの初期値を自動的に初期化しています。 そのため、例えばネットワークの途中でもバッチノーマライゼーションを実施して層への入力を規格化します。バッチノーマライゼーションはネットワークの伝搬の途中の話ですが、今回の規格化はネットワークの最初で同じ規格化をしている、そういうイメージになります。 ディープラーニングの回帰ではどうように、入出力は0~1になるように規格化し、それになんらかの値をかけ算して、本来求めたい物理量を計算する、という手順をとることが一般的です(と私は認識しております)。
S'k = sqrt(S_k*S(k+1)) 申し訳ございませんが、「このような計算式になったときに、ここで計算が破綻する(0除算?)などになるのでは?」の具体的な例をいただけますでしょうか? お時間のある時に、ご返信いただければ幸いです。 ご質問いただき、誠にありがとうございます。 |
ご回答ありがとうございました
for k, f in enumerate(self.feature_maps): # [38, 19, 10, 5, 3, 1]
S'_6 = sqrt(S_6 * S_7) となりますが、S_7 は原著論文では議論されておらず (∵ k is in [1, m (=6)] )、勝手に S_k の式に k=7 を代入してS'_6を算出していいのか判断がつかなかった、という内容になります。 以上、ご確認をよろしくお願いいたします。 |
@tabasoon さん ありがとうございます。 今回本書の物体検出の章を書くにあたり、学習済みモデルを https://github.com/amdegroot/ssd.pytorch その関係上、参考先から実装方法を大きくは変更しないようにしています。 参考先ではdefault boxesを、PriorBoxとして以下のように実装しております。 それをある程度流用し、分かりやすいように書き換えたため、というのが回答になります。 ですが、いちいち与えなくても・・・、もどかしい。。。 また、
については、そうですね。 私の実装上(というか、amdegrootさん)では、 S'6 = root(264/300 * 315/300) と実装しており、論文の S_k = S_min + (S_max - S_min)*(k-1) / (m-1) で(S_min=0.2、S_max=0.9は論文の指定通りだとすると) S_6 = 270と計算されます。さらにここで、kに無理やり7を代入すると になります。 現在の実装のconfigureでは、264と315になっており、微妙にずれているのは、 なんだかもどかしい回答しか返せず大変申し訳ございませんが、 |
なるほど、了解いたしました。 ご丁寧に回答して頂き、ありがとうございました。 |
@tabasoon さん とても重要な質問とディスカッションをありがとうございます。 小川雄太郎 |
改めて Dbox 定義の箇所を読んでいて気づいたのですが、本書 p.90 5行目 sample code 中の max_sizes の config 設定の記述に誤植があります。 (p.90 5行目、./utils/ssd_model.py, 465 line) # 'max_sizes': [45, 99, 153, 207, 261, 315] コメントアウトされている箇所なので動作には影響のない箇所ですが、一応指摘させていただきます。 以上、ご確認をよろしくお願いいたします。 |
@tabasoon さん ありがとうございます。 誤植としてissueで他の読者の皆様にお知らせする共に、コードを修正いたします。 |
初めまして。表題の件に関しまして、二点ほど質問がございます。
S_k = S_min + (S_max - S_min)*(k-1) / (m-1)
(m; 特徴マップの数、k は1~mの整数、S_min = 0.2, S_max = 0.9)
と書かれていて、画像サイズ (300*300) に対する相対座標系で全て記述できるように思います。
一方、本書の実装では、予め min_size と max_size を規定した上で画像サイズ 300 で割るという実装になっていますが、これには何か意図がございますか?
また、DBox の中心座標に関しても、f_k として feature_size の値をそのまま採用すれば特徴量マップの各pixelの中心座標がとれ、原著論文もそのような記述であるように思うのですが、同様の実装になっている点も併せてご回答いただけると幸いです。
S'k = sqrt(S_k*S(k+1))
これが定義できないように思うのですが、これに関してご教授いただけると幸いです。原著論文にも何も書かれておりませんので。。。
以上、よろしくお願いいたします。
The text was updated successfully, but these errors were encountered: