Phi 3.5 Vision Instructとは?特徴・性能・活用法を徹底解説!

Phi 3.5 Vision Instruct 特徴 性能 活用法
押さえておきたいポイント
  • Phi 3.5ファミリー唯一のマルチモーダルモデル
  • 画像理解のベンチマークで高性能を発揮
  • 動画要約も可能

Phi 3.5 vision instructはMicrosoftがリリースしたPhi 3.5ファミリー唯一のマルチモーダルモデルです。画像の比較や複数画像、ビデオの要約など多くの視覚に関連するタスクを行うことができます。

また、42億個のパラメータを持ち、128Kトークンの文脈をサポートしています。

本記事ではPhi 3.5 vision instructの概要からgoogle colaboratoryでの実装方法をお伝えしますので、ぜひ最後までお読みください。

目次

Phi 3.5 Vision instructの概要

Phi 3.5 Vision instructはPhi-3.5モデルの軽量のオープンマルチモーダルモデルです。テキストと画像の両方において、非常に高品質で推論に優れたデータセットを用いて構築されています。

Phi 3.5 Vision instructの性能

Phi 3.5 Vision instructは特にArt StyleとForensic Detectionで優れた性能を発揮。Forensic DetectionとはAIモデルが画像やビデオの改ざんを検出する能力であり、Art Styleは芸術に関するタスクのスコアです。

総合スコアでは、Claude 3.5 sonnetを上回っており、Phi 3.5 Vision instructが軽量ながらに優れたモデルであることがわかります。

参考:https://huggingface.co/microsoft/Phi-3.5-vision-instruct

また、Visual Scientific Knowledge Reasoningで優れたベンチマークを出しており、GPT-4o-miniをも上回っています。Chart ReasoningのChatQAでもその他のモデルよりも優れた結果です。

総合的にみると視覚情報を与えた時の処理に特化しており、テキストベースであれば平均的な回答ができるモデル、という印象ですね。

参考:https://huggingface.co/microsoft/Phi-3.5-vision-instruct

Phi 3.5 Vision instructの主な特徴多言語対応であることや128Kトークンの文脈画像理解と推論などが挙げられます。注意点ですが、多言語対応はしているものの、英語と比べるとパフォーマンスが低下すると報告されています。

画像の理解、光学式文字認識、チャートや表の理解、複数画像の比較、複数画像またはビデオクリップの要約など、幅広い視覚機能を備えていますが、ベンチマーク結果から分かるように、処理時間が長くなるにつれて、Phi 3.5 Vision instructの性能が低下するため注意が必要です。

参考:https://huggingface.co/microsoft/Phi-3.5-vision-instruct

Phi 3.5 Vision instructの視覚処理

Phi 3.5 Vision instructは画像や動画などを扱うタスクにおいて非常に優れた性能を発揮しています。テキストだけ画像だけの処理ではなく、テキストと画像の両方を総合的に処理する能力を持っています。

総合的な理解を可能にするために、Phi 3.5 Vision instructは高品質な画像でトレーニングされており、そのデータには、科学的な視覚推論や文書理解のための視覚データが含まれています。

また、視覚的推論を可能にするためにトレーニングされており、画像内の情報を解析して意味のある結論を導く能力にも優れています。

これにより、画像から情報を抽出し、その情報に基づいて推論を行うことが得意です。

Phi 3.5 Vision instructの安全性

Phi 3.5 Vision instructはいくつかの技術を活用して安全性評価を行っています。

まず、安全性調整のために、Supervised Fine-Tuningと人間からのフィードバックによる強化学習が組み合わされており、これによりモデルの出力が有害にならないよう調整されています。

この調整には、人間がラベル付けしたデータや合成データが使用され、特に有益性と無害性に焦点を当てた公開データセットが活用されています。また、複数の安全性カテゴリにわたる質問と回答データを用いて、より精緻な安全性調整が行われています。

さらに、レッドチーミングや敵対的な会話シミュレーションが採用されています。

レッドチーミングでは、モデルの脆弱性を発見するために意図的にモデルを悪用する試みが行われ、これによりモデルが予期しない不適切な反応を示さないかを確認。

安全性評価ベンチマークデータセットを活用することで、既存のデータセットを用いてモデルの安全性を客観的に評価しています。これらの評価手法を複合的に使用することで、単一の方法では見逃してしまうかもしれないリスクを特定できるようになっています。

