[Python] AI 14 Chainerによる動物認識学習モデル 描画読み込み

マウスで描いた動物や指定した画像ファイルを判定させるところでつまずきました。

描画判定ではボタンを押しても反応がなく、画像判定では画像確定ボタンを押すとブラウザが500 Internal Server Errorになりました。

JavaScriptファイルやHTMLファイルをチェック、Chromeのコンソールを確認し、さらにDockerのBashを起動してコンテナ内部のファイルを確認するなどしました。

結局、jpg化した描画ファイルを保存するディレクトリが作られていないことが原因でした。たった2行の追加で解決です。ここで足止めを食らっている読者の方は結構いそうです。

初級者泣かせの教本で今回も大分時間を使いましたが、DockerやJavaScriptのスキルアップにつながりました。AIを学ぶというよりも間違い探しの様相を呈してきました。モチベーションを維持できるのであれば、それも良しです。

この教本が出版された2019年6月時点でのライブラリのバージョンを調査しましたので、Dockerfileを載せておきます。リリースが6月に近すぎるバージョンは避けて、やや古めを選んでいます。

UPLOAD_FOLDER = './images'
# 以下2行を追加
if not os.path.exists(UPLOAD_FOLDER):
    os.makedirs(UPLOAD_FOLDER)
FROM python:3.5-stretch

RUN mkdir -p /usr/src/app
ADD ./app /usr/src/app
RUN pip3 install --upgrade pip
RUN pip3 install requests==2.21.0
RUN pip3 install Flask==1.0.4
RUN pip3 install flask-cors==2.1.3
RUN pip3 install opencv-python==4.0.1.24
RUN pip3 install opencv-contrib-python==4.0.1.24
RUN pip3 install tensorflow==1.15
RUN pip3 install keras==2.2.4
RUN pip3 install chainer==5.0.0
RUN pip3 install Pillow==5.4.1
RUN apt-get update
RUN apt-get install -y libgl1-mesa-dev

WORKDIR /usr/src/app
EXPOSE 5000
RUN export FLASK_ENV=development