AWSのServerless Inferenceを活用して、サーバーレスで学習から推論までを実装しよう
サーバーレスでAIシステム開発スタートダッシュ 第2回
Serverless Inferenceを活用したAI Botの実装紹介
システム概要
これまで解説してきた、Amazon SageMaker Serverless InferenceとAWS Lambdaを利用して物体検知を行うAIシステムを実装しましたので中身を見ていきます。
題して「ナンバープレート加工Bot」。
具体的な構成としては、LINE Botをフロントエンドとし、LINE上で画像を送信すると、その画像内にある車のナンバープレートをAIが検出し、検出された部分を黒塗りにした画像をユーザーに返すというものです。

プライバシーの観点から、Botに送信している画像内のナンバープレートはぼかしていますが、実際にはぼかし処理は行わず、そのまま送信されます。
モデルの学習
先ほど述べたように、コスト削減のために学習はSageMakerではなくColabolatory上で行いますが、いくつかの注意点があります。Colabolatoryの無料枠では利用できるメモリ上限が12GBまでであることや、長時間実行しているとランタイム接続が切れて学習が途中で止まることがあるため、バッチサイズや入力画像サイズに制限がかかったり、エポック数を増やして一気に長時間学習させることが難しかったりする点には注意しておきましょう。
今回使用するモデルはYOLOv5で、これを学習させて車のナンバープレートを検出できるようにします。以下はそのリポジトリのリンクです。
まず、ナンバープレートの箇所をラベリングした教師データを以下のように用意しました。

これには画像の拡大縮小や水平移動などのオーグメンテーションも含め、合計648枚のデータがあります。これらのデータはGoogle Drive上に配置し、学習を行うためにGoogle Colabolatoryを活用しました。
!git clone https://github.com/ultralytics/yolov5 # clone
%cd yolov5
%pip install -qr requirements.txt comet_ml # install
import torch
from google.colab import drive
drive.mount('/content/drive')
python train.py --data <教師データへのパス> --epochs <エポック数> --weights <転移学習元の重み> --batch-size <バッチサイズ>
学習プロセスはYOLOv5のリポジトリをクローンし、train.pyを実行することで行いました。バッチサイズは32に設定し、総計70エポックの学習を実施しました。その結果、以下の写真のようにナンバープレートを検知することができました。

この記事は参考になりましたか?
- サーバーレスでAIシステム開発スタートダッシュ連載記事一覧
-
- OpenAI APIを使って議事録作成Botを作ってみよう!
- AWSのServerless Inferenceを活用して、サーバーレスで学習から推論まで...
- サーバーレスでAIシステム開発をはじめよう! サーバーレスの概要とAIシステムにおける活用...
- この記事の著者
-
株式会社ブリューアス AI-TEAM(カブシキガイシャブリューアス エーアイチーム)
モバイルのアプリを中心にUI/UXデザインから開発保守まで、幅広い実績を持つ会社です。専門的な知識と豊富な開発経験を活かし、AIとサービスの統合を推進しています。 Brewus.inc
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