これらの技術を活用して安全性を担保していますが、使用環境に応じては追加で安全性対策が必要になることもあるため注意しましょう。

Phi 3.5 Vision instructを使う上での注意点

Hugging Faceのページにも明言されていますが、Phi 3.5 Vision instructはハルシネーションを起こす可能性があるため、生成された回答をそのまま利用するのではなく、事実を確認する必要があります。

また、画像や動画を扱う際には、個人を特定できる情報は隠すもしくは特定できない状態にしてから扱うことが推奨されています。

もし信頼性のある情報を生成したいと思った場合には、RAGのように外部のデータソースを利用する仕組みを導入することで、信頼性の高い情報を生成が可能です。

なお、Phi 3.5のその他のモデルについて詳しく知りたい方は、以下の記事をご覧ください。

Phi 3.5 Vision instructのライセンス

Phi 3.5 Vision instructのライセンスはMITライセンスです。

基本的には商用利用や改変、私的利用など全て可能です。MITライセンスは比較的自由度の高いライセンスのため、Phi 3.5 Vision instructを導入したアプリを商用目的でリリースすることもできます。

利用用途可否
商用利用⭕️
改変⭕️
配布⭕️
特許使用⭕️
私的使用⭕️

なお、手書きから複雑データまで対応するマルチモーダルAIについて詳しく知りたい方は、下記の記事を合わせてご確認ください。

Phi 3.5 Vision instructの使い方

では実装してみます。Phi 3.5 vision instructでは、画像の内容を読み取ることができるため、デモではMicrosoftのスライドを読み取り、どういった内容が書かれているかを出力してもらいます。

ライブラリのインポートはこちら
!pip install flash_attn==2.5.8 numpy==1.24.4 Pillow==10.3.0 Requests==2.31.0 torch==2.3.0 torchvision==0.18.0 transformers==4.43.0 accelerate==0.30.0

HuggingFaceにライブラリのバージョン指定があるので、そちらに従いましょう。

ライブラリのインポート後にセッションの再起動を求められるので、再起動をしておきます。Microsoftのモデルを動かす際には、ほぼエラーなく動かせました。

デモコードはこちら
from PIL import Image
import requests
from transformers import AutoModelForCausalLM
from transformers import AutoProcessor

model_id = "microsoft/Phi-3.5-vision-instruct"

# Note: set _attn_implementation='eager' if you don't have flash_attn installed
model = AutoModelForCausalLM.from_pretrained(
  model_id,
  device_map="cuda",
  trust_remote_code=True,
  torch_dtype="auto",
  _attn_implementation='flash_attention_2'
)

# for best performance, use num_crops=4 for multi-frame, num_crops=16 for single-frame.
processor = AutoProcessor.from_pretrained(model_id,
  trust_remote_code=True,
  num_crops=4
)

images = []
placeholder = ""

# Note: if OOM, you might consider reduce number of frames in this example.
for i in range(1,20):
    url = f"https://image.slidesharecdn.com/azureintroduction-191206101932/75/Introduction-to-Microsoft-Azure-Cloud-{i}-2048.jpg"
    images.append(Image.open(requests.get(url, stream=True).raw))
    placeholder += f"<|image_{i}|>\n"

messages = [
    {"role": "user", "content": placeholder+"Summarize the deck of slides."},
]

prompt = processor.tokenizer.apply_chat_template(
  messages,
  tokenize=False,
  add_generation_prompt=True
)

inputs = processor(prompt, images, return_tensors="pt").to("cuda:0")

generation_args = {
    "max_new_tokens": 1000,
    "temperature": 0.0,
    "do_sample": False,
}

generate_ids = model.generate(**inputs,
  eos_token_id=processor.tokenizer.eos_token_id,
  **generation_args
)

# remove input tokens
generate_ids = generate_ids[:, inputs['input_ids'].shape[1]:]
response = processor.batch_decode(generate_ids,
  skip_special_tokens=True,
  clean_up_tokenization_spaces=False)[0]

print(response)

Phi 3.5 Vision instructのデモ

google colaboratoryで動かすほどでもないけど、Phi 3.5 Vision instructを使ってみたい、という場合にはデモ版がおすすめ。

デモ版はNVIDIAとHugging FaceのSpacesで提供されているので、どちらかにアクセスして使えばOKです。

