猫ちゃんもAWSで幸せになっちゃいました!
猫を2頭飼いしている副編集長・金本。家族の一員として愛猫たちをかわいがっていますが、最近はひとつ悩みを抱えていました。それは、猫のごはん(フード)のあげかたです。
ラビは一気にどか食いするタイプ。ミーは少食&回数多めと、食べ方が真逆。結果、同時にごはんを出すとラビがほとんどをたいらげてしまい、ミーがひもじい思いをすることに…。
ならば!と、自動でペットのごはんを出す「オートフィーダー(自動給餌器)」で、時間差でごはんを出してみたものの、ラビの食欲の前には無駄無駄無駄で…。
金本:…という状況なんですよ。いやー、困りました。
綱藤:なるほど、だから最近ずっと編集部やライターのみんなに猫グッズの話を聞いて回っていたんですね。猫ごとにちょうどいい量のごはんを出せればいいですけど、取材で家にいないこともありますもんね。
金本:それです。オートフィーダーは便利なんですけど、なにかこう…もう一歩、猫に合わせたソリューションが欲しいというか…。
綱藤:だったら、Amazonのクラウドコンピューティングサービス・AWS(アマゾン ウェブ サービス)の人に相談してみれば、なんかいい感じになるんじゃないですか? 以前にも「幹事ボタン」や「バーチャル司会者」とか、トンデモアイデアにも応えてくれましたし。
金本:え? AWSってハードウェアの制御とか開発も相談できるんだ? なるほど...ちょっと「AWS Startup Loft Tokyo」に聞いてみます!
AWS Startup Loft Tokyoへの相談はオンラインで。自宅からも相談できちゃいました
目黒にあるコワーキング&相談スペースの「AWS Startup Loft Tokyo」は、新型コロナウイルス対策に伴い休館中。
しかし、現在でも「Online Ask an Expert」の提供、ウェビナーでの情報発信を行なうなど、オンラインサービスが受けられるようになっています。
これには、AWSアカウントの発行と、AWS Startup Loft Tokyoの利用登録(無料)を済ませ、上部メニューの「オンライン相談」から予約できます。詳しくはQ&Aページの「Ask an Expertについて」をどうぞ。
教えてエキスパートさん! 猫2匹のごはん管理を完璧にしたいんです!
オンライン相談(Online Ask an Expert)では、オンラインミーティングツールを利用して、相手の顔を見つつ、ときに資料・画面を共有しつつ相談を進められます。今回相談を受けてくれたのはAWSエキスパートの「濱」さん。そして機械学習ソリューションアーキテクトで無類の猫好き「大渕」さんです。
金本:今日はよろしくおねがいします。いつも突然で恐縮ですが、AWSを使って猫のごはん管理を完璧にしたいんです。
濱:猫のごはん。わかりました! まず、どんな課題があって、どこをゴールに設定しているのかを教えてください。
金本:現状の課題と、ゴールはこんな感じです。
【前提】2匹の猫で、食べる量と食べ方が違う
【課題】2匹それぞれに適した量とタイミングで食べてくれない
【ゴール】フィーダーを緻密に操作して、猫ごとにごはんをあげる
金本:同時にごはんをあげてもラビがササッとやってきて、両方のごはんを食べちゃう。後からミーには追加であげているんですが、ラビに横取りされまいと急いで食べているのが不憫で…。
濱:なるほど、それは解消してあげたいですね。
金本:あと、ラビは好き嫌いがないんですが、ミーのほうはフードの好みもあるんですね。人間が毎日面倒を見ずとも、フィーダーを使って猫ごとに適切なごはんをあげられないかと試行錯誤してるんですが、いまいち決め手が見つからなくて。
濱:わかりました。では猫ちゃんをシステム的に判別して、フィーダーと連携させたいわけですね。
金本:はい、たとえばフィーダーの前に置いた体重計とかで猫を判別して、ラビが来た時は大粒のフードを多めに、ミーが来たら小さいフードを小分けに。といったコントロールができないか?と考えているんですが…。
濱:重量計ですと、猫がそこに乗るとは限らないですよね。 今回の場合はフィーダーの近くにカメラを設置して、猫をビジュアル的に見分ける画像認識の仕組みが良いんじゃないでしょうか。まさにAWSジャパンでは、「にゃんテック(AWS Nyantech)プロジェクト」という取り組みがあるんです。
金本:なんにゃん...にゃんテック? ですか?
濱:はい、これはAWS Startup Loft Tokyoの猫好きからはじまったプロジェクトで、AWSのテクノロジーを使って、猫ちゃんを幸せにする社会を作り上げたいというテーマがあります。
今日は、このにゃんテックで機械学習を使って猫を見分ける方法を紹介している「大渕」に意見を伺いながら、識別方法やアプリケーション管理のアドバイスができればと思っております。
金本:よろしくおねがいします!
猫を見分けるテクノロジーはAWSにあるんです
金本:まず、画像を使った識別ってどんな方法があるのでしょう? 画像認識の知識がないので、詳しく教えてもらいたいのですが…。
大渕:はい、お任せください! これはざっくりわけると2種類あります。ひとつは、 画像の特徴を数値化して、類似したものを検索する 「類似画像検索」アプローチ。もうひとつは、実際の猫さんの画像をたくさん学習させたAIモデルに猫の顔を認識させる「画像分類」アプローチです。
金本:今回のケースはどちらがおすすめでしょう?
大渕:一般的に、後者のAIモデルを学習させて作るのはメリットもありますが、学習のためのデータを集めるのに時間がかかります。
金本:なるほど。機械学習って面白そうだなというところもあるんですが、仮に学習でAIモデルを作るとしたらどんな手順になりますか? そんなに手間なんですか?
大渕:独自のAIモデルへ学習させるのに一番いいのは、猫さんを見分ける時のシチュエーションと同じ画像をたくさん集めるのがベストです。同じ猫さんの写真でも、カメラや部屋・場所が違うと結構違って見えてしまうことがありますし…。
金本:それは確かに時間がかかりそうですね。「類似画像検索」ではどう効率化できるんですか?
大渕:事前に同じシチュエーションで撮影した画像が必要ですけど、数十枚〜数百枚の写真ではなく、少数である程度判断するという技術領域なので、導入しやすいんです。
もし、導入後に見分け精度に問題があるなら、運用の中で猫さんの画像が溜まってきているはず(画像認識を行なうフックとなる写真が撮影されていく)です。そのタイミングで人間が写真を見て、ラビなのかミーなのかを分類して、学習を伴う方へシフトしていくといった、フェーズを分けてシステムを育てていくのも良いかと思います。
金本:なるほど。こうしてメリットとデメリットや、今後の展開を含めてアドバイスもらえると、すごくわかりやすくて安心できます。今回は最終的には精度がほしくなると思うので、「画像分類」ケースで相談させてください!
どんなハードウェアが必要ですか? これって相談できます?
金本:猫ごはんシステムを稼働させるには、カメラやフィーダーを操作するハードウェアが必要だと思うんですが、こういったご相談もできますか?
大渕:もちろんです。 今回は猫さんが来たことを検知するためのセンサなどは使用しないとのことなので、カメラだけで猫が来たことを検知する必要があります。そのため、まずカメラは、猫さんが来ようが来まいが、ずっと撮影し続ける必要があります。でも、それもすべてクラウドにあげてしまうと無駄なデータが貯まってしまうので、Raspberry Pi(ラズベリーパイ)のような小型コンピュータで、データを整理するのが良いと思います。
金本:クラウドにアップする前に、猫が映っていない画像は省くようにRaspberry Pi側で処理するんですね。
大渕:そうです。猫さんが映っているかどうかの判定は「OpenCV」などの汎用的な画像処理ライブラリでも検知できるので、そちらを流用してもいいですし、前のフレームとの差分を取って、差分が多い時だけ「なにか映っている」としてクラウドにデータを上げてもいいと思います。
金本:なるほど...。ていうかAWSに関係ない部分の設計も提案してくれるんですね。
大渕:必要とあれば、できる範囲でサポートしますよ。
金本:こちらも手探りなのでありがたいです。ところで、猫ごとのフィーダーの動かし方はどうすればいいでしょう? 今は、ボタンを押すとごはんが出てくるフィーダーを2つ並べてある状態です。
大渕:では、フィーダーの横に置いたカメラで猫さんの写真を撮って、接続された AWSに画像をアップロードしていきましょう 。猫ちゃんが識別されたら、「SwitchBot」でボタンを押すといった流れがスムーズかと思います。
金本:おお、わりと後付けでもなんとかなりそうですね!
猫を見分けてフードを出すにはどういう処理が必要ですか?
金本:猫の分類方法と、必要なハードはわかりました。では、AWS側ではどういった処理が求められるんでしょうか?
濱: クラウド側ではRaspberry Piから上がってきた写真をAIモデルに与えて、画像を分類するまでのロジックが必要ですね。画像系は低コストで使えるオブジェクトストレージの 「Amazon S3(Amazon Simple Storage Service)」に格納しましょう(上図①)。猫の判断は「Amazon SageMaker Ground Truth」で事前にラビとミーでラベリングしておけばOKです。
この後は色々やり方があるんですが、アップロードをイベントとして、関数を発火する役目は「AWS Lambda」が適しています。Lambdaはサーバーレスで、使うときだけ起動するので、使わないときはお金がかかりません。サーバーメンテナンスも不要なので、運用コストも抑えられます(上図②)。
金本:そのあと画像を識別するわけですね。これにはどんなサービスを使うのが良いのでしょうか?
濱:導入しやすさですと、専門的な知識を必要とせずに画像の物体やシーンを特定 するカスタムモデルを作れる「Amazon Rekognition Custom Labels」があります。これを利用して、ラビ/ミーを判別しましょう。判断確率の%も設定できるので、たとえば「写真の猫がラビである確率が90%以上ならフードを出す」などの判断にすれば、一瞬横切っただけだったり、映りが微妙だったりする写真は確率が低くなるので、意図しないタイミングでフードがでてしまうのも防げます(上図③) 。
金本:なるほど! 確率で出す/出さないを振り分けていけばいいんですね。
濱:はい、この方が実用的かなと。あとは「AWS IoT Core」からRaspberry Piへとリクエストを送って、SwitchBotが押されるという流れはどうでしょうか(上図④-⑤)。メリットとしては、仮想マシンが無いので、そのあたりの管理リソースが少なくて済みます。
金本:いいですね。わかりやすいです。でも、これだとカメラを見つめるとフードが出てくる、「無限ごはん」になりませんか?
濱:それも困りますね。では、データベースの「Amazon DynamoDB」を使ってどの猫にフードをあげたのかの履歴を書き込んでおきましょう(上図⑥)。履歴情報からあげた回数や時間で管理できると思います。
金本:無限ごはんも防げる!これは理想的ですね。ありがとうございます!
申し訳ないけど、いずれAWSのコストを抑えて進化させたいです! そんなことも相談できます?
金本:これで猫たちも、私も安心して暮らせそうです。ところで、「Amazon Rekognition」で作ると、稼働している時間分の課金が必要ですよね。将来的にこの画像分類のコストを抑えて実装することもできるんでしょうか?
濱:はい、今回は導入しやすいサービスを提案させてもらったのでこうなりましたが、もし機械学習の知識やコーディングスキルがあれば「Amazon SageMaker」の中の機能だけで実装できます。これは機械学習にまつわるコーディング、学習フェーズ、推論フェーズなどのステップをおよそフルマネージド環境で実行できるサービスです。
金本:「Amazon SageMaker」も稼働している間コストがかかりますよね?
濱:はい。でもデータ探索やモデルの学習、推論用のコンテナイメージの作成という一連の作業については 「Amazon SageMaker」のリソースを使って、実際の推論処理は、この推論用のコンテナイメージを「Lambda ファンクション」としてデプロイ(配置)するとよいと思います。今回の処理ならLambda ファンクションでの実行でも問題ないはずで、これなら使った時だけの課金で済みますね。
濱:たとえば、この図のような構成です。機械学習モデルと、推論するのに必要なライブラリなどを入れたコンテナイメージを作成してAmazon ECRにプッシュしておき(上図①)、それをLambdaファンクションにデプロイして使います(上図②)。この図ではAmazon SageMakerでコンテナイメージを作るところまでやっていますが、最終的にコンテナイメージがECRにプッシュされればどこで作っても構いません。
また、極端なことを言えば「Amazon SageMaker」で機械学習を済ませてから、Raspberry PiやPCなど端末側にモデルをデプロイして、クラウドを使わずに推論させてもいいですね。
金本:AWSでご相談しているのに「AWSのクラウドを使わずに」なんて結論をいただけるとは思っていませんでした。アリなんですか!?
濱:もちろんです。最適化できるところはちゃんとお伝えできますし、たとえ最終的にAWSを使わないとしても、「Amazon SageMaker」を使った機械学習をしてもらう形になるので、色々なところでAWSを使ったモデルが出てくれると、私たちも嬉しい限りです。
金本:いや、感服しました。導入しやすいレベルから、発展系までしっかりアドバイスいただけて助かりました。このアドバイスを元に、猫を幸せにするソリューション、作ってみようと思います!
濱&大渕:猫さんの幸せを願っています!
相談から猫のごはん管理ソリューションが誕生
金本:いやー、綱藤さん。「AWS Startup Loft Tokyo」よかったです。相談はオンラインでスムーズですし、なんと「稼働にAWSを使わない」発展系までアドバイスいただけました。
綱藤:さすがですね! 「AWS Startup Loft Tokyo」のエキスパートさんは、ニーズに合わせて最適なものを提案してくれるスキルが半端ない。で、結局どうなったんですか?猫ちゃんは。
金本:完成したのがこちらです。
綱藤:すごい、ちゃんと見分けてごはんをあげてますね!
金本:アドバイスそのままにはなりませんでしたが、設計段階からしっかりと相談できたおかげで完成までスムーズに進みました。無料でお話できるので、初手から相談するってのはすごくショートカットできますね。
綱藤:じゃあ今度は、これを応用して会社も顔認証にしてもらえませんか? 副編集長権限で。
金本:顔を近づけると、最新ガジェットが出てくる…とか?
綱藤:ごはん何杯でもいけますね。
こうして、「自動猫ごはん管理システム」を作り上げたことで、金本の悩みは見事解消。猫ちゃんたちもちゃんと自分のごはんを自分のペースで食べられるようになり、きっと以前にもまして幸せになったに違いありません。
そしてこの幸せを作り出した、「AWS Startup Loft Tokyo」への相談ハードルの低さとエキスパートの対応力には改めて驚かされました。
冒頭でも言ったように、現在は対面相談はできませんが、オンライン化によって地域を問わず、移動時間もかからず日本全国どこからでもアドバイスを受けられるようになったのは、大きなメリットだと言えます。
頼もしいAWSのエキスパートたちは、相談者が実現しやすいモデルを提案してくれるのはもちろん。問題解決やコストを減らすお手伝いもしてくれるのです。今回のように、結果としてAWSを使わないものだとしても、きっと良いプロダクトのためのアドバイスを貰えるはずですよ!
そんな柔軟な対応とさまざまな知識・アドバイスを貰える「AWS Startup Loft Tokyo」のオンライン相談「Online Ask an Expert」。相談は無料でできるので、サービス・プロダクトの開発に悩みを抱える方々はぜひ相談してみましょう。
猫ちゃんとエンジニアたちが幸せになるテックも、きっとここから生まれていきます。
"Online Ask An Expert" は2021 年 9 月 20 日 (月) よりリニューアルへ向けて準備中となっています。
再開の際は、AWS Startup Loft Tokyo ウェブサイトにて告知がされる予定です。
再開までの技術的なご相談は、こちらのお問い合わせ( https://aws.amazon.com/jp/contact-us/ )へお気軽にお問い合わせください。
今回利用したチュートリアル
・画像分類
開発協力:株式会社Envbest
Source: AWS Startup Loft Tokyo