OpenAIは9月25日(現地時間)、同社のAIチャットボット、ChatGPTに新たに音声と画像分析機能を搭載すると発表しました。
ただし、GPT-4Vは9月25日から2週間かけて該当のユーザに提供するとしており、ChatGPT Plusを利用しているユーザがすぐに利用できるとも限りません。
この記事では、GPT-4Vを試す前に、ChatGPTで利用できるAdvanced Data Analysis(旧 Code Interpreter)を使用して、アップロードしたファイルを処理する方法について紹介します。
目次
- ChatGPTの画像分析機能(GPT-4V)を利用できるユーザ
- GPT-4Vを試す前に、Advanced Data Analysisを使ってみる
- ChatGPTのAdvanced Data Analysis使ってみた
- まとめ
ChatGPTの画像分析機能を利用できるユーザ
OpenAIによるとChatGPTの画像分析機能は、ChatGPT PlusおよびEnterpriseに登録しているユーザに提供されるとしています。
また、9月25日から2週間かけてこの機能を展開するということから、ChatGPT Plusに登録している方でも、場合によっては利用できるまでラグがあるかもしれません。
ChatGPT Plusへの登録方法は以下の記事をご覧ください。
Advanced Data Analysisを使ってみる
GPT-4Vが利用できるようになるまでの間、ちょって手持ち無沙汰なので(GPT-4Vとは異なりますが)同じように画像や各種ファイルをアップロードして処理を行うAdvanced Data Analysisを使い、GPT-4Vのイメージを膨らませてみてはいかがでしょうか?
Advanced Data Analysis (旧Code Interpreter)とは?
これから紹介する「Advanced Data Analysis」(日本語表記では「高度なデータ分析」)とはいったい何なんでしょうか?
Advanced Data Analysisは「Code Interpreter」と呼ばれていた機能で、普段私たちが使っている自然言語からコードを実行したり、生成したりできる機能です。
これにより、アップロードしたファイルの分析や画像の生成などを行うことが可能になります。
Advanced Data Analysisを有効にする方法
Advanced Data AnalysisはChatGPTのトップ画面から事前に選択することで利用することが可能です。
しかし、現在ベータ版の機能ということもあり、デフォルト(既定値)では、Advanced Data Analysisが有効になっていません。
初めて利用する際にはこの機能を設定から有効にする必要があります。
▼ まずはChatGPTにログインします。
※ ChatGPTの登録がお済でない方はこちらの記事をご覧ください。

▼ ページ下部にある赤枠で囲った部分をクリックします。

▼ そして表示されたメニューの中から「Settings & Beta」(プラス設定 & ベータ)をクリックします。

▼ Settingsパネルが表示されたら、「Beta features」(ベータ機能)をクリック。

▼ 「Advanced data analysis」または「高度なデータ分析」の右側にあるトグルスイッチをオンにします。

▼ そして、赤丸で囲った×をクリックし、Settingsパネルを閉じます。

▼ ChatGPTのトップ画面のモデル選択部分(赤丸で囲った部分)をクリックします。

▼ 「Advanced Data Analysis」を選択します。

▼ すると、プロンプトを入力するテキストボックスに、先ほどまではなかったプラスボタンが出現します。
これで設定は完了です。

ChatGPTのAdvanced Data Analysis使ってみた
では、実際にChatGPTのAdvanced Data Analysisを使ってみましょう。
まずは、処理したいファイルを選択してみます。
試しに画像に入力された文字列を読み取ってみる
せっかくなので、ここで画像に入力された文字列をChatGPTに読み取ってもらおうと思います。
読み取ってもらう画像ファイルは以下のもの。
英語で記されたテキストが画像になっています。

▼ 赤丸で囲ったプラスボタンをクリックします。ファイルピッカーが表示されますので、アップロードしたいファイルを選択します。

▼ ファイルを選択することができました。
ファイルは複数個選択できます。

▼ そして、赤枠で囲った部分にプロンプトを入力します。

▼ ここでは、
次の画像はKabocy(かぼしー)という人物の英語で記された紹介文です。
これらの文字を読み取ることは可能ですか?
と入力し、実行してみました。

▼ 処理が始まります。
この時、「Show work」(または「コードの詳細を表示」)をクリックすると実行されているコードを確認することができます。
OCRにはpytesseractを使用していました。

▼ 結果が表示されました。
とても良い精度ですが、グレーで書いてあった文字列が読み取れていません。

▼ そこで、コントラストを調節して再度文字列を探索してもらうように頼んでみます。

▼ すると指示通りアップロードした画像のコントラストを変更し、再度文字列を探索します。

▼ どうやらコントラストを調節しても文字列を認識できなかったようです。
そこで、色の反転や膨張を試し、文字列を探索するようです。
(記事の作成前に3度同じく、コントラストを調節して文字列を探索するように頼みましたが、2回はコントラストの調節で認識ができ、もう1回は今回と同じように認識ができませんでした。)

▼ 色の反転や膨張を試してみても新たに文字列を認識できなかったようです。
そこでアダプティブスレッショルドを適用した後、再度文字列を探索するようです。

▼ 少しだけ時間が掛かります。

▼ 文字列が認識できたようです。

▼ 認識できた文字列
始めに認識できていた文字列が省略されているのが気になりますが、認識できていなかった文字列も出力されています。
▼ もちろん、認識した文字列に関する質問も行えます。

▼ きちんと答えが返ってきました。

