質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

588閲覧

物体検出の評価時にバウンディングボックスがでたらめに表示される

退会済みユーザー

退会済みユーザー

総合スコア0

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/12/03 04:44

編集2019/12/04 01:00

前提・実現したいこと

TensorflowでSSD_Kerasを使って自作画像データで物体検出をしようとしています。
学習させた重みを用いて評価したところ、バウンディングボックスが評価用画像をでたらめに埋め尽くしてしまいました。

これは何に問題があるのでしょうか。問題があるならどこをいじればいいのでしょうか。

過学習でしょうか?それとも学習させたデータに問題があるのでしょうか?
エラーは出ていませんし、train_lossもval_lossも適切に減少しているので、学習はできていると思うのですが…

大量のバウンディングボックスがでたらめに出てくる理由と解決策が知りたいです。

発生している問題・エラーメッセージ

評価時にバウンディングボックスがでたらめに表示されて画面を埋め尽くしてしまう

実際の画像↓
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Q71

2019/12/03 12:12

SSD はやってないですが、Faster R-CNN では、大量のバウンディングボックスから、候補を絞るということをしています。それぞれのバウンディングボックスについて、「これが当たっていると思われるスコア」があり、そのスコアによって絞り込みを行います。 それに相当する部分がありませんか?
退会済みユーザー

退会済みユーザー

2019/12/04 01:09

すみませんが、各バウンディングボックスのスコアを算出して絞り込むコードがあるかどうか分かりませんでした。評価時バウンディングボックスを生成している部分のコードを載せますね。 preds = model.predict(inputs, batch_size=1, verbose=1) results = bbox_util.detection_out(preds) for i, img in enumerate(images): # Parse the outputs. det_label = results[i][:, 0] det_conf = results[i][:, 1] det_xmin = results[i][:, 2] det_ymin = results[i][:, 3] det_xmax = results[i][:, 4] det_ymax = results[i][:, 5] # Get detections with confidence higher than 0.6. top_indices = [i for i, conf in enumerate(det_conf) if conf >= 0.85] top_conf = det_conf[top_indices] top_label_indices = det_label[top_indices].tolist() top_xmin = det_xmin[top_indices] top_ymin = det_ymin[top_indices] top_xmax = det_xmax[top_indices] top_ymax = det_ymax[top_indices] colors = plt.cm.hsv(np.linspace(0, 1, NUM_CLASSES)).tolist() plt.imshow(img / 255.) currentAxis = plt.gca() for i in range(top_conf.shape[0]): xmin = int(round(top_xmin[i] * img.shape[1])) ymin = int(round(top_ymin[i] * img.shape[0])) xmax = int(round(top_xmax[i] * img.shape[1])) ymax = int(round(top_ymax[i] * img.shape[0])) score = top_conf[i] label = int(top_label_indices[i]) label_name = voc_classes[label - 1] display_txt = '{:0.2f}, {}'.format(score, label_name) coords = (xmin, ymin), xmax-xmin+1, ymax-ymin+1 color = colors[label] currentAxis.add_patch(plt.Rectangle(*coords, fill=False, edgecolor=color, linewidth=2)) currentAxis.text(xmin, ymin, display_txt, bbox={'facecolor':color, 'alpha':0.5}) plt.show()
Q71

2019/12/04 23:30

コメントしているじゃないですか。 > # Get detections with confidence higher than 0.6. コードは0.85に修正されていますが。 そうすると、 教師データがどんなものでしょうか。 どれくらいの量のデータを どれくらい学習しましたか。 その時の信頼性は?
退会済みユーザー

退会済みユーザー

2019/12/05 01:18

教師データはOKクラスが97枚、NGクラスが101枚の計198枚です。バッチサイズ2で50エポック学習させました。学習終了時のlossが0.067、val_lossが0.19でした。また学習終了時に表示された画像では1.0の精度でNGを検出できていました。
Q71

2019/12/05 08:18

提示されている画像が「でたらめ」ということは、85%以上の確率でOK、NGというエリアは、全くOKでもNGでもない、という事ですか? 私の所と比較すると、ロスが0.06というのは全然学習ができていません。1.0e-6はいかないと。学習に使った画像(教師画像)でも、同じ結果ですか? 直前のコメントの言葉だと、分類問題のように思うのですが?適切な選択がされていますか?
退会済みユーザー

退会済みユーザー

2019/12/05 09:06

>提示されている画像が「でたらめ」ということは、85%以上の確率でOK、NGというエリアは、全くOKでもNGでもない、という事ですか? >直前のコメントの言葉だと、分類問題のように思うのですが?適切な選択がされていますか? 締まっている(OK)ボルトと締まっていない(NG)ボルトを分類して検出する問題です。教師画像は1枚につき1つのボルトが中央にはっきりと映っている写真を選別して使いました。ボルト全体を囲むようにアノテーションしたので、質問に添付した画像で言うとNGのバウンディングボックスが中央のボルトを囲むように表示され、ボルトのない箇所に何も表示されていなければ成功だと考えています。 >私の所と比較すると、ロスが0.06というのは全然学習ができていません。1.0e-6はいかないと。学習に使った画像(教師画像)でも、同じ結果ですか? 教師画像で評価させた場合を試したところ、OKとNGのバウンディングボックスが重なって表示されていたので添付した画像と同様の結果になりました。やはり学習ができていたと思っていたけれど全く十分ではなかったということなんでしょうか。
Q71

2019/12/05 10:00

ごめんなさい。同じような事をしているので、守秘義務に反しないようにアドバイスできる自信がありません。これ以上答えられそうにないです。 学習ができているかどうかについては、先の通りです。あとできそうなアドバイスとしては、範囲は小さくした方がいいですよ。
退会済みユーザー

退会済みユーザー

2019/12/06 00:07 編集

いえいえ、ありがとうございます。 範囲というとアノテーションする範囲のことだと思うんですが、検出対象が複数写っていたり小さかったりする画像でも人の目で判断できるようなら、教師データとして使用して大丈夫でしょうか。 教師データ用の画像を選別・加工(トリミングなど)する時に気をつけていることがあったらよろしければ参考までに教えてください。
Q71

2019/12/06 01:41

複数写っているものは可能です。というか、きちんとアノテートして下さい。 小さすぎるものは、アノテートしなくても構いません。ただ、ドット数などできちんと区別はしないといけません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問