参考:https://build.nvidia.com/microsoft/phi-3_5-vision-instruct

NVIDIAもSpacesも無料で使うことができます。

Phi 3.5 Vision instruct検証

Phi 3.5 Vision instructは画像情報からの読み取りを得意としているので、画像を渡して内容解説をしてもらいます。また、同じ内容をGPT-4o-miniでも課して比較してみたいと思います。

今回渡す画像はこちら。こちらは教師あり学習についてのフローを表しています。

もう一枚画像を用意して、日本語が書かれている画像を読み取ってもらいます。

英語情報の画像の読み取り

では画像情報の読み取りをしてもらいます。

Hugging FaceにPhi 3.5 Vision instructのSpacesが用意されているのでそちらで実行していきます。

プロンプトを日本語で入力すると結果が適切に出力されないので、英語で「Please explain the contents of the image.」と入力します。

結果はこちら
The diagram illustrates a process flow for supervised learning in a federated learning context. On the left side, there are two vertical columns labeled 'Source Condition' and 'Target Condition.' The 'Source Condition' column is further divided into two sections: 'Supervised Learning' and 'Barlow Twins,' while the 'Target Condition' column is divided into 'Transfer' and 'Evaluate Fault Feature Extraction.' The process starts with 'Supervised Learning' where a symbol (a square with a circle inside) is input into a block labeled 'G_s,' which then connects to a 'Supervised Cross-Entropy Loss' block. This is followed by a 'Barlow Twins' block labeled 'G_t,' which also connects to a 'Cross-Entropy Loss' block. The outputs from these blocks are then combined and fed into a 'Transfer' block labeled 'G_t,' which leads to the 'Evaluate Fault Feature Extraction' block. The 'Target Condition' column also includes a 'Transfer Weights' block that connects to the 'Transfer' block in the 'Source Condition' column. On the right side, there is a 'Federated Averaging Server' with multiple 'Client Machine' blocks, each with a unique identifier (e.g., Client Machine 1, Client Machine 2, etc.), and arrows indicating the flow of 'Only Weights Transferred' from the server to the clients. The clients are connected to the 'Federated Averaging Server' through a dashed line labeled 'Different Training Data.' The diagram also includes a feedback loop from the 'Federated Averaging Server' to the 'Client Machine' blocks, indicating the iterative nature of the process.
日本語訳はこちら
この図は、フェデレーテッド・ラーニングの文脈における教師あり学習のプロセスフローを示しています。 左側には、「ソース条件」と「ターゲット条件」とラベル付けされた2つの縦列があります。 「ソース条件」列はさらに「教師あり学習」と「バーロー・ツイン」の2つのセクションに分かれており、「ターゲット条件」列は「転送」と「故障特徴抽出の評価」に分かれています。処理は「Supervised Learning」から始まり、G_sとラベル付けされたブロックに記号(円形の四角形)が入力され、「Supervised Cross-Entropy Loss」ブロックに接続されます。次に「Barlow Twins」ブロックが続き、G_tとラベル付けされ、「Cross-Entropy Loss」ブロックに接続されます。これらのブロックからの出力は結合され、「G_t」とラベル付けされた「Transfer」ブロックに送られ、「Evaluate Fault Feature Extraction」ブロックにつながります。「Target Condition」列には、「Source Condition」列の「Transfer」ブロックに接続する「Transfer Weights」ブロックも含まれています。右側には、「統合平均化サーバー」があり、それぞれに固有の識別子(例えば、クライアントマシン1、クライアントマシン2など)を持つ複数の「クライアントマシン」ブロックと、サーバーからクライアントへの「転送済み重み」の流れを示す矢印があります。クライアントは、「異なるトレーニングデータ」とラベル付けされた破線を通じて「統合平均化サーバー」に接続されています。また、この図には「統合平均化サーバー」から「クライアントマシン」ブロックへのフィードバックループも含まれており、プロセスの反復的な性質を示しています。

英語の画像は問題なく読み取ることができていますね。

GPT-4o-mimiの結果はこちら
この図は、複数のクライアントマシンとサーバーを利用したフェデレート学習(Federated Learning)のフレームワークを示しています。図の内容を以下のように説明します。

