[備忘録] Week11: 自走できるAI人材になるための6ヶ月長期コース

キカガクさんの半年にわたる講義の備忘録

2020.07.18 (土) Week 11

今週はupload した画像を分類するアプリの作成の後半戦でした。講師はポイントポイントでサポート(エラー対応)です。

自分は6種類の動物を判別するアプリを作りました。(先日の講義では5種類で作っていたのですが、考え直して6種類へ変更です。)学習済みモデルをどうDjapngo で動かすのか分からなかったので、時間がかかりましたがなんとか時間以内に完成。しかし、Heroku への deploy までは終わらず、Macbook 上での確認に終わりました。というのも、deploy に何度も失敗してしまいHeroku に怒られてしまったためです。また時間をおいて挑戦をしたいと思います。

Your account has reached its concurrent builds limit

少し追記 @7/19(日)

上記の問題は何とか解決し、Heroku への deploy まで完了しました。学習モデルの精度は良くはないですが、システム構築の最低限のフローは理解できたつもりです。

備忘録

Week 11 実施内容

・画像分類アプリ開発

学習済みモデルの読み込み

pytorch-lightning を Mac へインストール

Flask だけど読み込んだ画像の表示(参考)

推論結果を返す (Switch 文のように)

これだと、elif を繰り返し書かなくても大丈夫

Tensor 形式の一部の場所を取り出す方法

まだ理解は仕切れていないけど、Tensor 形式で[0][対象の数字].item() で行けるハズ

tensor([[0.2054, 0.2118, 0.0799, 0.1943, 0.2423, 0.0663]], grad_fn=<SoftmaxBackward>)
result_softmax[0][num].item()

Heroku へ push した時のエラー (slug size)

どうやら Heroku は500 Mbyte までしか無料で使えないらしい。不要なファイルはHeroku から削除して、.gitignore のように .slugignore ファイルを作った方が良い。

Slug Size の内訳の見方(公式サイト)

Heroku へ push した時のエラー (PyTorch)

色々調べると、そもそもPyTorch のサイズが大きいのが問題らしい。PyTorch はGPU/CPU モデルとCPUモデルの2種類用意されていて、CPUモデルだと容量が小さいようです。Heroku への deploy が再開できるようになったら再度試してみようと思います。

remote:        Collecting torch==1.5.1
remote:        Downloading torch-1.5.1-cp36-cp36m-manylinux1_x86_64.whl (753.2 MB)

これでもできるのかは次回試す。version の後に「+cpu」をrequirement.txt ファイルに追記する

pip install torch==1.5.1+cpu torchvision==0.6.1+cpu -f https://download.pytorch.org/whl/torch_stable.html
torch==1.5.1+cpu
torchvision==0.6.1+cpu

この書き方ではダメだった

ERROR: No matching distribution found for torch==1.5.1+cpu (from -r /tmp/build_3977f4b0/requirements.txt (line 40))

上記ではダメだったので、このサイトで今回利用するものをURL指定すれば良いみたい。

一応成功したようです。127 MBまで下がってました。

 Downloading https://download.pytorch.org/whl/cpu/torch-1.5.1%2Bcpu-cp36-cp36m-linux_x86_64.whl (127.3 MB)

Heroku へ upload したらDB 設定を忘れない

heroku run python manage.py migrate

改善できそうなところ

・CNN のクラスを別のファイルに書く
・入力画像 (Resize後) の出力および保存

あとでじっくり読みたいサイト

numpy とかはheroku でinstall するのに一手間必要らしい


この記事が気に入ったらサポートをしてみませんか?