Day51 アプリ制作進捗
1. 自主制作アプリ構想~データ取得
- 雲の画像を再度精査し、一度ImageFolderでラベリング実施
- 1ラベルにつき50枚弱しか画像がなかったので、再度crawling実施
- icrawlでGoogleImageCrawler、max_num = 300と指定するも80枚程度しかDLされず
- icralerのissueをgithubで確認したところ、同様の事例が他の人も発生している.
- (https://github.com/hellock/icrawler/issues/79)
- やはりこういう問題を調べるときは英語のほうがかなり情報ヒットする. (日本語はむりぽ)
- 一旦、解決策として「時間指定」で分割してDLするも、同じ画像が多数DLされる問題. (同じ画像を消していけば良いのだけど、そうすると一気に画像数が減りそう)
- BingImageCrawlerに切り替えて、max_numをあえて上限あげてクローリング実施
- 体感的に、Bingは意外にもGoogleよりかはまともなイメージを拾ってくる.
- そして、英語による検索ワードのほうがはるかにいい.
- GCPで実行し、max_num = 700で、画像516枚収集. max_num通りにはならなかったが、及第点.
- icralerのissueをgithubで確認したところ、同様の事例が他の人も発生している.
- この条件で、他の雲画像も拾っていく.
- 拾った画像の中で、イラストになっているもの + 他に写ってしまっているもの、とかがあるが、それを除くのが結構地道で大変.
- 人間でさえ見分けるのが難しい画像がある....精度をどこまで求めるか.
- 前処理終わったが、画像選別だけでも2時間近くかかった...!大丈夫か.
- お花とか、もっと見分けがはっきりつくものを選んだほうが最初は良かったのかもしれん.
- 画像の選別が終わり、一度resnet18で回す. ただし、valとしてはやはり50%ほどの正解率.
resnetをさらに深くしたresnet50で回す. 1 epochからほぼ学習完了している. が、valの精度が全く出ない. 1 epochから過学習とは...
GoogLeNet, AlexNetも試したが、どれもvalidationのaccuracyに大きな変化はなかった. ← コードにミスが発覚. 正しく実装できていなかったので後日再度実行する.
何かしら参考となる文献/資料がないか今一度探したところ、下記参考情報を発見.
Kaggleのコンペで以下を発見.
https://www.kaggle.com/competitions/cloud-classification/leaderboard
- 招待制コンペ. 最高得点も0.5程度.
https://www.kaggle.com/competitions/cloud-type-classification2
- open. 最高正解率で0.95ほどなので、この仕組を使いたい.
- datasetを使って、resnet50で学習を試みている.
研究より
-
- いずれの論文も、10層以下. ←AlexNetとかは逆に深すぎる?
- 仮説として、「そもそものデータセットが悪い」説もある.
- なるほど、1つ目の論文は SWIMCAT(http://vintage.winklerbros.net/swimcat.html) をつかっていた.
- 2つめは、実験データをここ (https://journals.ametsoc.org/view/journals/atot/31/1/jtech-d-13-00048_1.xml) から引用していた.
- 個人でいいデータセットを揃えるのは難しい. Kaggleや論文等駆使して、収集する他ないか.
Kaggleのこのコンペデータセット (https://www.kaggle.com/competitions/cloud-type-classification2) でresnet50 finetuningしたところ、0.90近くのval score達成. やはりデータセットの良し悪しはかなり重要ということらしい.
上記Kaggleとpaperを見て思ったこと: データセットがよいこと + 分類するクラスを限定的なものにしていること
- 最初自分がやろうとした分類: 9クラス. 正直、人間でも見分けがつかないクラスもあった. (羊雲とウロコ雲とか..、層 (高度)が違うらしいが、それを画像判別するのは非常に厳しい.
- 現実的に、明らかに違うものをKaggle/paperではトライしていた. (羊雲と積乱雲のような)
- 精度50%でずっと唸るのも時間の無駄なので、一旦は完成させることを目標に、Kaggleで手に入れたデータセットとモデル、テスト画像を使ってアプリを引き続き作っていく.
2. DBの基礎
- 下記書籍を参考に進める.
- 実践で学ぶ機械学習活用ガイド (https://www.amazon.co.jp/%E3%83%87%E3%83%BC%E3%82%BF%E5%8F%8E%E9%9B%86%E3%81%8B%E3%82%89Web%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%81%BE%E3%81%A7-%E5%AE%9F%E8%B7%B5%E3%81%A7%E5%AD%A6%E3%81%B6%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E6%B4%BB%E7%94%A8%E3%82%AC%E3%82%A4%E3%83%89-%E5%90%89%E5%B4%8E%E4%BA%AE%E4%BB%8B/dp/4839969221)
- Postgresの環境構築完了.
- PythonからDB動かす方法 → SQLAlchemyざっと確認.
3. 今後の課題
- アプリのフロントエンド作成開始
- Dockerの基礎学ぶ
- DBとの連携 (一旦はFlaskで行う)
- 画像認識/自然言語処理の発展学習
- データ分析 (実務編)
Kaggle日記
本日はキカガクに集中したため進捗なし.