GPT-4Vと異なり、画像の分析はコードありき
先の例で示した通り、Advanced Data Analysisでは画像をアップロードして、それに対する処理を指定できます。しかし、あくまでもGPT-4Vとは異なり、画像をGPT-4で認識するわけではありません。
▼ 試しに筆者が過去に撮った月見バーガー(月見チーズ)の写真をAdvanced Data Analysisで解析してもらおうと思います。
次の画像を注意深く分析し、次の質問に答えてください。
画像には何が写っていますか?
また、これらの画像がいつ頃撮られたものかを推定してください。
ここで求めているのは、画像の被写体と撮影時期の推定です。

▼ 画像の分析を開始したようです。

▼ カラフルな写真ですね、といったアバウトな認識は出来ているようです。
しかし、それが「何なのか」、といった詳細な情報については何ら取得できていません。

▼ 同じ画像を使用して、再度同じように聞いてみます。
ただし、今回は、写真に写っているものは「食べ物」であることを明示し同じように撮影時期の推定を求めました。
様々な分析をしたようですが、やはり今回も結論は出ませんでした。

このように、GPT-4Vとは異なり、画像そのものを認識することはできません。
資料をアップし、グラフを作成する
ではここで、アップロードするファイルを画像からエクセルで作成したデータに変えてみましょう。
用意したデータは、日本国内で販売されたiPhoneの価格をまとめたエクセルファイルです。
▼ データの中身は非常にシンプルで、各iPhoneの製品名とモデル名、発売日と選択可能な最小容量(ストレージ)と最大容量(ストレージ)とそれぞれの価格が記載されています。

▼ ファイルピッカーで作成したエクセルデータを指定し、プロンプトは次のように入力してみました。
日本国内で発売されたiPhoneの価格の推移をまとめました。
各種データを視覚的に分かりやすいグラフにしてください。
とても投げやりな指示です。

▼ すると、アップロードしたファイルを解析し、中に記録されているデータを確認します。
そして、作成するグラフの提案をしてくれます。
価格のデータが文字列として格納されているため、これを数値に変換してからグラフを作成します。また、発売日を基にして、iPhoneの価格の推移を視覚化します。最小容量選択時の価格と最大容量選択時の価格の両方を表示するグラフを作成します。どちらの価格も同じグラフに表示しますか、それとも別々のグラフに表示しますか?

▼ 最小容量選択時の価格と最大容量選択時の価格のグラフを分けて作成するように指示しました。
すると、きちんと2つのグラフが作成されました。
しかしグラフを見てみると、日本語で表示されるべき文字列が豆腐になってしまいました。
ChatGPTとしてもそれを認識しているようで、ラベルを別の言語にして再度グラフを出力可能であることを提示してきました。
2つのグラフを作成しました。
- 最小容量選択時の価格の推移
- 最大容量選択時の価格の推移
両グラフともに、縦軸に価格、横軸に発売日が表示されています。価格の推移を視覚的に捉えることができます。
残念ながら、グラフ上の日本語が正しく表示されない問題が発生しています。この問題はフォントのサポートに関するもので、対応が難しい場合があります。必要であれば、日本語以外の言語やラベルを使用して再度グラフを作成することも可能です。何か他にご希望がありますか?

▼ また、グラフに目を向けてみると、同日に発売されたモデルがグラフ内で見づらくなっています。


▼ そこで、ラベルを日本語から英語にするように依頼するとともに、グラフの改善を求めました。
ここでもやはり投げやりな指示です。
すると、ChatGPTから具体的な改善案を提示してきました。
了解しました。同日に発売されたiPhoneのバリエーションを考慮して、グラフを見やすくするためのアプローチとして以下の方法を提案します:
- 各発売日における価格の平均値を計算して、平均価格の推移を表示します。
- 各発売日に複数のiPhoneが存在する場合、価格の範囲を示すエラーバーを使用して、最高価格と最低価格を示します。
これにより、同日に発売された複数のiPhoneの価格の範囲を視覚的に捉えることができます。
また、ラベルは英語に変更します。
このアプローチで進めてよろしいでしょうか?

▼ 新しいグラフではラベルが英語になった他、販売されたiPhoneの価格のうち、平均価格の表示、そして、同日に複数のモデルが販売されている際には価格の範囲を示すエラーバーが追加されるように改善されました。



▼ これであれば1つのグラフにまとめてしまった方が分かりやすいような気がするので、2つのグラフを1つにまとめてもらうことにしました。


▼ 非常に満足のいくグラフが作成できたので、これをGIFアニメにして、価格の推移をさらに分かりやすくしてみたいと思います。
暫く待つと、ダウンロードリンクが表示するので、クリックしてダウンロードします。

▼ 生成されたGIFアニメになったグラフ
※ このダウンロードリンクはコードインタープリターのセッションが有効なうちにダウンロードする必要があります。

▼ 気をよくして、アニメーションの速度を上げるとともに、省略されたエラーバーの表示も求めてみました。
しかし、アニメーションの生成にエラーが発生してしまいました。

まとめ
ここまでGPT-4Vが利用できるようになるまでに使っておきたい、Advanced Data Analysisを利用可能にする方法や使い方を確認した後、実際に利用してみた様子を一緒に見てきました。
ちょっとした注意点もありましたが、Advanced Data Analysisもとても優秀な機能であることが体感できたと思います。
ぜひ、Advanced Data Analysisを使いこなして、楽しく便利にChatGPTを活用して頂ければと思います!
最後までありがとうございます!