見出し画像

AIにアンケート結果を数えてもらおう👀ChatGPT-4 vs Claude 3

ChatGPT-4とClaude 3を用いて、画像からアンケート結果を集計する試みについてまとめた記事となります。

なお、結果から言えば極めて少ない枚数であればほぼ正確にカウントできましたが、数十枚のレベルになるとどちらも正確にカウントすることはできませんでした。

今後これらの課題が解決される可能性がありますが、数を数えるというものは、また別の能力が必要だという気づきになりますね。
余談ですが、数を数える文化を持たない人達のことにもこの記事では軽く触れています。


アンケート

架空のアンケートを連携します。
よく街で見かける?シールを貼るタイプのアンケートを想定します。

特に意味は無いです。

Claude 3

この程度の枚数であれば正確に数えてくれます。
ただ、色の感知については、後述するChatGPTに劣る印象を受けました。

まとめていて思ったのは、○をシールと認識できていない可能性があります。
察してドットをカウントした印象も受けますね。

そして先述したように、枚数が一気に増えると正確性が劣るようになります。
全体的にバランスが良い、という判断はできますが、数を数えるというのは難しいようですね。

ChatGPT-4

同じ画像を連携しています。
こちらもまた正確にカウントしてくれました。

また、こちらも枚数が増えると途端に弱くなります。

おまけ:Gemini Adbanced

一応確認してみます。かなり自由です。
最近、1周回ってこのポンコツっぷりが愛おしく思えるようになりました。

まとめ

現状、正確に集計させるためには、別途一手間必要そうですね。
例えばOpenCVを活用するアイデアもあります。

  1. OpenCVで画像を読み込む

  2. 画像をグレースケールに変換する

  3. 2値化処理により、シールの部分を白、背景を黒にする

  4. 輪郭検出を行い、シールの輪郭を抽出する

  5. 検出された輪郭の数を数える

下記、単純に枚数を数えるだけのサンプルPythonコードです。

import cv2

# 画像の読み込み
img = cv2.imread('stickers.jpg')

# グレースケールに変換
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 2値化処理
_, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)

# 輪郭検出
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 輪郭の数を数える
num_stickers = len(contours)

print(f"シールの枚数: {num_stickers}")

今後、GPT-5が出てくればどうなるか分かりませんが、少なからず「数を数える」という能力においては、AIよりも人間が勝っていそうですね😼

一応、ChatGPT-4にこの路線で頑張ってもらいましたが、うまくいきませんでした。

結果が(493, 155, 498, 107, 265, 50)となっていました。
しかしながら、明らかに間違っている、として自分で気づけるのが凄いですね。

おまけ:数を数えるという文化

数の概念がない社会が存在することをご存じですか?
人間誰しも成長すれば数を数えられるようになる。そう信じている人も多いかと思いますが、これは後天的に授けられる能力です。

例えば「ピダハン族」については「少ない」か「たくさん」しか概念が存在しません。そのため、正確にカウントすることができないのです。
(ただし、1〜3までは区別出来ているようです。)
それで不自由しないのかと言われれば、大して不自由では無いようです。文化的にそれが許容されるのであれば、何ら障害にもなりません。

チャットAIが数える仕組みについては、実際のところどのような処理で行われているのかは不明ですが、実質的に人間のように「ざっくりと」読み取っているような気がします。
人間も少ない数であれば、数学的な教育が無くても数えられることも分かっています。人間の生得的な能力なのでしょうね。
これと同じように機能しているように思えてしまいますね。

つまるところ、AIは数え方それ自体は教わっていないが、ざっくり3個、7個とかは分かりますが、それ以上だと「たくさん」といった解釈をしているように感じてしまいます。

以下、参考です。


この記事が気に入ったらサポートをしてみませんか?