ビジョン
Claude 3ファミリーのモデルには、Claudeが画像を理解・分析できる新しいビジョン機能が搭載されており、マルチモーダルなインタラクションの可能性が広がっています。Claudeでは、テキストと画像の両方を入力として提供することで、会話を豊かにし、強力な新しいユースケースを実現できるようになりました。
ビジョン対応モデル
Claudeのビジョン機能を利用するために、特別なバージョンのClaude 3モデルを使用する必要はありません。すべてのClaude 3モデルは、画像の理解と分析が可能です。
このガイドでは、ベストプラクティス、コード例、留意点など、Claudeで画像を扱う方法について説明します。
claude.aiで画像を使ったチャットを試してみましょう!
はじめに
現在、Claudeのビジョン機能は以下の3つの方法で利用できます。
- claude.aiのチャットウィンドウで直接利用する方法。ファイルをアップロードするように画像をアップロードするか、画像をウィンドウに直接ドラッグ&ドロップするだけです。
- Console Workbenchを使用する方法。画像を受け付けるモデル(Claude 3モデルのみ)を選択すると、すべての
User
メッセージブロックの右上に画像を追加するボタンが表示されます。 - APIリクエストを使用する方法 - 以下の手順を参照してください。
このガイドでは、Anthropic Python SDKを使用し、以下のサンプル変数を使用します。httpx
ライブラリを使ってWikipediaからサンプル画像を取得しますが、お好みの画像ソースを使用することもできます。
import anthropic
import base64
import httpx
client = anthropic.Anthropic()
image1_url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"
image1_media_type = "image/jpeg"
image1_data = base64.b64encode(httpx.get(image1_url).content).decode("utf-8")
image2_url = "https://upload.wikimedia.org/wikipedia/commons/b/b5/Iridescent.green.sweat.bee1.jpg"
image2_media_type = "image/jpeg"
image2_data = base64.b64encode(httpx.get(image2_url).content).decode("utf-8")
APIリクエストで画像を利用するには、base64でエンコードされた画像をimage
コンテンツブロックでClaudeに提供します。以下は、PythonでMessages APIリクエストにbase64でエンコードされた画像を含める簡単な例です。
Python
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": image1_media_type,
"data": image1_data,
},
},
{
"type": "text",
"text": "この画像を説明してください。"
}
],
}
],
)
print(message)
サポートされている画像フォーマットは、JPEG、PNG、GIF、WebPです。その他のコード例やパラメータの詳細については、Messages APIの例を参照してください。
画像サイズ
最適なパフォーマンスを得るには、サイズやトークンの制限を超える可能性がある場合、アップロード前に画像のサイズを変更することをお勧めします。画像の長辺が1568ピクセルを超える場合、または画像が約1600トークンを超える場合、サイズ制限内に収まるまでアスペクト比を維持したままスケールダウンされます。入力画像が大きすぎてサイズ変更が必要な場合、モデルのパフォーマンスを向上させることなく、time-to-first-tokenのレイテンシが増加します。いずれかの辺が200ピクセル未満の非常に小さな画像では、パフォーマンスが低下する可能性があります。
time-to-first-tokenを改善したい場合は、画像のサイズを両方の寸法で1568ピクセル以内、1.15メガピクセル以下にすることをお勧めします。
以下は、APIが受け入れる最大画像サイズの表で、一般的なアスペクト比でリサイズされることはありません。これらの画像はすべて、約1600トークンと約$4.80/1000画像(Claude 3 Sonnetを使用していると仮定)に相当します。
アスペクト比 | 画像サイズ |
---|---|
1:1 | 1092x1092 px |
3:4 | 951x1268 px |
2:3 | 896x1344 px |
9:16 | 819x1456 px |
1:2 | 784x1568 px |
画像のベストプラクティス
Claudeに画像を提供する際は、最良の結果を得るために以下のガイドラインを念頭に置いてください。
- 画像の明瞭さ: 画像が鮮明で、ぼやけすぎたりピクセル化していないことを確認してください。Claudeは不明瞭または低品質の画像を正確に解釈するのに苦労する可能性があります。
- 画像の配置: ドキュメントクエリの配置と同様に、画像がテキストの前にある方がClaudeは最も効果的に機能します。テキストの後や、テキストに挿入された画像でも十分なパフォーマンスを発揮しますが、ユースケースで可能な場合は、画像→テキストの構造をお勧めします。詳細はビジョンプロンプトのヒントを参照してください。
- テキスト: 画像に重要なテキストが含まれている場合は、読みやすく、小さすぎないことを確認してください。ただし、テキストを拡大するために重要な視覚的コンテキストをトリミングすることは避けてください。
- 複数の画像: 1つのリクエストに複数の画像を含めることができます(claude.aiでは最大5枚、APIリクエストでは最大20枚)。Claudeは提供されたすべての画像を分析して応答を作成します。これは、画像を比較したり対比したりする場合に役立ちます。
詳細とガイドラインについては、制限事項を参照してください。
プロンプトのヒント
Claudeとのテキストベースのやり取りでうまくいくプロンプト手法の多くは、画像ベースのプロンプトにも適用できます。画像処理手法とユースケースのウォークスルーについては、マルチモーダルクックブックを参照してください。プロンプト手法と戦略も併せて掲載しています。
以下は、画像を含むプロンプト構造のベストプラクティスの例です。一般的に、画像に関する質問やそれを使用するタスクの指示よりも前にプロンプトに画像を配置するのが最善です。また、複数の画像がある場合は、Image 1:
やImage 2:
のように各画像を紹介するのが良いでしょう。画像間や画像とプロンプトの間に改行は必要ありません。
1. 例: 1つの画像
プロンプト構造は以下の通りです。
Role | Content |
---|---|
User | [Image] この画像を説明してください。 |
対応するAPIコールは以下の通りです。
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": image1_media_type,
"data": image1_data,
},
},
{
"type": "text",
"text": "この画像を説明してください。"
}
],
}
],
)
2. 例: 複数の画像
プロンプト構造は以下の通りです。
Role | Content |
---|---|
User | Image 1: [Image 1] Image 2: [Image 2] これらの画像はどのように違いますか? |
対応するAPIコールは以下の通りです。
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Image 1:"
},
{
"type": "image",
"source": {
"type": "base64",
"media_type": image1_media_type,
"data": image1_data,
},
},
{
"type": "text",
"text": "Image 2:"
},
{
"type": "image",
"source": {
"type": "base64",
"media_type": image2_media_type,
"data": image2_data,
},
},
{
"type": "text",
"text": "これらの画像はどのように違いますか?"
}
],
}
],
)
3. 例: システムプロンプトを使用した複数の画像
プロンプト構造は以下の通りです。
Content | |
---|---|
System | スペイン語のみで回答してください。 |
User | Image 1: [Image 1] Image 2: [Image 2] これらの画像はどのように違いますか? |
対応するAPIコールは以下の通りです。
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
system="スペイン語のみで回答してください。",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Image 1:"
},
{
"type": "image",
"source": {
"type": "base64",
"media_type": image1_media_type,
"data": image1_data,
},
},
{
"type": "text",
"text": "Image 2:"
},
{
"type": "image",
"source": {
"type": "base64",
"media_type": image2_media_type,
"data": image2_data,
},
},
{
"type": "text",
"text": "これらの画像はどのように違いますか?"
}
],
}
],
)
4. 例: 2つの会話ターンにまたがる4つの画像
Claudeのビジョン機能は、画像とテキストの両方を組み合わせたマルチモーダルな会話で真価を発揮します。新しい画像やフォローアップの質問をいつでも追加しながら、Claudeと長時間のやり取りを続けることができます。これにより、反復的な画像分析、比較、視覚情報と他の知識の組み合わせなど、強力なワークフローが可能になります。
プロンプト構造の例は以下の通りです。
Role | Content |
---|---|
User | Image 1: [Image 1] Image 2: [Image 2] これらの画像はどのように違いますか? |
Assistant | [Claudeの回答] |
User | Image 1: [Image 3] Image 2: [Image 4] これらの画像は最初の2つと似ていますか? |
Assistant | [Claudeの回答] |
APIを使用する場合は、標準的な複数ターンの会話構造の一部として、user
ロールのMessagesの配列に新しい画像を挿入するだけです。
画像のコスト
Claudeへのリクエストに含める画像1枚につき、トークン使用量にカウントされます。おおよそのコストを計算するには、画像のトークン数の概算値に、使用しているモデルの1トークンあたりの価格を掛けます。モデルの価格の詳細は、価格ページをご覧ください。
画像のサイズを変更する必要がない場合、以下の簡単なアルゴリズムでトークン数の概算を見積もることができます。
tokens = (width px * height px)/750
以下は、APIのサイズ制限内のさまざまな画像サイズについて、Claude 3 Sonnetを1トークンあたり$3で使用した場合の、トークン化とコストの概算例です。
画像サイズ | トークン数 | 画像1枚あたりのコスト | 1000画像あたりのコスト |
---|---|---|---|
200x200 px(0.04メガピクセル) | 約54 | 約$0.00016 | 約$0.16 |
1000x1000 px(1メガピクセル) | 約1334 | 約$0.004 | 約$4.00 |
1092x1092 px(1.19メガピクセル) | 約1590 | 約$0.0048 | 約$4.80 |
制限事項
Claudeの画像理解能力は最先端ですが、いくつかの制限事項があることに注意してください。
- 人物の識別: Claudeは利用規約により、画像内の人物を特定(つまり、名前を付ける)するために使用することはできず、拒否します。
- 精度: Claudeは、低品質、回転、または200ピクセル未満の非常に小さな画像を解釈する際に、幻覚を見たり間違いを犯したりする可能性があります。
- 空間推論: Claudeの空間推論能力は限られています。アナログ時計の文字盤を読んだり、チェスの駒の正確な位置を説明したりするなど、正確な位置や配置を必要とするタスクでは苦労するかもしれません。
- 数え上げ: Claudeは画像内のオブジェクトのおおよその数を数えることができますが、特に小さなオブジェクトが多数ある場合は、常に正確とは限りません。
- AI生成画像: Claudeは画像がAIによって生成されたものかどうかを知らず、尋ねられても間違った答えをする可能性があります。偽物や合成画像の検出には頼らないでください。
- 不適切なコンテンツ: Claudeは、利用規約に違反する不適切または露骨な画像を処理しません。
- ヘルスケアアプリケーション: Claudeは一般的な医療画像を分析できますが、CTやMRIなどの複雑な診断スキャンを解釈するようには設計されていません。Claudeの出力は、専門家による医療アドバイスや診断の代替として考えるべきではありません。
特に重要なユースケースでは、Claudeの画像解釈を慎重に確認し、検証してください。人間の監督なしに、完璧な精度や機密性の高い画像分析を必要とするタスクにClaudeを使用しないでください。
よくある質問
Claudeはどのような画像ファイル形式をサポートしていますか?
Claudeは現在、JPEG、PNG、GIF、WebPの画像フォーマット、具体的にはimage/jpeg
、image/png
、image/gif
、image/webp
をサポートしています。
Claudeは画像URLを読み取ることができますか?
Claudeは、claude.aiを含むどのインターフェースでも画像URLを読み取ることができません。現在のところ、APIではtext
ブロックとimage
ブロックのどちらにもURLを追加することはできません。text
ブロックに画像URL(またはあらゆる種類のURL)を追加すると、Claudeは現在そのURLから情報を取得できないため、幻覚を見る可能性があります。
アップロードできる画像ファイルサイズに制限はありますか?
はい、画像1枚あたりの最大許容ファイルサイズは5MBです(claude.aiでは画像1枚あたり10MB)。5MBを超える画像はAPIを使用する際に拒否され、エラーが返されます。
1つのリクエストにいくつの画像を含めることができますか?
Messages APIを介して1つのリクエストに最大20枚の画像を含めることができます。claude.aiでは1ターンあたり最大5枚の画像を含めることができます。その制限を超える画像数は、APIを使用する際に拒否され、エラーが返されます。
Claudeは画像のメタデータを読み取りますか?
いいえ、Claudeは渡された画像からメタデータを解析したり受け取ったりしません。
アップロードした画像を削除できますか?
いいえ。さらに、画像のアップロードは一時的なもので、APIリクエストの期間を超えて保存されることはありません。アップロードされた画像は、処理が完了すると自動的に削除されます。
画像アップロードのデータプライバシーとセキュリティの詳細はどこで確認できますか?
アップロードされた画像やその他のデータの取り扱いについては、プライバシーポリシーページを参照してください。アップロードされた画像を当社のモデルのトレーニングに使用することはありません。
Claudeの画像解釈が間違っているように見える場合はどうすればよいですか?
Claudeから明らかに間違っていると思われる画像解釈を得た場合は、まず画像が鮮明で高品質で正しい向きになっていることを再確認してください。それでも問題が解決しない場合は、プロンプトエンジニアリングの手法を用いて結果の改善を試みてください。問題が解決できない場合は、claude.aiの親指アップ/ダウンのインターフェースから懸念のある出力を直接フラグ付けするか、サポートチームにご連絡ください。皆様からのご意見は、私たちの改善に役立ちます。
Claudeは画像の生成、制作、編集、操作、作成ができますか?
いいえ、Claudeは画像理解モデルのみです。画像を解釈・分析することはできますが、画像の生成、制作、編集、操作、作成はできません。
ビジョンをさらに深く
Claudeを使って画像を扱う準備はできましたか?ここではいくつかの役立つリソースを紹介します。
- マルチモーダルクックブック: このクックブックには、画像の使い方やベストプラクティス手法のヒントがあり、画像で最高のパフォーマンスを確保できます。チャートの解釈と分析やフォームからのコンテンツ抽出など、画像を使ってClaudeに効果的にプロンプトを与えてタスクを実行する方法をご覧ください。
- APIリファレンス: Messages APIのドキュメントをご覧ください。画像を含むAPIコールの例も掲載しています。
その他ご不明な点がございましたら、サポートチームまでお気軽にお問い合わせください。また、開発者コミュニティに参加して、他のクリエイターとつながり、Anthropicの専門家からヘルプを得ることもできます。
Claudeの強力な新しいビジョン機能で、皆様がどのようなものを作り出すのか楽しみにしています!