えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

学習前からレモンの画像を除去する超高速AIサーバを作成しました。

この記事は、からあげ帝国 Advent Calendar 2023の16日目の記事です。

qiita.com


最近のからあげ帝国の発展は凄まじいです。

私が敬愛しているからあげ先生も本を出版されたそうです。すごい!📚

1年前にDiscordに建国された「からあげ帝国」にも150名以上集まり、スケールの大きさを感じます。

karaage.hatenadiary.jp

私もからあげ先生を目指して日々努力あるのみです。


レモンデータからからあげ先生を守れ❗

からあげ先生については有名すぎて説明不要でしょう。元闇のエンジニアでありブロガーです。

(なぜからあげ先生は「元」闇のエンジニアなの?→以下のURLも見てね)

ar-ray.hatenablog.com


からあげ帝国では「からあげにレモンをかけたら死刑」という法律があり、レモンは忌まわしき存在です。

当然ながら、レモンの写真を本に挟めばそれは焚書となってしまい、作者は運が良ければ帝国から追放されてしまいます。


手動で書くなら作者追放でなんとでもなりますが、今の時代は生成AIの台頭によってレモンの画像が大量に生成可能になってしまいました。

もし、からあげ先生がAIの学習をしたい気分になったときにデータセット内に誰かがレモンの画像を入れてしまったらそれはそれは大変なことになってしまいます(語彙力)。

例えば、物体検出向けのデータセットを用意するためには少なくとも画像を1万枚、多いと数十万枚になるため、その中からレモンの画像を人力で探すのはとても大変です。

この事態を打開するためにもAIを活用します。


超速いimage2text!?

少し話が脱線しますが少しお付き合いください。


私のTLには平和的な私とは真逆のやばい人(?)がたくさんいます。

その中で特に筆頭に挙がるであろうフォロワーさんが面白いデモをしており超伸びていました。

このAIは BLIP という画像に注釈をつけるタスクをこなすAIです。

本来は、私が取り組んでいるロボコンチーム「StrayedCats」に導入するAIの検討の一例として試されていたものです。

huggingface.co

私はココらへんのAIは全くわかっていないのですが、マルチモーダルAIとしてChatGPTが出る前の1年は話題になっていた気がします。(気のせいかな?)

正直なところ、エッジAIばかり見てきていたので、ここらへんの複数情報を入力として与える系のAIはまだまだ遅いもんだと正直思っていました。

そのため、1sに1回の周期で2値分類できればいいや〜くらいに思っていたところ、動画では、RTX3080で30fpsくらい出ているではありませんか!?


これはAPI芸どころじゃく普通にメインの制御に使えるぞとなり、image2txt研究が画像処理版を超えて走り出すことになります。

これからの弊チームの活躍にご期待ください🤗(宣伝)


‥先程の話の続きはzennで書くとしましょう。

BLIPの使いみちを今更になって模索仕出したのですが、実は一つ非常に手元でほしいなぁと思っていたタスクがあったので、それを作ることにしました。

それは、適当に撮ってきた画像からいらない画像をはじくです。

データセットを集めるのは大変(真理)

これは本質情報なのですが、AIのデータセットを集めるのは超大変です。

画像を大量に集めるのはもちろんのこと、その画像の質もとても重要です。

全く物体が入っていものがあれば、画像がブレたり暗すぎ・明るすぎで物体の境界が分かりにくくなったり、遠すぎや近すぎ、見切れていて判断が分かれるものなど多数です。

動画で収集するのは効率がいいものの、結局手で仕分ける羽目になってしまいます。


世に出ているAIは、COCOデータセットなどの枚数・画像の性質・アノテーション精度のいずれも素晴らしいデータを使用しているからこそ実現する精度なんですね。

これのカスタマイズをマルチモーダルAIにやってもらおうというわけです。

イデアは少し古いですが、レモンを除去してデータセットの質を高めることは、からあげ帝国の発展にはとても重要です。


今回は、そのflaskサーバのためにリポジトリを作成しました。

github.com

サーバーにすることで、手持ちのmacbookスマホからでも簡単にアクセスできることを狙ってます。


使い方

環境が整っていればすぐに始められます。

環境


インストール手順

gitの部分はzipファイルのダウンロードでもOKです。

git clone https://github.com/Ar-Ray-code/FirstClassification.git
docker-compose up first_classification

終了する場合は、コンソール上からCtrl+cで抜けます。


Webブラウザ<サーバのIPアドレス>:8080 にアクセスします。

非常に貧弱なUI🫠

「choose file」で画像を押し込んだzipファイルをアップロードします。

使用したファイルは、4万枚の画像が入ったCOCO2017 Datasetを使用します。

6GBくらいあるので、2時間くらいかかりました。

手持ちのRTX3060Tiだと1秒に10枚くらい捌けるので、人よりはずっと速いですね。


結果。どうやら「karaage」は入っていなかったのでレモンのみ抽出できました。

20枚くらい集まりました。この枚数は逆に探すのは大変そうですね。


結構詳しく取れるみたい

今回はレモン画像の除去のためにシンプルな絞り込みをしましたが、質問を工夫すれば服の色や特定の物体の個数・行動の様子もしっかりと回答してくれるみたいです。

これが1秒で10枚くらい回るのすごいなぁと思います。

からあげ帝国バンザイ🙌