はじめに
Builder の皆様、機械学習ソリューションアーキテクトの 呉和仁 です。単独名義だと 献立のレコメンド 以来ご無沙汰しておりました・・・。と思ったのですが、今回の記事は私一人ではどうにもならないところまで行き着いてしまったのでまた共同執筆者がいます。後ほど紹介します。
また、記事は 2 部で構成される予定で、この記事は第一部として機械学習のモデルを作成します。次回の記事でデバイスの作成からモデルのデプロイと実際に使ってみるところまでを行う予定です。
X ポスト » | Facebook シェア | はてブ »
ご注意
本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。
builders.flash メールメンバー登録
builders.flash メールメンバー登録で、毎月の最新アップデート情報とともに、AWS を無料でお試しいただけるクレジットコードを受け取ることができます。
AWS Builders Online Series は見ていただけましたか ?
1/20 に AWS Builders Online Series という基礎コンテンツのみで構成され、約 3.5 時間で集中的に学習できる、グローバルでも人気のイベントが開催されていました。(現在アーカイブ配信中)
その中で私も 、Amazon SageMaker JumpStart を用いた IT エンジニアによる機械学習 PoC のすゝめ というタイトルで 1 セッション担当しました。
簡単に内容を説明すると、Amazon SageMaker JumpStart を使えば機械学習の経験がなくてもコードの読み書きができれば簡単に機械学習 PoC を実施できます、という内容です。
その題材として具体的なプロジェクトっぽく仕立て上げ、たけのこの里好きの G くん (架空の存在です) と、きのこの山を混入してくるきのこの山好きの U さんがいて、G くんのお菓子に U さんがきのこの山を混入してくるのを G くんは機械学習を利用してどれくらい検出できるのか、という PoC を行いました。
機械学習の結果を物理的な空間へ適用する大変さ
3. G くんの行ったことの再現 (モデル作成と推論)
3-1. G くんの状況の復習
あらためて Builders Online Series をまだ見ていない、もしくは忘れてしまった方向けに G くんの置かれた状況を再確認しましょう。
むかしむかし、たけのこの里が大好きな G くんがいました。G くんはいつだってたけのこの里を食べられるよう、念願だった会社の福利厚生でたけのこの里が自動で支給される会社 AVVS 社 (架空の会社) に就職しました。
しかし困ったことが発生します。きのこの山が大好きな U さんが同僚で、同じくきのこの山が支給されており、布教活動と称して G くんのたけのこの里にきのこの山を混入するという G くんにとって、“いともたやすく行われるえげつない行為” をしてきます。
G くんは IT エンジニアで機械学習もちょっとかじっており、IT ですべてを解決してやる、というマッチョな思想の持ち主です。たけのこの里が支給されるベルトコンベアの上にカメラを取り付け、きのこの山を検出したらアラートを飛ばす装置を考え、まずは機械学習 PoC をとして、画像から機械学習でたけのこの里ときのこの山を検出できるのかを確認しました。
機械学習はデータ収集、学習、推論の順番で行うのでそれに沿って行いました。Gくんが行った再現から始めましょう。
3-2.データ収集
3-3. ラベリング
3-4. 画像が少なくても良いモデルを作る
さて、G くんはここまでやったのに不安にかられたそうです。果たして 23 枚だけの学習でいけるのか・・・? と。確かに私も機械学習を依頼されてデータが 23 個だったら、回れ右して帰ってしまいそうです。ここで、G くんは画像が少なくてもなんとか成功させるべく 2 つの方法を考えました。
3-5. クラウド推論
G くんはトレーニングが終わった後、出来上がったモデルを使って推論してモデルを試していました。確かにモデルが出来上がったら本当にまともに動くかどうかを確認しないと使えるモデルかわかりません。 Amazon SageMaker JumpStart はクラウドにすぐデプロイできるので、クラウドデプロイを試しました。
実施した結果
推論時間も動画連結を除いて 3520 枚で、13 分 20 秒 = 1 枚あたり 0.2 秒強で推論できることがわかりました。クラウド推論なので画像のネットワーク転送時間を入れても 0.2 秒であれば、エッジの弱めのリソースを差し引いても速度的に問題ないのではないでしょうか。また、きのこの山が画面に出始めた頃は、たけのこの里と誤認識する場合もありましたが、ほぼ正確に取れていることもわかりました。
だいぶ (記事が) 長くなりましたが、ここまでで G くんがやっていたことの追体験が完了です。
4. Amazon SageMaker JumpStart のモデルを用いたローカル推論 (追加)
4-1. モデルのダウンロード
4-2. 推論コード作成
モデルの URI もわかったので早速手元 (SageMaker Studio) にダウンロードしましょう。
# re-run 用の削除コマンド
!rm -rf model/
# modelダウンロードディレクトリ作成
!mkdir -p model/
# モデルを S3 からダウンロード
!aws s3 cp {model_s3_uri} ./model/
# モデルディレクトリへ移動
%cd model/
# 解凍
!tar zxvf model.tar.gz
model.tar.gz
model.tar.gz を除くと巨大 (92 MB, 46 MB) なファイルが 2 つあります。coco と finetunedと書かれているので、COCO2017 の pre-trained model と、Fine-Tune 後のパラメータ (Deep Learning の重みとバイアス) でしょう。また、code ディレクトリがあるので、この中に推論コードがあるに違いません。code ディレクトリも見てみましょう。
%cd code
!ls -l
total 2124
-rw-rw-r-- 1 root root 0 Jan 22 01:04 init.py
drwxr-xr-x 2 root root 6144 Jan 22 02:18 constants/
-rw-rw-r-- 1 root root 9240 Jan 22 01:04 inference.py
drwxr-xr-x 3 root root 6144 Jan 22 02:18 lib/
-rw-rw-r-- 1 root root 0 Jan 22 01:04 requirements.txt
-rw-rw-r-- 1 root root 5 Jan 22 01:04 version
inference.py
ありました、ありましたよ ! inference.py が !
詳細は割愛しますがこれが推論コードですね。あと、constants ディレクトリ下には定数が定義されていました。lib ディレクトリには OpenCV (画像処理のライブラリ) が格納されていました。
というわけでこの code ディレクトリ配下にあるリソースで推論してみましょう。出来上がったコードは以下からダウンロードできます。先程と同じ lattice.jpg を使ってみます。
表示された画像

これで、ライブラリさえ揃っていればどこでも推論できることが確認できました。
5. IoT プロトタイプエンジニア召喚
6. G くんにプレゼントしたいデバイスの構成検討
7. 次回予告
の三本立てです。(まだ1文字も書いていない妄想のため、実際にお送りする内容とは大幅に異なる可能性があります) お楽しみに !
筆者プロフィール
呉 和仁

市川 純

Did you find what you were looking for today?
Let us know so we can improve the quality of the content on our pages