はじめに
Jevが汎用のゼロショット分類器みたいなものだとわかり、分類器といえばMNISTでしょう、ということでMNISTやらせてみたら全然精度が出なかった、というお話です。
MNISTのtestデータから各数字10枚ずつ、計100枚をseed=42で抽出し、全条件で同じ画像を使用しました。追加学習・例示なしの探索的比較で、MNIST全体やモデルの一般的な性能を示すものではありません。
やってみたこと
マリオができる!テトリスができる!ということで、みなさんが画像をASCIIアートみたいにしてJevに送り込んでいたので、マネしてMNISTをやらせてみました。
①JevにASCIIで送り込んでみる
実際に100枚をランダムに抽出して2値化して渡してみたところ、なんと正解率は38%しか出ませんでした。そのため、渡し方を変えていろいろやってみました。
元画像
MNISTのオリジナル画像の1枚です。28×28ピクセルで、8-bitのグレースケールです。これを認識させようとしました。
二値化ASCII
最初に渡したのはこんな感じです。
............................
............................
............................
.................##.........
................#####.......
...............#######......
..............####..##......
.............####...##......
..............#....###......
...................###......
...................###......
..................###.......
..................###.......
.................###........
................####........
.......############.........
.....#############..........
.....###....#####...........
....###...#######...........
....#########..###..........
....#######.....####........
......#.........####........
.................###........
............................
............................
............................
............................
............................
数値行列
精度が悪かったので、今度は元データをそのまま渡してみることに。
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,206,247,94,3,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,203,254,254,254,206,34,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,221,254,254,253,251,254,169,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,20,234,254,254,194,78,117,254,225,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,136,254,252,143,15,0,86,254,225,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,13,130,66,0,0,0,128,254,225,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,232,254,225,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,169,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,158,254,247,47,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,242,254,197,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,206,254,232,42,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,23,84,98,29,0,16,172,254,251,143,0,0,0,0,0,0,0,0
0,0,0,0,0,1,38,156,198,198,231,254,254,240,149,200,254,254,157,0,0,0,0,0,0,0,0,0
0,0,0,0,0,135,254,254,254,254,254,254,254,254,254,254,254,159,16,0,0,0,0,0,0,0,0,0
0,0,0,0,88,250,254,175,71,18,18,62,254,255,254,254,254,25,0,0,0,0,0,0,0,0,0,0
0,0,0,0,209,254,178,28,9,51,134,230,254,254,254,254,254,103,0,0,0,0,0,0,0,0,0,0
0,0,0,0,226,254,204,179,212,254,254,254,222,110,89,235,254,240,65,0,0,0,0,0,0,0,0,0
0,0,0,0,149,254,254,254,254,235,176,93,6,0,0,122,254,254,208,151,27,0,0,0,0,0,0,0
0,0,0,0,6,76,131,114,37,25,0,0,0,0,0,2,171,254,254,244,57,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,205,254,133,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
濃淡10段階
それでもダメだったので、10段階のグレースケールを文字にしてみることに。
%@-
.#@@@%.
:%@@@@@*
@@@#-=@%
+@@+ -@%
+: +@%
@@%
=@@*
*@@.
:@@#
%@@.
--. *@@+
.*##@@@@+#@@*
+@@@@@@@@@@@*
-@@*: :@@@@@
%@*. .+%@@@@@=
%@#*%@@@%=-@@@:
+@@@@@*- =@@%+.
:+=. *@@@:
%@+
数値・3桁幅
もしかしたら、視覚的に見やすい方がいいのかも!と思ってこんなものも。
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,206,247, 94, 3, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,203,254,254,254,206, 34, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,221,254,254,253,251,254,169, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,234,254,254,194, 78,117,254,225, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,254,252,143, 15, 0, 86,254,225, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,130, 66, 0, 0, 0,128,254,225, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,232,254,225, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,254,254,169, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,254,247, 47, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,242,254,197, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,206,254,232, 42, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 84, 98, 29, 0, 16,172,254,251,143, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 1, 38,156,198,198,231,254,254,240,149,200,254,254,157, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0,135,254,254,254,254,254,254,254,254,254,254,254,159, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 88,250,254,175, 71, 18, 18, 62,254,255,254,254,254, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0,209,254,178, 28, 9, 51,134,230,254,254,254,254,254,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0,226,254,204,179,212,254,254,254,222,110, 89,235,254,240, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0,149,254,254,254,254,235,176, 93, 6, 0, 0,122,254,254,208,151, 27, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 6, 76,131,114, 37, 25, 0, 0, 0, 0, 0, 2,171,254,254,244, 57, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,205,254,133, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
座標配列
シンプルに白(画素の値が128以上)のピクセルの座標だけ送ったらどうだろう?と試してみたもの。
{"width":28,"height":28,"foreground_pixels":[[17,3],[18,3],[16,4],[17,4],[18,4],[19,4],[20,4],[15,5],[16,5],[17,5],[18,5],[19,5],[20,5],[21,5],[14,6],[15,6],[16,6],[17,6],[20,6],[21,6],[13,7],[14,7],[15,7],[16,7],[20,7],[21,7],[14,8],[19,8],[20,8],[21,8],[19,9],[20,9],[21,9],[19,10],[20,10],[21,10],[18,11],[19,11],[20,11],[18,12],[19,12],[20,12],[17,13],[18,13],[19,13],[16,14],[17,14],[18,14],[19,14],[7,15],[8,15],[9,15],[10,15],[11,15],[12,15],[13,15],[14,15],[15,15],[16,15],[17,15],[18,15],[5,16],[6,16],[7,16],[8,16],[9,16],[10,16],[11,16],[12,16],[13,16],[14,16],[15,16],[16,16],[17,16],[5,17],[6,17],[7,17],[12,17],[13,17],[14,17],[15,17],[16,17],[4,18],[5,18],[6,18],[10,18],[11,18],[12,18],[13,18],[14,18],[15,18],[16,18],[4,19],[5,19],[6,19],[7,19],[8,19],[9,19],[10,19],[11,19],[12,19],[15,19],[16,19],[17,19],[4,20],[5,20],[6,20],[7,20],[8,20],[9,20],[10,20],[16,20],[17,20],[18,20],[19,20],[6,21],[16,21],[17,21],[18,21],[19,21],[17,22],[18,22],[19,22]]}
結果
全然ダメでした……
ここで気づきました。もしかして、画像をテキスト化して解釈させるとか、普通のLLMでも苦手なタスクなのでは?
ということで、ここからはLLMとの比較です。
②LLMとの比較
GPT-5 nano、GPT-5.6 Lunaと比較してみました。最初、GPT-5 nanoを推論指定minimalで試したら精度が悪すぎて、lowにしてもあまり改善しなかったので、GPT-5.6 Lunaを追加した流れです。
精度がでないですね。画像をテキスト化して解釈させるのはやはり無理がありそうです。
③LLMの画像入力との比較
今さらですが本来は画像入力を使うべきタスクなので、GPT-5.6 Lunaの画像入力とも比較しました。
当然ながら精度は格段にいいです。また、今回の実測ではJevよりコストが下がった点も注目です。処理時間は残念ながら倍くらいになってしまいますが、それでも意外に高速に処理できて驚きました。
ただ、精度がよいといっても今回の条件では80%とかなり低いです。実用するにはいろいろ工夫が必要になりそうです。
おわりに
画像をテキスト入力onlyのモデルに処理させるというのは、ちょっと無理があるようですね。本来のJevの話からは脱線してしまったお話にお付き合いいただき、ありがとうございました。
結果の詳細はこちらで公開しています。
誤りなどありましたら、お知らせいただけると嬉しいです。
参考情報
(おまけ)
分類器に見事にひっかかってしまいました……


