tampopopo
@tampopopo

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

deeplabv3を使った深層学習

解決したいこと

deeplabv3+を使った透かし領域の抽出の深層学習

https://qiita.com/mucchyo/items/d21993abee5e6e44efad
誰でも出来る!DeepLab v3+でGPUを使って自作データセットで学習・推論する
というのを参考にしてやってます。

自分で試したこと

そのサイトに書いてある
実際に自前のデータで透かし領域が入っているところをlabelmeでアノテーションしてやったのですが
最後の[画像とモデルを指定して推論と結果表示を行う]と言うところのプログラムを実行したところこのような画像のように全体になっている状態なのですが,これは何が原因などかわかったりしますか?申し訳ございません。
学習ができてないとかお願いします。IMG_7940.jpeg

0

1Answer

  • 教師データに誤りがある場合
    • そのまま誤りを学習する
      • たしかに画像のようになる
  • 教師データが正しい場合
    • 不均衡データである場合
      • たしかに画像のようになる
    • データが足りない場合
      • たしかに画像のようになる
  • テストデータが教師データの性質と大幅に異なる場合
    • たしかに画像のようになる

透かしの面積比とか気になるところですね.

0Like

Comments

  1. @tampopopo

    Questioner

    教師データが画像によって透かしが入っている位置が違うので画像のように縦横が入っているところが透かし領域です.なので不均等データである場合に該当するのでしょうか?またどうやってちゃんと表示させることが出来るのか知りたいです.
    スクリーンショット 2023-11-06 203221.png

  2. 参考記事そのままの表示用コードでやっているなら,ちゃんと表示できていますよ.これはもう質問者が学習させて得られた結果そのものです.
    モデルも信用に値するものなので,信用ならないのは質問者が設定したモデルのパラメータやデータセットになります.

    全部の教師データがそのように半分ぐらい透かし領域があるならとりあえず不均衡ではないですね.

  3. @tampopopo

    Questioner

    そうなんですね,とてもありがたいです.これはとりあえず100枚の画像で1000回学習したのですが,これは学習できているということなのでしょうか? それとも表示用コードを修正しないといけないのでしょうか?
    スクリーンショット (16).png

  4. loss全然下がってないので学習まだできてないみたいですね.
    横軸はtraining_number_of_stepsだと思いますが,train_batch_size次第では全然足りないと思います.

  5. @tampopopo

    Questioner

    このグラフが下がっていればいいってことですかね?
    横軸はそれであってます.学習回数が1000回しかしてないからでしょうか?どのくらいしたらいいとかありますか?

  6. train_batch_sizeが参考記事そのまま1で,100枚の画像でtraining_number_of_steps=1000なら,たったの10epochしか回してないことになりますね.train_batch_sizeをメモリに入る限り上げた上で,とりあえずlossが1を切るぐらいのtraining_number_of_stepsを設定することになります.

    普通はEarlyStoppingしますが,いったん100~1000epoch回せるようにしたらいいんじゃないでしょうか.

  7. @tampopopo

    Questioner

    なるほど,本当に助かります.一度試してみてまたわからないことがあったら質問するかもしれないです.本当に申し訳ございません

  8. @tampopopo

    Questioner

    とりあえず、まずはサンプルの方からしようと思い、voc2012でやったのですが、これも前と同じでバックグラウンドだけ表示されていたのですがサンプルでもできないのはなぜでしょうか?
    また事前学習済みモデルを使用したいのですがどのようにしたらいいですか?

  9. 事前学習済みモデルのダウンロードからダウンロードしてきて,tf_initial_checkpointにその Path を指定したら,事前学習済みモデルでモデルを初期化できるはずです.

    voc2012でやったのですが、これも前と同じでバックグラウンドだけ表示されていたのですがサンプルでもできない

    未学習だからうまくいってないんじゃないでしょうか?事前学習済みモデルでない限りは,大規模データセットで数日ほど学習を回す必要があると思います.

  10. @tampopopo

    Questioner

    なるほど、そうなんですね。ありがとうございます。
    学習/検証データリストの作成のところで質問なのですがSegmentationClass_npyの中のファイルを作っていなくて、.npyがない状態でやっていたのが原因なのでしょうか?

  11. いらないって書いてあるので関係ないんじゃないでしょうか.

  12. @tampopopo

    Questioner

    やっぱり関係ないですか...
    どうしても結果の表示の時に背景しか表示されなくてどうしたらいいのか困っている状況です。

  13. 過学習の可能性が捨てきれませんね.学習データの精度と,検証データの精度がどのように変化していくか確認しましょう.乖離していれば過学習で説明がつきます.

  14. @tampopopo

    Questioner

    一応、学習回数を10万回にしたらsukashi1.png
    このように一応少し透かし領域部分がセグメンテーションされるようになっていったのですが、スクリーンショット (17).pngこっちはtennsorboardであるのですが、どのような感じですかね?まだまだ学習回数を増やせばきれいにセグメンテーションされますかね?それとも過学習の可能性がありますか?

  15. 学習が進んでると見受けられます
    回数を増やせば,確実に教師データに対しては綺麗にセグメンテーションされると思います.
    過学習についてですが,それを知るための検証用データを与えてないのでしょうか,val_lossのグラフを見ない限りは過学習かどうか判断できません

Your answer might help someone💌