Welcome to Mashykom WebSite



Google Generative AI: Gemini and Imagen3

 2023年12月6日に、Googleは、テキスト、画像、オーディオを越えて機能する新しい大規模なマルチモーダルモデル(LMM)であるGeminiを発表しました。Geminiのテキスト機能は、同じ日にBARDに導入され、BARDからGeminiを利用することができるようになりました。その後、BARD は Gemini に統合されました。Gemini は、Google Gemini のサイトにアクセスすると利用可能です。

 Google DeepMind が開発した「 Imagen 」シリーズはテキストプロンプトから高品質な画像を生成する画像生成モデルです。この画像生成モデル「imagen」を使用し、プロンプトから画像を生成できるプラットフォーム「ImageFX」が Google からリリースされています。既存の生成AI作成ツール「VideoFX」、「MusicFX」と「TextFX」もリニューアルされています。DeepMind が開発した画像生成AI「Imagen」の最新バージョンは「Imagen 3」です。ImageFXの公式サイトはこちらです。Google Gemini のサイトからも利用できます。Googleアカウントがあれば試すことができます。

Last updated: 2024.8.31



Google Gemini の利用


 Google Gemini を利用する最も簡単な方法は Google Chrome を開いて、上部のメニューバーに 「@gemini」と入力すると、Gemini のページに行きます。

 「ここにプロンプトを入力してください」と書かれている欄にユーザーのプロンプトを入力します。「ロボットを操作するために利用されているROS2について説明してください」と入力して、「返信」をクリックしてみましょう。以下のような返答が返ってきました。

ROS2について
ROS2(Robot Operating System 2)は、ロボット開発において広く利用されているオープンソースのソフトウェアフレームワークです。ロボットの様々な機能を統合し、開発効率を大幅に向上させることを目的としています。ROS1の後継として開発され、より多くの機能と柔軟性を備えています。

ROS2が選ばれる理由
モジュール性: ロボットの機能を小さなモジュール(ノード)に分割し、それぞれのモジュールを独立して開発・テストすることができます。これにより、複雑なロボットシステムも管理しやすくなります。
柔軟性: さまざまなハードウェアやソフトウェアに対応できるよう設計されており、カスタムロボットの開発にも適しています。
大規模コミュニティ: 世界中の研究者やエンジニアがROS2を利用しており、豊富なドキュメントやサンプルコード、コミュニティサポートが得られます。
リアルタイム性: リアルタイム通信に対応しており、ロボットの制御に求められる高速な処理を実現できます。
信頼性: 商用利用を視野に入れて開発されており、高い信頼性と安全性を実現しています。
ROS2の主な機能
ノード: ロボットの各機能を担う独立したプログラム単位です。
トピック: ノード間の通信に使用されるチャネルです。
サービス: ノード間でリクエストとレスポンスによる通信を行うための仕組みです。
アクション: より複雑な通信パターンを実現するための仕組みです。
パラメータサーバ: システム全体の動作パラメータを管理します。

ROS2の活用事例
自律移動ロボット: 自律走行車の開発、ドローンの制御など
マニピュレータ: 産業用ロボットアームの制御、サービスロボットの開発など
パーソナルロボット: 家庭用ロボット、エンターテイメントロボットなど

ROS2の学習方法
公式チュートリアル: ROS2の公式サイトには、初心者向けのチュートリアルが豊富に用意されています。
オンラインコース: UdemyやCourseraなどのオンライン学習プラットフォームで、ROS2に関するコースが多数開講されています。
コミュニティ: ROS2のフォーラムやSlackチャンネルで、他のユーザーと質問し合い、情報交換をすることができます。

まとめ
ROS2は、ロボット開発において不可欠なツールとなりつつあります。そのモジュール性、柔軟性、そして大規模なコミュニティによって、ロボット開発の効率化と高度化に大きく貢献しています。

より詳しく知りたい場合は、以下のキーワードで検索してみてください。

ROS2 チュートリアル
ROS2 ノード トピック サービス
ROS2 実装例
ROS2 とは
何か質問があれば、お気軽にご質問ください。

より具体的な質問の例:

ROS2で簡単なロボットシミュレーションをしたいのですが、おすすめのツールはありますか?
ROS2と他のロボットミドルウェアとの違いは何ですか?
ROS2のインストール方法を教えてください。
ご希望に応じて、より詳細な説明や具体的なコード例も提供できます。


 続けて必要になるであろう質問の例も提示されています。ROS2 のインストール方法や操作のためのコードも教えてくれます。

 Python コードを出力してもらう例を取り上げます。例えば、「フィボナッチ数列のn番目の数を取得するコードを書いてください」と入力して、「返信」をクリックします。実行後、以下のような返答があります。