1. 学習タスク:
   - ソース運転条件 (Source Operating Condition):まず、ソース条件におけるデータを使って、監視学習(Supervised Learning)とBarlow Twinsによる自己教師あり学習(Self-Supervised Learning, SSL)が行われます。ここで、ネットワークのモデル(Gθ)が学習され、その後、ラベル付きデータに基づいて分類損失(Cross-Entropy Loss)が計算されます。
   - ターゲット運転条件 (Target Operating Condition):ターゲット条件で新たに発生する故障(Emerging Faults)を予測するために、事前に学習されたモデルを使用します。Barlow Twins SSLによる特徴の相関損失(Cross-Correlation Loss)が使用され、ターゲット条件に合わせた重みの転送が行われます。

2. フェデレート学習:
   - このフレームワークでは、学習データは各クライアントマシン(Client Machine 1, 2, ...)で分散しており、各マシンで学習した重み(モデルパラメータ)がサーバーに送信されます。サーバー側ではこれらの重みが平均化され(Federated Averaging)、次の学習サイクルに向けて更新されます。
   - クライアントマシン間で異なる訓練データが使用され、将来の故障(Future Emerging Faults)を予測するためのモデルが進化していきます。

3. 特徴の評価と重みの転送:
   - クライアントマシンで学習したモデルの特徴が評価され、ターゲット運転条件での適用に向けてモデルの重みが転送されます。これにより、異なる運転条件下でもモデルが適応できるようになります。
このシステムは、複数の異なる運転条件に対して適応可能な故障予測モデルを学習するために、分散型のデータを活用しており、個別に学習したモデルを統合して最適化しています。

両者ともに同じような結果でした。

日本語画像の読み取り

次に日本語が書かれている画像の読み取りです。

結果はこちら
The chart is a line graph that represents the projected market size for various types of vehicles from 2000 to 2020. The vertical axis is labeled in dollars, ranging from $30,000 to $80,000, and the horizontal axis represents the years from 2000 to 2020 in five-year increments. There are six lines, each representing a different type of vehicle, with corresponding colors and labels in Japanese. The line for '車両' (vehicles) shows a steady increase from just over $41,000 in 2000 to approximately $77,567 in 2020. The 'トラック' (trucks) line also shows an increase but at a slower rate, starting at around $41,132 in 2000 and reaching about $61,320 in 2020. The 'バス' (buses) line starts just below $41,000 in 2000 and rises to just over $50,000 in 2020. The '車' (cars) line begins at around $41,428 in 2000 and climbs to approximately $55,000 in 2020. The '自転車' (bicycles) line starts at about $41,428 in 2000 and increases to around $45,000 in 2020. Lastly, the '電車' (trains) line begins at just over $41,000 in 2000 and goes up to about $45,000 in 2020. Below the graph, there is a legend indicating the percentage growth from 2000 to 2020 for each vehicle type, with '車両' at 126%, 'トラック' at 125%, 'バス' at 117%, '車' at 119%, '自転車' at 115%, and '電車' at 150%. The '車' line is highlighted with a red box, indicating a special focus or significance.
日本語訳はこちら
このグラフは、2000年から2020年までの各種車両の市場規模予測を表した折れ線グラフです。縦軸は3万ドルから8万ドルまでの範囲でドル表示されており、横軸は2000年から2020年までの5年刻みの年号を表しています。6本の線があり、それぞれ異なる種類の車両を表しており、日本語のラベルと色が対応しています。「車両」(車両)の線は、2000年の41,000ドル強から2020年には77,567ドル程度まで、着実に増加しています。「トラック」(トラック)の線も増加していますが、増加率はより緩やかで、2000年の41,132ドル程度から2020年には61,320ドル程度までとなっています。「バス」(buses)の線は2000年の41,000ドル弱から始まり、2020年には50,000ドル強に上昇しています。「車」(cars)の線は2000年の41,428ドル前後から始まり、2020年には55,000ドルに上昇しています。「自転車」(bicycles)の線は2000年には約41,428ドルから始まり、2020年には約45,000ドルに増加しています。最後に、「電車」(trains)の線は2000年には41,000ドル強から始まり、2020年には約45,000ドルに増加しています。グラフの下には凡例があり、2000年から2020年までの各車両タイプの伸び率が示されています。「車両」は126%、「トラック」は125%、「バス」は117%、「車」は119%、「自転車」は115%、「電車」は150%となっています。「車」の線は赤いボックスで強調表示されており、特別な注目や重要性を示しています。

