[Amazon SageMaker JumpStart] ResNet50でファインチューニングしてみました
1 はじめに
CX事業本部の平内(SIN)です。
AWS re:Invent 2020で発表されたAmazon SageMaker JumpStart(以下、JumpStart)は、TensorFlow Hub や PyTorch Hub に公開されているモデルをGUIから簡単にデプロイして利用できてしまう凄い機能です。
ここDeveiopers.IOでも既に、データアナリティクス事業本部の貞松さんによって、ResNet18で画像分類をやってみたブログが公開されています。
そして、JumpStartでは、既存のモデルをデプロイするだけでなく、自前で用意したデータでファインチューニングもできてしまうとの事です。
という事で、私も試してみました。
Vision関連のモデルを眺めてみると、まだ、Object Detectionで、ファインチューニングに対応しているものが見つからなかったので、Image Classification(ResNet 50)を使用しました。
2 データセット
データは、以前、回転台に乗せて撮影した動画から切り出した、お菓子の画像を使用しました。
商品は、5種類で、各クラス200枚となっています。
画像は、クラスごとのフォルダに入っています。
そして、そのままの形でS3にアップロードしました。
3 Fine-tune Model
ResNet 50を開いて、下の方にあるFine-tune Modelを設定します。
Data Sourceは、先程、画像を置いたS3のバケットを指定し、その他は、全部デフォルトのままとしました。
開始すると、学習が始まります。データセットの形式の調整なども、全部自動でやってくれてるって事です。
しばらく待って、学習が終了すると、Statusは、Complateとなり、下に、Deployのメニューが表示されます。
4 Deploy
Deployをクリックすると、推論用のDockerへのデプロイが開始されます。Dockerイメージ選択、入力形式の指定など全く必要なく、全部自動です。
5 推論
デプロイが完了すると、エンドポイントのステータスは、In Serviceとなり、今度は、Open Notebookが選択可能になります。
Note Bookは、ResNet 50の確認ができるようになっています
このままでは、犬と猫の写真で確認することになってしまうので、検出したいお菓子の画像をいくつかアップロードし、推論にかけるデータを変更しました。また、ラベルの一覧(ProductLabels.txt)も書き換えています。
images = {} with open("IMG_0114.jpg", 'rb') as file: images["IMG_0114.jpg"] = file.read() with open("IMG_0115.jpg", 'rb') as file: images["IMG_0115.jpg"] = file.read() with open("IMG_0117.jpg", 'rb') as file: images["IMG_0117.jpg"] = file.read() with open("IMG_0119.jpg", 'rb') as file: images["IMG_0119.jpg"] = file.read() with open("IMG_0120.jpg", 'rb') as file: images["IMG_0120.jpg"] = file.read() with open("IMG_0122.jpg", 'rb') as file: images["IMG_0122.jpg"] = file.read() with open("IMG_0123.jpg", 'rb') as file: images["IMG_0123.jpg"] = file.read() with open("IMG_0124.jpg", 'rb') as file: images["IMG_0124.jpg"] = file.read() with open("IMG_0125.jpg", 'rb') as file: images["IMG_0125.jpg"] = file.read() with open("ProductLabels.txt", 'r') as file: class_id_to_label = file.read().splitlines()
ProductLabels.txt
ASPARA CRATZ NOIR OREO PRETZEL
6 結果
推論結果です。結構、いい感じだと思います。
7 最後に
今は、まだ限定的かも知れませんが、今後、対応するモデルがどんどん増えて、データを用意するだけでできるファインチューニングも各種対応していくことが予想されます。
JumpStar、ホント、恐ろしいツールです。
※モデルのエンドポイントの削除を忘れないように!