def fibonacci_recursive(n):
  if n <= 0:
    return "Invalid input"
  elif n == 1 or n == 2:
    return 1
  else:
    return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)

# 例: 10番目のフィボナッチ数を求める
result = fibonacci_recursive(10)
print(result)

 実行可能な Python コードを書いてくれました。

 次に、物体検出のソフトウェアを利用するためのコードについて質問します。「yolo 8 を用いた物体検出の python コードを書いてください。」とプロンプト入力をします。以下の結果が返ってきました。

YOLOv8を用いた物体検出のPythonコード
YOLOv8は、物体検出モデルとして非常に強力なツールです。PythonでYOLOv8を用いた物体検出を行うための基本的なコードを以下に示します。

Python
from ultralytics import YOLO

# モデルのロード
model = YOLO('yolov8n.pt') # yolov8n, yolov8s, yolov8m, yolov8l など、モデルサイズを選択可能

# 画像または動画への推論
results = model('path/to/your/image.jpg') # 画像の場合
# results = model('path/to/your/video.mp4') # 動画の場合

# 結果の表示
results.print()
results.show()
コードは注意してご使用ください。

コードの解説
ライブラリのインポート:ultralyticsライブラリをインポートします。YOLOv8の機能を提供するライブラリです。
モデルのロード:YOLO()関数でモデルをロードします。
引数に、使用するモデルのパスを指定します。yolov8n.ptは軽量なモデル、yolov8l.ptは高精度なモデルなど、さまざまなモデルサイズが用意されています。
画像または動画への推論:model()関数に、推論したい画像または動画のパスを指定します。
結果はresults変数に格納されます。
結果の表示:results.print()で、検出結果をテキストで表示します。
results.show()で、検出結果を画像または動画で表示します。
...

 コードの詳細な注釈も記述されています。ただし、「コードは注意してご使用ください。」と書かれている通り、results.print() を実行すると、'list' object has no attribute 'print''というエラーが出ます。検出結果を表示するためには、IPython.display モジュールまたは cv2 モジュールを使用する必要があります。

 「webcamera を使用するときは、どうなりますか?」と聞くと、以下のようなコードを返しました。

YOLOv8でWebカメラを使用する場合
YOLOv8でWebカメラを使用する場合、静止画ではなく、リアルタイムで動画を入力として物体検出を行うことができます。

基本的なコード
Python
from ultralytics import YOLO

# モデルのロード
model = YOLO('yolov8n.pt')

# Webカメラからの入力 (カメラ番号は0から始まることが多い)
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    results = model(frame)
    results.show()

    if cv2.waitKey(1) == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

コードは注意してご使用ください。

コードの解説
OpenCVのインポート:cv2モジュールをインポートします。これは画像処理ライブラリで、Webカメラからの画像取得や表示に使用します。
Webカメラのキャプチャ:cv2.VideoCapture(0)で、カメラ番号0のWebカメラを開きます。多くの場合、内蔵カメラが0に割り当てられます。
whileループ内で、cap.read()で1フレームずつ画像を取得します。
YOLOv8による推論:取得したフレームをmodel()に入力し、物体検出を実行します。
結果の表示:results.show()で、検出結果が重ねられた画像を表示します。
終了条件:cv2.waitKey(1)で、1ミリ秒間キー入力を待ちます。'q'キーが押されるとループを抜け、処理を終了します。
...

 上記のコードには間違いがあります。results.show() がエラーになります。エラーが出ない実行可能なコードを生成することは難しそうです。修正したコードは以下のとおりです。Jupyter Notebookを利用して実行するときは、Ultralyticsと必要パッケージをインストールするために、最初の行に以下のコマンドを入力します。


!pip install ultralytics
import cv2

from ultralytics import YOLO

# モデルのロード
model = YOLO('yolov8n.pt')

# Webカメラからの入力 (カメラ番号は0から始まることが多い)
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    results = model(frame)
    annotated_frame = results[0].plot() # 修正部分
    cv2.imshow("YOLOv8 Inference", annotated_frame) # 追加のコード

    if cv2.waitKey(1) == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

 このコードを実際に実行してみてください。エラーは出ないと思います。webcam のウインドウが閉じないときは、Jupyter Notebookで Pyhonを終了してください。

 Gemini はマルチモーダルの生成 AI モデルです。選択したモデル バリエーションに応じてプロンプトでテキストと画像を受け取り、テキストのレスポンスを出力できます。以下のような実験をしてみましょう。 「以下の画像ははどこですか?」と入力して、次に、「画像をアップロード」ボタンをクリックして、自分のPCから画像をアップロードします。ここでは、下にある画像を使用しました。


Cite de Carcassonne

 「返信」クリックすると、以下のような返答がありました。

この画像は、フランスのカルカソンヌという街にあるシタデルと呼ばれる城塞都市です。