一行目から間違っていますね。日本語が含まれていると適切に読み取りができなさそうです。

GPT-4o-miniの結果はこちら
このグラフは、2000年から2020年にかけての各国の実質平均年収の推移を示しています。主なポイントは以下の通りです:

1. 年収の比較:
   - アメリカの実質平均年収は、2020年に77,567ドルで最も高く、2000年から大きく増加しています。
   - 日本の実質平均年収は、2020年で41,442ドルとなっており、2000年からほぼ変動がなく、増加が見られませんでした。
   - オーストラリア、ドイツ、イギリス、フランス、韓国、イタリアも年収が増加していますが、アメリカほどの増加は見られません。
   
2. 年収の伸び率(2000年比):
   - アメリカ(126%)とオーストラリア(125%)は、2000年比で比較的高い伸びを見せています。
   - 韓国は150%と最も高い成長率を示しており、実質平均年収が急激に増加しました。
   - 日本は100%で、2000年と2020年の年収がほぼ変わらないことを示しています。

3. 各国のトレンド:
   - アメリカとオーストラリアは、2000年から2020年にかけて継続的に年収が増加しており、特にアメリカが大きな伸びを示しています。
   - 日本は、ほぼ一定で、他国と比較すると成長が停滞していることが分かります。
   このグラフは、各国の経済成長や賃金の伸びを視覚的に示しており、特にアメリカや韓国の急成長が際立っています。

GPT-4o-miniは日本語でも英語でも関係なく適切に画像を読み取ってくれますね。

Phi 3.5 Vision instructは日本語にも対応はしていますが、画像の読み取りでは日本語が含まれていると適切な結果が返ってこないので注意が必要です。

なお、音声とテキストを融合したマルチモーダルAIについて知りたい方はこちらの記事をご覧ください。

まとめ

本記事ではPhi 3.5 Vision instructの概要からgoogle colaboratoryでの使い方について解説をしました。

画像理解や動画要約などの視覚情報処理において非常に優れた性能を発揮する軽量なマルチモーダルモデルで、特に視覚データを伴う複雑なタスクにおいて有用です。

また、128Kトークンという広い文脈理解能力や多言語対応といった特徴を備えていますが、日本語など一部の言語ではパフォーマンスが低下する可能性があるため、用途に応じた使い分けが求められます。さらに、ハルシネーションのリスクや処理時間の増加による性能低下といった課題についても注意が必要です。

これらの特性を踏まえ、ビジネスや研究における視覚情報活用の効率化や、生成AIの導入を検討している企業にとって非常に有望なツールとなるでしょう。本記事を参考に、実際のユースケースや導入方法をぜひ検討してみてください。

弊社では、Phi3.5を活用したローカル環境でのデータ分析システムを開発しました。事例について詳しく知りたい方は以下の記事をご覧ください。

最後に

いかがだったでしょうか。

生成AIを活用することで、業務効率化やコスト削減、競争力の向上が実現可能です。貴社の課題に合わせた最適な活用方法をご提案し、導入後の成果を最大化します。

株式会社WEELは、自社・業務特化の効果が出るAIプロダクト開発が強みです!

開発実績として、

・新規事業室での「リサーチ」「分析」「事業計画検討」を70%自動化するAIエージェント
・社内お問い合わせの1次回答を自動化するRAG型のチャットボット
・過去事例や最新情報を加味して、10秒で記事のたたき台を作成できるAIプロダクト
・お客様からのメール対応の工数を80%削減したAIメール
・サーバーやAI PCを活用したオンプレでの生成AI活用
・生徒の感情や学習状況を踏まえ、勉強をアシストするAIアシスタント

などの開発実績がございます。

まずは、無料相談にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

生成AIを社内で活用していきたい方へ
LLM比較レポート

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。

セミナー内容や料金については、ご相談ください。

また、大規模言語モデル(LLM)を対象に、言語理解能力、生成能力、応答速度の各側面について比較・検証した資料も配布しております。この機会にぜひご活用ください。

投稿者

  • 翔平

    総合病院で10年間理学療法士として勤務し、患者のリハビリテーション支援に従事。その後、Pythonを独学で学び、データ分析のスキルを活かしてデータアナリストに転身。 データ分析の知見を活かし、主にテクニカル記事を担当。趣味はキックボクシング。

  • URLをコピーしました!
  • URLをコピーしました!
目次