No Code, No Life

データサイエンティストを目指すしがないエンジニアのブログ

Day51 アプリ制作進捗

1. 自主制作アプリ構想~データ取得

  • 雲の画像を再度精査し、一度ImageFolderでラベリング実施
    • 1ラベルにつき50枚弱しか画像がなかったので、再度crawling実施
  • icrawlでGoogleImageCrawler、max_num = 300と指定するも80枚程度しかDLされず
    • icralerのissueをgithubで確認したところ、同様の事例が他の人も発生している.
    • 一旦、解決策として「時間指定」で分割してDLするも、同じ画像が多数DLされる問題. (同じ画像を消していけば良いのだけど、そうすると一気に画像数が減りそう)
    • BingImageCrawlerに切り替えて、max_numをあえて上限あげてクローリング実施
      • 体感的に、Bingは意外にもGoogleよりかはまともなイメージを拾ってくる.
      • そして、英語による検索ワードのほうがはるかにいい.
    • GCPで実行し、max_num = 700で、画像516枚収集. max_num通りにはならなかったが、及第点.
  • この条件で、他の雲画像も拾っていく.
    • 拾った画像の中で、イラストになっているもの + 他に写ってしまっているもの、とかがあるが、それを除くのが結構地道で大変.
    • 人間でさえ見分けるのが難しい画像がある....精度をどこまで求めるか.
  • 前処理終わったが、画像選別だけでも2時間近くかかった...!大丈夫か.
    • お花とか、もっと見分けがはっきりつくものを選んだほうが最初は良かったのかもしれん.
  • 画像の選別が終わり、一度resnet18で回す. ただし、valとしてはやはり50%ほどの正解率.
  • resnetをさらに深くしたresnet50で回す. 1 epochからほぼ学習完了している. が、valの精度が全く出ない. 1 epochから過学習とは...

  • GoogLeNet, AlexNetも試したが、どれもvalidationのaccuracyに大きな変化はなかった. ← コードにミスが発覚. 正しく実装できていなかったので後日再度実行する.

  • 何かしら参考となる文献/資料がないか今一度探したところ、下記参考情報を発見.

  • Kaggleのこのコンペデータセット (https://www.kaggle.com/competitions/cloud-type-classification2) でresnet50 finetuningしたところ、0.90近くのval score達成. やはりデータセットの良し悪しはかなり重要ということらしい.

  • 上記Kaggleとpaperを見て思ったこと: データセットがよいこと + 分類するクラスを限定的なものにしていること

    • 最初自分がやろうとした分類: 9クラス. 正直、人間でも見分けがつかないクラスもあった. (羊雲とウロコ雲とか..、層 (高度)が違うらしいが、それを画像判別するのは非常に厳しい.
    • 現実的に、明らかに違うものをKaggle/paperではトライしていた. (羊雲と積乱雲のような)
  • 精度50%でずっと唸るのも時間の無駄なので、一旦は完成させることを目標に、Kaggleで手に入れたデータセットとモデル、テスト画像を使ってアプリを引き続き作っていく.

2. DBの基礎

3. 今後の課題

  • アプリのフロントエンド作成開始
  • Dockerの基礎学ぶ
  • DBとの連携 (一旦はFlaskで行う)
  • 画像認識/自然言語処理の発展学習
  • データ分析 (実務編)

Kaggle日記

本日はキカガクに集中したため進捗なし.