カルカソンヌは、中世の街並みをそのまま残しており、ユネスコの世界遺産にも登録されています。シタデルは、その中でも特に有名な観光スポットで、二重の城壁と52もの塔が特徴的な中世の城塞都市です。

画像の特徴

二重の城壁: シタデルの最も特徴的な部分で、内側の城壁と外側の城壁が二重になっているのがわかります。
塔: 52もの塔が城壁に沿って建っており、その数が印象的です。
河川: 城壁の外には川が流れており、中世の街並みをより一層引き立てています。
緑: 城壁の外には緑豊かな木々が生い茂っており、自然と中世の建造物が調和している様子が見て取れます。

カルカソンヌの魅力

中世の雰囲気: 中世の街並みをそのまま残しており、タイムスリップしたような感覚を味わえます。
歴史的な建造物: シタデル以外にも、歴史的な建造物が数多く残っています。
美しい風景: 城壁の上からは、カルカソンヌの街並みや周辺の風景を一望できます。
グルメ: 地元の特産品を使った料理やワインを楽しむことができます。

観光のポイント

シタデル: 城壁の上を歩いたり、城内にある博物館を見学したりすることができます。
旧市街: 中世の面影を残す家並みを散策したり、お店を見て回ったりすることができます。
バスティーユ: カルカソンヌのシンボル的な建物で、展望台からは街を一望できます。
この画像は、カルカソンヌの美しい風景と歴史を感じさせる一枚と言えるでしょう。もし機会があれば、ぜひ実際に訪れて、その魅力を体験してみてください。

その他

カルカソンヌは、フランス南部に位置しており、トゥールーズから車で約1時間ほどの距離にあります。
観光シーズンは、春から秋にかけてです。
城壁内は石畳になっているため、歩きやすい靴で行くことをおすすめします。
この情報が、あなたの旅行の計画のお役に立てれば幸いです。

 この画像は南フランスのオード県カルカッソンヌ市にある中世城塞都市の写真です。したがって、答えは正しいです。この城塞都市はフランス語で「 La cité de Carcassonne 」と言います。「シタデル(citadel)」という英語は城塞という意味なので、これを指していると思われます。フランス語では、citadelle という言葉に対応しますが、通常は「シテ(cité)」と呼ばれます。

 Google AI Studio を用いて、Gemini の利用をすることもできます。Google AI Studio は、生成モデルを使用したプロトタイピング用のブラウザベースの IDE で、ブラウザ上でプロンプトのプロトタイプを作成して実行できるようにするウェブベースのツールです。Google AI Studioでは,モデルを試してさまざまなプロンプトを簡単に試せます。結果に問題がなければ、Gemini API を利用した、お好みのプログラミング言語のコードにエクスポートできます。詳しくは、Google AI Studioクイックスタートをご覧ください。

 ここで、簡単に利用法を説明します。このGoogle AI のページにアクセスします。マルチモーダル プロンプトを作成するには、Google AI Studio で以下のようにします。

  1. 左側のパネルで、[Create new] > [Freeform prompt] を選択します。
  2. 右にあるmodelの部分をGemini 1.5 Pro にします。
  3. プロンプトの入力領域に自身の画像を貼り付けます。「+」バーをクリックして、「up to drive」をクリックします。自身のPCにある画像、例えば、minato_mirai.jpg(みなとみらいのコスモ・クロックの写真)を貼り付けます。
  4. プロンプトのテキスト領域(Type someething)に、次のテキストを入力します。
    「アップロードされた画像に写っているものについて教えてください」
  5. ウィンドウの下部にある [Run] をクリックして、このリクエストに対する返信を生成します。

minato_mirai.jpg
みなとみらいのコスモ・クロック

 結果は下記のような返答になりました。

  写真の説明:
  
  写真は、横浜みなとみらい21地区にある大観覧車「コスモクロック21」を捉えています。観覧車は、海沿いに位置し、その背後に特徴的な形のホテル「横浜インターコンチネンタルホテル」がそびえ立っています。
  
  写真の要素:
  
  コスモクロック21: 写真の中央に位置し、白い支柱とカラフルなゴンドラが特徴的な大観覧車です。観覧車のデジタル時計は「7:40」を示しています。
  横浜インターコンチネンタルホテル: 観覧車の背後に見える、白い帆を広げたような形の高層ホテルです。
  その他: 写真の左側には、建物の屋上部分が見え、右側には、観覧車の一部と、ピンク色の建物の一部、そしてジェットコースターの一部が見えます。
  写真からは、晴天の青空が広がり、横浜のランドマークである観覧車とホテルが美しく調和している様子が伺えます。


 最後に、江ノ島の画像を用いた実験を行います。「アップロードされた画像に写っているものについて教えてください。またここはどこでしょうか?」とプロンプトに書き込むと、以下のように、Gimini による返答がありました。

