|
チャットボット(ChatBot)という言葉がありました。「チャット」(Chat)と RobotのBot「ボット」という言葉が組み合わさった造語です。「チャットする」は、数人で雑談(chater)をすることです。この「ボット」は機械学習を利用して、言語と音声の自然言語処理を自動的に実行する人工知能のことです。チャットボットはテキストおよび音声を通じてユーザーとの言語会話を自動的に行うロボットのことです。OpenAI が提供している ChatGPT(Generative Pretrained Transfomer)は Transfomer という大規模言語処理アーキテクチャーを組み込んで構築されたAIのチャットボットです。したがって、ChatGPTの基本構造はTransformerを組み込んだ言語生成のAIチャットボットになります。
OpenAIが提供する最新のChatGPTはGPT-4 になっています(2023年7月現在)。GPT-3はOpenAIが開発している1750億個のパラメータを使用した生成的文章言語(大規模言語)モデルですが、GPT-4はそれ以上の10兆個のパラメータを使用するとも言われており、GPTの4番目のバージョンで、これまでGPT → GPT-2 → GPT-3 → GPT-4とバージョンアップしています。GPT3 の段階で、文章の自動生成のみならず、画像や音楽の自動生成や、レポートの自動生成、チャットの自動応答など様々な事が出来るようになっていました。GPT-3.5 までは、テキスト入力だけが可能でしたが、GPT-4 は画像とテキストのみならず、音声、動画、コード、データなどの入力を受け入れ、テキスト出力を生成できる大規模なマルチモーダル・モデルで、OpenAI が開発した最新の大規模言語モデルです。詳しくは、OpenAIの公式Website を参照してください。
OpenAI は元々は非営利組織で、Open というAIの設立ポリシーのもとで、2018年のGPT-1、2019年2月のGPT-2までは、GPTはオープンソースとして公開されてきました。しかし、マイクロソフトなどからの出資を受けて、2019年3月に営利組織のOpenAI LP が設立されてから、ポリシーが変わり、2020年9月22日にマイクロソフトはGPT-3の「独占的な利用」を発表しました。GPT-3からはソースが非公開になっており、ChatGPTではパラメータ数なども秘密になっています。CloseAI だという人達もいます。
OpenAIでChatGPTの開発に従事していたメンバーによって設立されたAnthropic社が開発した Claude 2 という会話型生成AIも ChatGPT のライバルです。2023年7月11日にリリースされ、ChatGPTをしのぐ性能の良さと話題になっています。2024年9月現在、日本の携帯電話番号からも Claude 3.5 Sonnet が利用可能になりました。Claude 3.5 Sonnetの最大の利点は無料で利用できることと、ファイルの読み込みが可能なことです。Claude 3.5 もGPT-4などと同様、Transformerアーキテクチャに基づいた大規模な言語モデルを採用しています。 Anthropic の公式サイトにアクセスして、または、スマホでアプリをダウンロードすれば無料で利用できます。
Meta は、2023 年 7 月 18 日に大規模言語モデル (LLM) の最新バージョンである LLaMA 2 (Large Langauge Model Meta AI)を発表しました。Meta and Microsoft Introduce the Next Generation of Llamaを参照ください。LLaMA 2 は、オープンソースの自由な研究と商用利用を可能にする大規模言語モデル (LLM)の最新版です。このLlaMA 2 を利用したローカル LLM の新たな波が起こることが予想されます。LlaMA 2 のソースコードは META AI の公式サイトからダウンロード可能です。モデルのパラメータ・サイズは、70億(7B)、130億(13B)、700億(70B)個の3種類です。事前学習バージョンと会話型ファインチューニング・バージョンのモデルが含まれます。Llama 2-Chatと呼ぶファインチューニングされたLLMは、対話の利用に最適化され、オープンソースのチャットモデルの多くを上回ると言われ、OpenAIのGPT-3.5に匹敵する性能を持つとされます。Llama 2は、Windows上でのローカル動作への最適化も予定されており、AWSやHugging Faceなどで利用可能となっています。
パリを拠点とするスタートアップ企業 Mistral AI 社は、2023年9月27日、初のオープンソース大規模言語モデル(LLM)「Mistral 7B」をリリースした。73億のパラメータを持つこのモデルは、Meta 社の「Llama 2 13B」(Metaの新型モデルの中では小型の部類に入る)などを凌駕しており、このサイズとしては最も強力な言語モデルだと言われています。Google 傘下の DeepMind と Meta社で開発に従事していたエンジニアたちによって設立された Mistral AI 社は、一般に公開されているデータと顧客から提供されたデータのみを利用することで、企業のために AIを有用なものにすることを使命としています。この新しいMistral 7B は Apache 2.0 ライセンスの下でオープンソース化されており、誰でも(ローカルからクラウドまで)制限なく、商業ベースを含め、どこでも微調整して使用することができます。モデルの重み係数はHugging Faceのサイトからダウンロードします。GPUを持たないPCではインストールできませんが、24GBのGPU使用可能なホストを持っている場合は、Dockerを使用してMistral 7Bを実行できます。Mistral 7B の使用については、Mistral AI の公式ページを参照ください。
2023年12月6日に、Googleは、テキスト、画像、オーディオを越えて機能する新しい大規模なマルチモーダルモデル(LMM)であるGeminiを発表しました。Geminiのテキスト機能は、同じ日にBARDに導入され、BARDからGeminiを利用することができるようになりました。BARD は Gemini に統合されました。Geminiではプロンプトに画像やコードなどを用いて学習できます。Gemini は、Google Gemini のサイトにアクセスすると利用可能です。
Last updated: 2024.8.16
Transformer の仕組みの原型 |
従来、 自然言語処理 における Deep Learning アルゴリズムと言えば、 LSTM や GRU といった RNN (Recurrent Neural Network) でした。ところが、2017年6月、 "Attention Is All You Need" という強いタイトルの論文が Google から発表され、機械翻訳のスコアを既存の RNN モデル等から大きく引き上げます。論文”Attention Is All You Need”において、RNN や CNN を使わず Attention のみ使用したニューラル機械翻訳 Transformer が提案された。
最初に Transformer アーキテクチャーを利用して話題になった自然言語処理モデルは、BERT(Bidirectional Encoder Representations from Transformers) と GPT2 です。BERTは、Transformerのアルゴリズムを活用した双方向的エンコード表現による言語処理のアプリで、2018年10月にGoogle AI Languageの研究者が論文で発表したものです。この論文において質疑応答(SQuAD)と自然言語推論(MNL1)、Microsoft Research Paraphrase Corpus (MRPC)などの様々な自然言語処理の幅広いタスクにおいて最先端の結果が公表されたことにより、言語処理の機械学習研究に大きな影響を与えました。
いうまでもなく、BERTのカギとなる技術的イノベーションは、attentionモデルを採用したことでよく知られているTransformerの双方向的な訓練を適用したことにあります。BERTは、これ以前の自然言語処理モデルが熱心に試みていた文字列を左から右に見ていく、あるいは左から右への訓練とその逆のそれを組み合わせるのとは対照的です。論文で発表された結果は、双方向的に訓練された言語モデルが、単方向的に訓練された言語モデルに比べて文脈と文の流れから見た言語の意味をより深くつかめることを示している。文章分類、質問応答、固有表現抽出等の多様なタスクで公開当時の最高性能(SOTA: State of the Art)を達成しました。文章の分類や質問に対する応答が得意です。
chatGPT、 Claude、 LLaMA、Mistral 7B、そして、Google Gemini は、この Transformer アーキテクチャーを基盤技術として利用しています。
ところで、最新の GPT は何に得意なのでしょうか。対話応答、要約等の文章生成タスクが主に得意だと言われています。BERT と ChatGPT の相違について、chatGPT に聞いてみました。以下がその答えです。
『BERT(Bidirectional Encoder Representations from Transformers)とGPT-3(Generative Pre-trained Transformer 3)は、両方ともTransformerモデルを基にした自然言語処理(NLP)モデルですが、いくつかの主要な相違点があります。
モデルのタスク:
BERT: BERTは、言語モデルとして事前学習され、文の埋め込み表現(文脈を考慮した単語の表現)を生成します。これは、事前学習の後に、さまざまなタスク(テキスト分類、文の類似度判定など)にファインチューニングすることができます。
GPT-3: GPT-3は、大規模なトランスフォーマモデルであり、大量のテキストデータを使用して事前学習されています。GPT-3は、生成モデルとして使用され、与えられたテキストの文脈に基づいて次の単語や文章を予測することができます。
文脈の処理:
BERT: BERTは、文脈を左から右と右から左の両方の方向で学習することで、単語の埋め込み表現を生成します。これにより、単語の前後の文脈を考慮した表現が得られます。
GPT-3: GPT-3は、前方向の文脈のみを考慮して生成された文を予測するため、文脈の処理はBERTとは異なります。
モデルのサイズとパラメータ数:
BERT: BERTは、比較的小さなモデルであり、数億から数十億のパラメータを持つことが一般的です。
GPT-3: GPT-3は非常に大規模なモデルであり、1兆のパラメータを持つことが特徴です。
転移学習の応用範囲:
BERT: BERTは、ファインチューニングを通じてさまざまなNLPタスクに適用できます。例えば、テキスト分類、文の類似度判定、固有表現認識などです。
GPT-3: GPT-3は、テキスト生成タスクに特化しており、文や文章の生成が主な応用範囲です。
これらはBERTとGPT-3の主な相違点ですが、それぞれのモデルは異なる目的と利用シナリオに特化しています。BERTはファインチューニングによる応用範囲の広さと精度の向上において強力ですが、GPT-3は大規模なテキスト生成タスクにおいて優れたパフォーマンスを発揮します。』
ChatGPTの答えは、上で述べた特徴とも一致しています。なお、GPTとBERTの比較をした解説、"GPT-3 vs. BERT: Comparing the Two Most Popular Language Models"では以下のように説明されています。
GPT-3 と BERT はどちらも、質問応答、要約、翻訳などのさまざまな NLP タスクで良好に機能することが示されていますが、その精度はタスクに応じて異なります。GPT-3 はトレーニング用のデータセットのサイズが大きいため、より多くのデータにアクセスできることが有益となる要約や翻訳などの特定のタスクでは、優れたパフォーマンスを発揮する傾向があります。一方、BERT は双方向の性質により、センチメント分析や NLU などの他のタスクでは、予測を行うときに左右のコンテキストの両方を考慮できるため、パフォーマンスが向上する傾向があります。
BERTを日本語で使用する具体例については、BERTによる日本語処理のページを参照ください。
Transformer の構造
関連記事の紹介
The illustrated Transformer
ChatGPT の利用 |
ChatGPT を利用するためには、OpenAI の公式サイトにある ChatGPT のページにアクセスします。アカウントを作成して、ログインします。Google などのアカウントでもログインできます。「+ New Chat」 をクリックして、チャットを始めます。
例えば、「ROS 2のプログラムは書けますか?」と入力すると、以下のような返答があります。
「はい、ROS 2のプログラムを書くことは可能です。ROS 2は、Robot Operating System(ROS)の次世代バージョンであり、ロボットアプリケーション開発のためのフレームワークです。ChatGTP に 'Write me code for getting the nth number in the Fibonacci sequence' と言うメッセージを送りました。すると、以下のような返事がありました。
Sure, here's a Python code snippet that calculates the nth number in the Fibonacci sequence using both an iterative and a recursive approach:
# Iterative approach
def fibonacci_iterative(n):
if n <= 0:
return 0
elif n == 1:
return 1
prev, curr = 0, 1
for _ in range(2, n + 1):
prev, curr = curr, prev + curr
return curr
# Recursive approach
def fibonacci_recursive(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)
# Get the nth Fibonacci number using the iterative approach
n = 10 # Change this to the desired value of n
result_iterative = fibonacci_iterative(n)
print(f"The {n}th Fibonacci number (iterative) is: {result_iterative}")
# Get the nth Fibonacci number using the recursive approach
result_recursive = fibonacci_recursive(n)
print(f"The {n}th Fibonacci number (recursive) is: {result_recursive}")
Replace the value of n with the desired position in the Fibonacci sequence for which you want to find the corresponding number. Keep in mind that the recursive approach can become slow for larger values of n due to repeated calculations.
確かに、Python コードを書いてくれました。日本語で同じことを聞いても、同様のコードを書いてくれました。
デフォルトの ChatGPT のバージョンは GTP 3.5 です。GTP 4 にアップグレードすることも可能ですが、サブスクリプションが必要です。2023年2月にリリースされた ChatGPT Plus では、テキストだけでなくコード入力も可能とする Code Interpreter プラグインが導入されています。より人間に近い処理能力が実現可能になっていると言える。ただし、ChatGPT Plus のサブスクリプション(20ドル/月)が必要です。Code Interpreter とは何か?Medium の記事では以下のように説明されています。
「Code Interpreter は、ChatGPTの AI がコードを実行し、データを分析し、グラフを作成し、ファイルを編集し、そして数学的演算を実行します。 ChatGPT内のデータサイエンティストをいつでも自由に利用できるようになり、複雑なデータを認識し、実用的な洞察を得ることができる。Code Interpreter は、すべての ChatGPT Plus 加入者が利用でき、アカウント設定を通じて有効にすることができます。これはPython でコードを記述し、最大 100MB のサイズのファイルを操作できる強力なツールです。
Code Interpreter は、コードを実行するための単なるツールではありません。
それは可能性を解き放つためのツールです。さらに、ユーザーはチャート、マップ、データ視覚化、グラフィックを生成し、音楽プレイリストを分析し、インタラクティブな HTMLを作成できます。ファイル、クリーンなデータセット、さらには画像からカラーパレットを抽出します。
たとえば、ユーザーは米国内のすべての灯台の場所の CSV ファイルをアップロードし、ChatGPT にその GIF マップを作成するように依頼できます。数秒後、ChatGPT はアップロードされたデータに基づいて、上にきらめくライトを備えた正確な地図が表示されます。」
2023 年 9 月 25 日、OpenAI は、最新かつ最先端のモデルである GPT-4 との対話方法を拡張する 2つの新機能のロールアウトを発表しました。それは、画像について質問する機能と、クエリへの入力として音声を使用する機能です。そして、2023 年 11 月 6 日、OpenAI は Vision を使用した GPT-4 への API アクセスを発表しました。これにより、GPT-4 で、ユーザーが画像を入力としてアップロードし、その画像について質問することができます。これは、ビジュアル質問応答 (VQA) として知られるタイプです。GPT-4 は、OpenAI ChatGPT iOS アプリ、Web インターフェイス、および API で利用できるようになりましたが、 Web ツールを使用して開発するには、GPT-4 サブスクリプションが必要です。
RoboflowのブログGPT-4 with Vision: Complete Guide & EvaluationにGPT-4 with visionを使用した評価解説があります。GPT-4に関する最近の動向については、OpenAIのDocsページを参照ください。
ChatGPT アプリを iPhone などのスマートフォンにインストールして利用することができます。iPhone の場合は、App Store にアクセスしてダウンロードします。あとは、ChatGPT アプリを起動して、ログインすれば、利用可能となります。
LlaMA 2 の利用 |
Facebook Research が提供しているコードは、githubのa minimal example to load Llama 2 models and run inferenceにあります。モデルの重み係数とトークナイザーをダウンロードするためには、Meta AI websiteにアクセスして、ライセンスの承認を得る必要があります。
website に用意されている LlaMA 2 Chatbot を使用してみました。利用した website は、 LLaMA2 Chatbot by a16z-infraです。GitHubのアカウントでログインしました。「BERTとGPTの違いについて教えてください」と日本語で聞きました。以下が返答でした。
「BERTとGPTは、どちらも自然言語処理 (NLP) の分野で使用される言語モデルです。ただし、それぞれ異なる目的に設計されています。
BERT (Bidirectional Encoder Representations from Transformers)
は、主に文書の意味を理解するために使用される言語モデルです。BERTは、文書全体を考慮して、単語や文節の意味を推測することができます。
GPT (Generative Pre-training Transformer) は、主に自然言語生成に使用される言語モデルです。GPTは、与えられた文章の続きを生成することができます。
つまり、BERTは文書の理解に役立ち、GPTは自然言語生成に役立ちます。」
日本語での返答には英語に比較してかなりの時間がかかります。
Hugging Face のchatbot(LlaMA 2)に聞いてみました。 「BERTとLlama2の相違はなんですか?」日本語での質問には途中で返答が途絶えて、最終的な返答がありませんでした。デフォルトでは、日本語での会話は苦手のようです。日本語でのファインチューニングが必要のようです。英語で質問すると詳しい説明を返してくれました。
ChatGTP と同様に、「フィボナッチ数列を出力するコードを書いてください」というメッセージを送ると、Pythonコードを書いてくれました。
「もちろん、喜んでお手伝いさせていただきます! フィボナッチ数列は一連の数値であり、各数値は 0 と 1 から始まる先行する 2 つの数値の合計です。Python を使用してフィボナッチ数列の最初の 10 個の数値を出力する方法の例を次に示します。
for i in range(10): print(fibonacci(i))
これにより、次の数値が出力されます:
0、1、1、2、3、5、8、13、21、34
このfibonacci()関数は Python に組み込まれていないため、自分で定義する必要があります。これを行う 1 つの方法は次のとおりです。
def fibonacci(n): if n <= 1: return n else: return fibonacci(n-1) + fibonacci(n-2)
この関数は再帰的アプローチを使用して n 番目のフィボナッチ数を計算します。まず、n が 1 以下かどうかを確認します。その場合、結果は次のようになります。」
この課題を再試行すると多少異なる返答をします。日本語処理の能力を別にして、ChatGPT(GTP 3.5) と同等の能力があることが確認できます。
Data Economy に掲載されている解説「LlaMA2とChatGPTとの相違」が指摘する要点は以下のとおりです。
「 LlaMA と ChatGPTの基礎は両方ともトランスフォーマーにあります。トランスフォーマーは、膨大なデータ量を分析し、収集した洞察に基づいて新しいコンテンツや予測を生成するために機械学習で利用される人工ニューラルネットワークの一種です。
LlaMA と ChatGPT を分ける重要な要素の 1 つは、そのサイズです。 LlaMA は効率性と低リソース消費を重視しており、他の多くの LLM よりもコンパクトです。
パラメーターは少ないですが、効率を最適化することでこれを補います。」
LLaMA2 のソースコードをダウンロードして実行してみます。利用できるモデルの重みは
MacなどのPC(cpuのみ)でもLlama 2を使えるようにするLlama.cppというプロジェクトがあるので、これを利用します。 Llama.cppはLlamaをC/C++に移植したもので、MacなどのPC上で4bit量子化を使ってLlama 2をローカルに実行できるようにしたものです。
Llama.cppで動作させるためには、METAが提供するLlamaのモデルをggmlフォーマットに変換する必要があります。そして、これを4-bitに量子化します。Pythonを使用して変換します。ここではこの手順を短縮するために、ggmlファイルに変換された量子化モデルをダウンロードします。ggmlファイルへの変換については、m1 MacbookにLlama 2をインストールして使ってみるを参照してください。
Llama 2のggmlフォーマットの量子化されたモデルはHugging Faceのサイトから取得します。上記の重みに対応した変換済みのモデルが用意されています。Hugging Face のweb サイトにあるファイル群Llama-2-7B-GGMLの中から選択して、例えば、標準的な「llama-2-7b-chat.ggmlv3.q4_K_M.bin」をダウンロードします。サイズは約3.8GBです。
「TheBloke/Llama-2-7B-Chat-GGML」の「Files and versions」タブを選択し、4bit量子化版「llama-2-7b-chat.ggmlv3.q4_K_M.bin」をダウンロードします。
Llama.cpp で Llama 2 を使用してみます。最初に、llama.cpp を gihub のレポジトリからダウンロードします。
$ git clone https://github.com/ggerganov/llama.cpp $ cd llama.cpp $ make $ mkdir models
ダウンロードしたモデル「llama-2-7b-chat.ggmlv3.q4_K_M.bin」を「llama.cpp/models」に配置します。mainというプログラムファイルを使うことで実行できます。例えば、以下のようなコマンドを入力します。
$./main -m ./models/llama-2-7b-chat.ggmlv3.q4_K_M.bin -n 256 --repeat_penalty 1.0 --color -i -r "User:" -f prompts/chat-with-bob.txt ---- == Running in interactive mode. == - Press Ctrl+C to interject at any time. - Press Return to return control to LLaMa. - To return control without starting a new line, end your input with '/'. - If you want to submit another line, end your input with '\'. Transcript of a dialog, where the User interacts with an Assistant named Bob. Bob is helpful, kind, honest, good at writing, and never fails to answer the User's requests immediately and with precision.
以下のような会話になります。"user:"の後ろにメッセージを入力します。
User: Hello, Bob. Bob: Hello. How may I help you today? User: Please tell me the largest city in Europe. Bob: Sure. The largest city in Europe is Moscow, the capital of Russia. # 会話はここから始める User:Hi bob Bob: Hello! How may I assist you today? User:please tell me what the height of Mount Fuji is. Bob: Mount Fuji is approximately 12,389 feet (3,776 meters) tall. User:thank youctrl+c で終了します。 examplesフォルダ に様々な実行例が書かれたコードがあるので、これを実行してみます。
$ ./main -m models/llama-2-7b-chat.ggmlv3.q4_K_M.bin -c 512 -b 1024 -n 256 --keep 48 --repeat_penalty 1.0 --color -i -r "User:" -f ./prompts/chat-with-bob.txt ---- User:hello Bob: Hello! How may I help you today? User:where is the largest city in japan? Bob: The largest city in Japan is Tokyo. User:How many people live there? Bob: According to the most recent estimates, the population of Tokyo is over 13 million people.
会話が始まるまで少々の時間がかかります。日本語での会話は無理ですね。
$ ./main -m models/llama-2-7b-chat.ggmlv3.q4_K_M.bin --prompt "Once upon a time"
と入力すると、'Once upon a time'から始まる小説を書いてくれます。
関連記事の紹介
Meta開発のLLMであるLLaMA、LLaMA2、派生モデルAlpacaについて解説!
Anthropic Claude 3.5 Sonnet の利用 |
Anthropic Claude 3.5 sonnet を使用してみましょう。公式サイトに行きます。
「フィボナッチ数列のn番目の数を取得するコードを書いてください」とプロンプトを書きました。以下のような返答となりました。
はい、フィボナッチ数列のn番目の数を取得するPythonコードを書きます。 ``` python def fibonacci(n): if n <= 0: return "nは正の整数である必要があります" elif n==1 or n==2: return 1 else: a, b=1, 1 for _ in range(3, n + 1): a, b=b, a + b return b # 使用例 n=10 result=fibonacci(n) print(f"フィボナッチ数列の{n}番目の数は: {result}") ``` このコードは`fibonacci`関数を定義しています。この関数は以下のように動作します: 1. まず、入力値`n`が0以下の場合はエラーメッセージを返します。 2.`n`が1または2の場合は1を返します(フィボナッチ数列の最初の2項は1です)。 3. それ以外の場合、ループを使用して`n`番目までのフィボナッチ数を計算します。 使用例として、10番目のフィボナッチ数を計算しています。 このコードを実行すると、以下のような出力が得られます: ``` フィボナッチ数列の10番目の数は: 55 ``` コードの説明や動作の詳細について、さらに詳しく知りたい点はありますか?
実行可能なPython コードを教えてくれました。
次に、「YOLO 8 を用いた物体検出のpythonコードを書いて下さい」とプロンプトに書き入れてみましょう。下のような返答がありました。
はい、YOLO v8を使用した物体検出のPythonコードを作成します。このコードは、画像に対して物体検出を行い、結果を表示します。 ```python import cv2 from ultralytics import YOLO # YOLOv8モデルをロード model = YOLO('yolov8n.pt') # または他のYOLOv8モデル # 画像のパス image_path = 'path/to/your/image.jpg' # 画像を読み込む image = cv2.imread(image_path) # 物体検出を実行 results = model(image) # 検出結果を画像に描画 for result in results: boxes = result.boxes.cpu().numpy() for box in boxes: x1, y1, x2, y2 = box.xyxy[0] conf = box.conf[0] cls = int(box.cls[0]) cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2) cv2.putText(image, f'{model.names[cls]} {conf:.2f}', (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) # 結果を表示 cv2.imshow('Object Detection', image) cv2.waitKey(0) cv2.destroyAllWindows() # 結果を保存(オプション) cv2.imwrite('output.jpg', image) ``` このコードは以下の手順で物体検出を行います: 1. 必要なライブラリ(OpenCVとultralytics)をインポートします。 2. YOLOv8モデルをロードします。 3. 画像を読み込みます。 4. モデルを使用して物体検出を実行します。 5. 検出結果を画像上に描画します。 6. 結果を表示し、必要に応じて保存します。 このコードを使用する前に、以下の準備が必要です: 1. 必要なライブラリをインストールします: ``` pip install ultralytics opencv-python ``` 2. YOLOv8のモデルファイル(例:'yolov8n.pt')をダウンロードするか、カスタムモデルを用意します。 3. `image_path` 変数を、検出したい画像のパスに変更します。 コードを実行すると、指定した画像に対して物体検出が行われ、検出された物体にバウンディングボックスとラベルが描画された画像が表示されます。また、結果は'output.jpg'として保存されます(オプション)。 このコードをカスタマイズしたり、動画やWebカメラからのリアルタイム検出に拡張したりすることも可能です。何か質問や修正したい点があればお知らせください。
「pip install ultralytics opencv-python 」を最初に実行して、このPythonコードを実行すると、エラーなしで物体検出が行われます。素晴らしい。
無料で利用するときは、使用回数に制限があるようです。時々「unexpected capacity constraints」という警告が出て反応しません。
****** To be continued *****
ご質問、コメントなどは こちらからメール送信して下さい。