Interface編集部

ailia SDKを試す<第18回> LLAVAを利用した画像の説明文生成
今回は,ailia-SDKのモデル群に含まれている LLaVAモデル(ailia-models/vision_language_model/llava)を利用し,画像説明を行う文章の生成方法について解説します.
LLaVAは,画像から特徴を抽出するビジョン・モデルと,大規模言語モデル(LLM)を組み合わせることで,与えられた画像に対して自然言語で説明したり,質問に答えたりすることを可能にします.例えば,「この画像に写っている人物は何をしているのか?」といった問いかけに対し,単に物体を検出するだけでなく,状況を踏まえた説明を返すことができます.
●LLaVAの特徴と構成要素
LLaVAでは,LLMの拡張入力として画像特徴が統合される仕組みになっており,単なる物体認識ではなく,この人物が何をしているのか,場面の状況はどう見えるのかといった高度な理解を実現します.従来の画像分類や物体検出は何が写っているかを判定するものでしたが,LLaVAはさらに踏み込み,画像の文脈を説明することに重点を置いている点が特徴です.
次に,LLaVA(Large Language and Vision Assistant)は,次の2つの要素を組み合わせて構成されています.
▲1,画像エンコーダ(Vision Encoder)
CLIPのような画像特徴抽出モデルを用いて,入力画像をベクトル表現に変換します.これにより,画像の内容を数値化し,言語モデルに渡せる形にします.
▲2,大規模言語モデル(LLM)
画像エンコーダから得られた特徴をプロンプトとして受け取り,自然言語で説明文や回答を生成します.
●実行環境
今回の環境を表1に示します.
名称 | 内容 |
---|---|
OS | Ubuntu24 |
CPU | Intel(R) Core(TM) Ultra 7 265K |
RAM | 128GB |
GPU | NVIDIA GrForce RTX 5060 16GB |
Python | python-3.10.11-amd64 |
ailia-SDK | Version 1.5.0.0 |
ailia-models | v1.4.0 (https://github.com/axinc-ai/ailia-models) |
cuda | Cuda compilation tools, release 13.0, V13.0.88 |
表1 システム構成一覧
●環境構築してLLaVAを実行してみる
環境構築手順は,基本的にはailia-modelsリポジトリ に含まれるREADME.mdを参照すれば問題ありません.
初回実行時には,必要なモデル・ファイルがインターネットから自動的にダウンロードされます.そのため,インターネットに接続された環境でスクリプトを実行してください. なお,ダウンロードするファイルの合計サイズは約14GBです.
▲サンプルの実行コマンド
実行時に環境は指定してください(注1).次はCPU環境を利用した例です.
******
> python llava.py -e 0
INFO arg_utils.py (13) : Start!
INFO arg_utils.py (163) : env_id: 0
INFO arg_utils.py (166) : CPU
******
ーーー
注1:実行環境を指定せず実行すると「-e 2:cuDNN-NVIDIA GeForce RTX 5060 Ti (12.0, FP32)」となりますが,「Segmentation fault(コアダンプ)」となります.
▲デフォルト設定と生成結果
サンプル・スクリプトにおけるデフォルト設定ですが,デフォルトの条件で参照される画像を図1に示します.また,デフォルトのプロンプトは,
******
What are the things I should be cautious about when I visit here?
******
です.
図1 デフォルトの条件で参照される画像
▲生成結果
表2のように,環境ごとに生成された説明文を比較するとCPUとGPUで内容に違いが見られました.GPU(FP16)では短い説明が返る傾向があり,CPU動作のほうが文章が長く詳細でした.
環境 | 生成された説明文 |
---|---|
CPU | When visiting this location, which features a pier extending over a large body of water, there are a few things to be cautious about. First, be mindful of the weather conditions, as the pier may be affected by strong winds or storms, which could make it unsafe to walk on. Second, be aware of the water depth and any potential hazards, such as submerged rocks or debris, that could pose a risk to your safety. Additionally, be cautious of the presence of wildlife in the area, as there might be birds or other animals that could pose a threat or disturbance. Finally, be respectful of the environment and other visitors, and follow any posted rules or guidelines to ensure a safe and enjoyable experience for everyone. |
GPU | The boardwalk is a popular tourist destination. Vis, it is essential to be cautious about the weather conditions, as the boardwalk can be affected by strong winds or storms. Additionally, it is crucial to be aware of personal belongings, as thefts can occur in crow |
表2 異なる環境で生成された説明文
この比較から,CPUでは長文かつ詳細な説明が得られる一方,GPUでは簡潔な出力になりやすいという傾向が確認できました.用途によってCPU/GPUのどちらを使うか選択するのがよさそうです.
●入力画像を変えて精度を検証
検証には,新幹線の駅ホーム画像(図2)を用います.駅のホームは,安全面や時刻の確認など注意すべき点が多く,生成される説明文の質を評価する題材として適しています.
図2 検証用に使用する画像
次にプロンプトは,
******
What are the things I should be cautious about when I visit here?」
******
です.翻訳すると「この場所を訪れる際に,注意すべきことは何ですか?」となります.
生成された説明文(原文と翻訳)を表3に示します.
原文 | siting the train station, you should be cautious about several things to ensure your safety and the safety of others. First, be aware of your surroundings and pay attention to any posted signs or announcements regarding train schedules, platform changes, or safety guidelines. Second, maintain a safe distance from the edge of the platform, as trains can approach quickly, and there might be a risk of falling onto the tracks. Third, be mindful of your belongings, such as the backpack seen in the image, and keep them secure to prevent theft or loss. Lastly, be respectful of other passengers and maintain a polite and courteous demeanor, as this will contribute to a positive and safe environment for everyone at the train station. |
---|---|
翻訳 | 駅を利用する際は、ご自身の安全と周囲の方々の安全を確保するために、いくつかの点に注意する必要があります。まず、周囲の状況に気を配り、駅構内に掲示されている時刻表やホーム変更、安全に関する注意喚起などの案内表示をよく確認しましょう。 次に、ホームの端から一定の距離を保ってください。電車は突然接近することがありますし、ホームから転落する危険性もあります。また、写真にあるようなバックパックなどの持ち物には十分注意し、盗難や紛失を防ぐためにしっかりと管理しましょう。 最後に、他の乗客の方々に配慮し、礼儀正しく穏やかな態度で行動しましょう。 そうすることで、駅全体が快適で安全な環境となることに繋がります。 |
表3 新幹線の駅ホーム画像を入力した場合の生成文
この結果から次のことが分かりました.
******
・安全面への注意(ホーム端から離れる,列車接近への警戒)が的確に説明されている
・時刻表や掲示案内の確認といった利用者向けの行動も指摘している
・持ち物(バックパック)の管理にまで言及し,画像内容を踏まえた注意を生成している
・他の利用者への配慮という社会的側面まで含まれており,自然で納得感のある説明となっている
******
これらの点から,非常に良好な結果が得られたと評価できます.
●まとめ
今回は,ailia-SDKに含まれるLLaVAモデルを用いて,画像に対する説明生成を検証しました.まとめると,技術的背景として,LLaVAが画像エンコーダと大規模言語モデルを組み合わせることで物体認識から一歩進んだ文脈的な説明を可能にしていることを紹介しました.また,実行環境と環境構築手順を示し,GPU利用時には環境指定(-e 3)が必要であること,CPUとGPUで生成結果の傾向が異なることを確認しました.さらに検証では,新幹線駅ホームの画像を入力し,安全面や掲示物の確認,持ち物の管理,他利用者への配慮といった多面的な注意点を説明する文章が得られました.単なる物体検出にとどまらず,画像の内容を踏まえた自然言語での洞察が可能であることが確認できました.
今回の検証から,LLaVAは画像キャプション生成だけでなく,シーン理解や注意喚起システムといった応用にも有効であることが示されました.特に,駅や観光地などの画像から安全上の注意を自動生成できる点は,教育/案内アプリケーションやユーザ支援ツールへの応用可能性を感じさせます.今後は,より多様な画像や日本語プロンプトでの挙動を検証することとします.
氏森 充(うじもり・たかし)
約30年間,(株)構造計画研究所にてIoT,ビッグデータ,機械学習,AI関連のシステム開発や実務応用に従事.退職後はLLM(大規模言語モデル)関連の情報収集や技術動向の調査・発信に注力し,雑誌「Interface」でもLLM技術に関する記事を執筆中.