アップロードされた画像に写っているのは、夕焼けの美しい海岸線です。

画像の特徴

夕焼け: 空はオレンジ色やピンク色に染まり、雲が夕日を反射して輝いています。
海岸: 広い砂浜が広がり、穏やかな波が打ち寄せています。
島: 遠くに島影が見え、その上に建物や木々が生い茂っている様子が確認できます。
人影: 海岸を歩く人々の姿が数人見られます。
ヤシの木: 海岸線にはヤシの木が並んでおり、南国リゾートのような雰囲気を醸し出しています。
場所の特定

画像から特定できる場所として、以下の可能性が考えられます。

湘南海岸: 湘南海岸は、神奈川県藤沢市から逗子市にかけて広がる海岸線で、ヤシの木やサーファーが多く見られることでも知られています。画像の雰囲気やヤシの木の存在から、湘南海岸の可能性が高いと考えられます。
その他の海岸: 湘南海岸以外にも、日本の各地に似たような風景を持つ海岸は数多く存在します。例えば、千葉県や静岡県など、太平洋側の海岸線では、このような夕焼けの美しい風景を見ることができます。
より詳しい場所の特定

より正確な場所を特定するためには、以下の情報が必要となります。

画像の撮影日時: 撮影日時が分かれば、季節や時間帯から場所を絞り込むことができます。
画像の撮影場所に関する情報: 撮影者がもし場所を知っていれば、その情報から特定できます。
画像内の特徴的な建物や地形: 画像内に写っている特徴的な建物や地形があれば、それらを手がかりにインターネット検索を行うことで、場所を特定できる可能性があります。
まとめ

アップロードされた画像は、夕焼けの美しい海岸線を捉えた素晴らしい写真です。場所については、湘南海岸の可能性が高いと考えられますが、より詳しい情報が必要となります。

もし、この画像について何か他に知りたいことがあれば、お気軽にご質問ください。

補足

画像検索: 画像検索エンジンを利用することで、画像内の特徴的な部分から類似画像を検索し、場所を特定できる可能性があります。
地理情報システム (GIS): GISを利用することで、画像内の地理的な情報を分析し、場所を特定できる場合があります。
これらのツールを活用することで、より詳細な情報を得ることができます。


 湘南海岸までは特定できましたが、残念ながら、江ノ島の画像と特定できませんでした。

image/enoshima_3.jpg
江ノ島の画像

 Imagen 3 を利用して画像生成が可能か試すために、「コートダジュール海岸の風景画を描いてください。」と入力しました。結果は、「私はテキストベースのAIですので、そちらについてはお手伝いできません。」という返答でした。残念ながら、このサイトでは画像生成が無理なようです。


Google ImageFX の利用


 ImageFXとは、Googleの画像生成AI (Imagen)を使って画像や音楽を生成するプラットホームです。ImageFXの公式サイトはこちらです。このwebsite にアクセスします。Video FX、MusicFX、TextFX を利用するページもあります。最初に、「ホーム」バーをクリックして、ImageFX のページに行きましょう。

OIG.jpeg
ImageFX

 上図のプロンプトを入力する画面に、例えば、「A turtle made of potato chips」と書き込んで、「I'm Feeling Lucky」バーをクリックすると、上に見られる画像が生成されます。

「A lady, taking a nap on the beach along the mediterranean sea in France. Beside her, a man drinking beer.」というprompt を入力すると、以下の結果となります。


ImageFX


ImageFX

 「the light house and beach of Collioure, France」と入力すると、以下の画像が生成されます。

OIG.jpeg
ImageFX による画像生成の例

 この画像は南フランスの地中海沿岸の町コリウールにある灯台の特徴をよく捉えています。

 残念ながら、日本語でのプロンプト入力では正常な画像生成は困難なようです。


Google MusicFX の利用


 次に、MusicFX を利用する方法について説明します。 公式 website にアクセスします。ホーム・メニューから MusicFX のページにきます。プロンプトの入力画面に、例えば「nice beach, fantastic,lovely,spectacular」と入力します。「生成」バーをクリックすると、プロンプトに合わせた音楽が生成されます。下に掲載した音楽が生成されました。

musicFXで生成された音楽を聴く_1
musicFXで生成された音楽を聴く_2

 曲調を変えたいときは、プロンプト画面の下にある形容詞、「echoing」や「catchy」などを選択追加して再度生成します。下のように変化します。

musicFXで生成された音楽を聴く_3

 自分の好みに合うように、色々と曲調を変化させてみてください。

****** To be continued *****

このページの先頭に戻る

ご質問、コメントなどは こちらからメール送信して下さい。