【AI】ChatGPT-4の物体検出能力をYOLOv8と比較する
最終更新日: 2024/02/08 5:03pm
こんにちは。
小高です。
昨日のブログで、ChatGPT4の物体検出能力について触れました。
簡単に復習します。
会社の入り口に設置しているカメラが撮影した下の画像について、ChatGPT4に問い合わせました。
使用したモデルはgpt4-vision-previewです。
問い合わせ(プロンプト)は以下としました。
“画像に写っている物とその個数を箇条書きで回答してください。抽出する物は次の分類に当てはまるものだけとします。
また、信頼度が高い物だけを抽出することとします。
抽出する分類は、{0: 人, 1: 自転車, 2: 自動車, 3: オートバイ, 5: バス, 6: トラック, 7: 鳥, 8: 猫, 9: 犬}の9種類に限定します。
また、1つ以上抽出された物について信頼度と、その様子について箇条書き中に括弧付きで説明してください。”
これに対して、gpt4の回答は以下のものでした。
” 画像に写っている物とその個数:
– 人: 1人 (歩道を歩いている人。犬を連れている。)
– 自動車: 1台 (画像の中心付近に停車している黒い車。)
– 犬: 1匹 (人が連れている小型犬。)
これらの抽出物についての信頼度は高いと見られます。各物体がはっきりと映っており、特定しやすい状態にあります。”
残念ながら「自転車に乗っている人」を見落としてしまいました。
このように、画像に何が写っているか回答する仕事(タスク)を「物体検出(Object Detection)」といいます。
現在のAI技術が爆発的に発展したのは、この「物体検出」タスクの発展が契機になっています。(2012年)。
今日は物体検出タスクの著名モデルの一つ「YOLO(ヨーロー)」を使って、上の写真に写っている物体を検出してみます。
まず最初にYOLOでどんなことができるかYouTubeに動画をアップしました。
上の写真と同じカメラで撮影した動画をYOLOに与えて、物体検出させました。
バスや車の周りに枠ができて、busとかcarとか表示されていますね。これはYOLOが「これはバス、これは車」と判断していることを意味しています。
下の図は、動画の物体検出の仕組みです。上の動画もこのようして作成しました。
図:YOLOによる解析動画の作成方法
「デジタル動画はたくさんのデジタル写真のパラパラ漫画」です。音声は、漫画とは別に同梱されています。
よくfps(frames per second)いいますが、これは、動画1秒間にパラパラされる写真の数です。
この写真1枚を1フレームといいます。たとえば、40fpsの場合だと、1秒間に40枚の写真がパラパラされる、逆にいうと、25m秒で写真が一枚めくられます。
上の図にあるように、YOLOはオリジナル動画のフレームを1枚1枚抜き出して物体検出します。そして、その結果を改めてまとめて動画(図中の編集済み動画)にすると、YouTube動画の出来上がりです。(「YOLOは」と書きましたが、他のモデルを使う場合にも、同様の手順です)
YOLOですが、最も顕著な特徴としてよく挙げられるのが「物体検出の速度が速い」ということです。上の図にある「抜き出す、検出する、書き出す」の「検出する」が速い。
今回、YOLOは、手元の古いマシン(Intel Core i3, 3.30GHz。Ubuntu20.05LTS。当然GPUなどありません)にインストールして利用しました。
そのスペックのマシンで、1フレームあたりの物体検出速度は50m秒から150m秒程度でした。(動画の解像度は1920✖️1080のHDです。YOLOv8のモデルは640✖️640の画像を対象にするので、自動的に長辺が640pixになるようリサイズされ処理されます)
この「速い」という特性を活かして(もう少しいいPCを使うとか、動画のfpsを落としたりすれば)リアルタイム検出が可能です。下にイメージ図を掲載しました。
図:YOLOによる動画のリアルタイム検出
先にも書きましたが、40fpsの動画では1フレームが25m秒ほど「静止」しています。20fpsだと50m秒です。
私のオールドマシンでも、50m秒から150m秒程度でHD画像が処理できるのですから、上の図のように「動画の流れを止めることなく、フレームを差し替えてしまう」ことができそうです。
YOLOは、このように「動画の物体検出」を可能にするAIです。
話がそれますが、車の自動運転について想像していただければ、「絶え間なく入ってくる動画(道路状況)を解析して、(人が飛び出してきたときなど)瞬時に判断して操作に決定するAI」が絶対に必要だと思っていただけると思います。
それ専用のハードウェアとソフトウェアで実現される点で、YOLOより高速かつ高精度ですが、根本的な原理(AI)は同じと思われます。(個人的に、どんなハードウェアでどんなアーキテクチャになっているか是非知りたいところです)
さて。
「デジタル動画はたくさんのデジタル写真のパラパラ漫画」ですから、もちろんYOLOで「静止画」の物体検出ができます。
下にその結果を示しました。
図:YOLOv8によるカメラ画像の物体検出
使用したのは、YOLOv8のモデルyolov8n.pt(軽量なモデル)です。
検出対象とするクラス(物体の分類)は、ChatGPT4と同様に{0: 人, 1: 自転車, 2: 自動車, 3: オートバイ, 5: バス, 6: トラック, 7: 鳥, 8: 猫, 9: 犬}の10種類に限定しました。
結果、上の画像に示されるように
人 : 3名
車:1台
となりました。
人の数違い(2名が正解)、自転車の未検出、犬の未検出という誤りがありますので、単純に比較するとChatGPT4の結果の方が良かったことになります。
ChatGPT4は有料ですし、回答が戻るまでに平均5秒程度待たされます。YOLOは50m秒程度です。
YOLOを徹底的に訓練しなおせば、という議論もありかもしれません。
YOLOv8の再訓練については、機会を改めたいと思います。
自分としては、「いろいろあって楽しい」のは間違いありません。
←「【AI】医療とAI。ChatGPT-4の画像認識能力。」前の記事へ 次の記事へ「【AI】物体検出能力の比較。ChatGPT4、Amazon Rekognition、YOLOv8」→