Gemini 多模態 AI 模型與生成式 AI 應用:透過 Vertex AI 在 Android 應用程式加入 Gemini Pro (和 Vision)的使用心得

2023 年 12 月,Google 推出了 Gemini 多模態 AI 模型Multimodal AI),並且在今年 2 月初 宣佈將 Bard 正式更名為 Gemini,並升級到 Gemini Pro 模型,宣稱它擁有更好的邏輯、理解與創造分析能力。Gemini 代表著 Google 在發展大型語言模型(LLM)的新里程碑,它也是 Google DeepMind 成立時的第一個願景的首次實現。

一般用戶可以在 Gemimi 官網上免費使用這項服務,也可以付費使用 Gemini Advanced 進階版本(內建 Gemini Ultra 1.0 模型,國外評測認為有接近 GPT 4 的能力)。

Gemini 多模態 AI 模型共有 Gemini UltraGemini ProGemini Nano 三種不同規模的大小。Ultra 版本面向複雜任務,Pro 版本適用於廣泛的任務範圍,Nano 版本則專為行動裝置上的任務優化。

Google 在去年秋季小範圍向一些公司提供了 Gemini Ultra 的早期版本,有使用者表示,他相信 Gemini 有朝一日可能成為 AI 市場上最強大的模型,因為在使用過程中發現,這個模型能夠避免大多數當今大型語言模型(LLMs)會面臨的幻覺問題。

根據實測結果Gemini 是第一個在大規模多任務語言理解(MMLU)上超越人類專家的模型,且在 32 項 AI 測試中,有 30 項測驗結果超越 GPT-4

與目前市面上的大型語言模型相比,Gemini Ultra 在 32 種學術基準測試中,有 30 個測試結果領先對手,上述的 MMLU 即是其中一項。MMLU 是結合數學、物理、醫學、歷史、法律、倫理等 57 個領域來測試知識及解決問題能力的基準測驗,Gemini Ultra 得分為 90.0%。

有別於使用純文本作為提示輸入的大型語言模型,多模態 AI 模型能夠無縫地理解並處理包括文字、程式碼、圖像、音訊、視訊等內容並生成推論結果。

舉例來說,以客服機器人的應用場景為例,Gemini 模型將不只能從對話文字上理解客戶,更能同時從表情、聲調理解客戶話語中的意圖。

Gemini Multimodal AI

現在開發人員可以透過 Google AI Studio 存取 Gemini ProGemini Pro Vision,每分鐘最多60個請求(RPM),這已適用於大多數應用程式開發需求。

如果要在應用程式中引入 Gemini Pro,可以參考 Google AI for Developers 的說明,透過 API 方式存取 Gemini Pro 模型註:需付費,在應用程式中引入生成式 AI 的功能。

下面幾個連結帶你了解如何開始使用 Gemini API:

Gemini Pro 的收費表標準

而適用於裝置端的 Gemini Nano 模型,則可以透過 Android AICore 在部分設備上執行(目前已向 Google 自家的旗艦 Pixel 8 Pro 開放),不過目前仍是搶先體驗預覽版,想要使用需進行申請。Gemini Nano 分為2個版本,分別為 Nano-1(1.8B,18億參數,針對低記憶體裝置)、Nano-2(3.25B,32.5億參數,針對高記憶體裝置)。

Google 在創造 Gemini 時考慮了多模態。這使該模型可以理解文本、圖像、視頻、音頻和程式語言。雖然其他的大型語言模型(如 ChatGPT),也開始參與多模態場景,但多數仍是依賴插件來實現多模態功能。

反之,Gemini 是以多模態特性構建的,這使它能夠無縫地針對文字、圖片、聲音、影片、程式碼等多種型態的內容進行理解並推理。據稱,憑藉這些功能,Gemini 除了能夠處理簡單、一般化的任務,還能處理需要高水平技能領域中的複雜流程,如數學、物理、編程等。

Gemini Multimodal AI

Google 在去年 12 月發布過一段 Gemini 技術演示影片,但後來被開發者質疑影片中該模型的能力是虛構、經過剪輯的,使它看起來比實際更快、更即時且更有能力。

後來 Google 坦承該影片並非真實呈現,而是進行過一些微調,比如降低延遲,並且操作的過程也不是即時或語音進行,而是靠靜態圖像與提示操作。

但 Google 也稱影片中的所有使用者提示和輸出都是真實的,只是簡潔起見而進行了剪輯,該影片是作為展示使用 Gemini 構建的多模態用戶體驗是什麼樣子,這樣做是為了激勵開發人員。

官方展示 Gemini 強大的多模態功能:

The potential of Gemini:這一系列影片展示了 Gemini multimodal AI 在科學、推理、音頻、程式、數學與物理方面的能力。例如在沒有光學字元辨識(OCR)協助下,用戶只要給它一張手寫的數學試卷,Gemini 就能立即批改指出錯誤,還能進一步回答錯誤思維在何處,除了能逐步詳細解題,還能進一步產出相似題型提供練習。

開發人員可以從 Google 的 Github 上面找到各種程式語言的 Gemini AI SDK,裡面都有 sample code 可以參考,像我想自己寫一個 Android 應用程式,來看看 GenAI 對於圖像推理的表現,以及在手機 APP 上的使用體驗如何,那我就可以從這裡下載 Google AI SDK for Android,並執行裡面的 sample code 看我們要如何使用它。

也有人用 Python 寫了可以在電腦上執行的腳本,透過電腦的攝像頭和麥克風來將使用者的語音提示和相機拍攝的畫面,作為輸入讓 Gemini Pro 進行推論,並透過 Text to Speech 將結果讀出來,有興趣的可以參考下面文章。

不過這些功能,智慧型手機也能做到,而且手機更具靈活性,有天偶然讀到下面幾篇文章,對 multimodal AI 深感興趣,又剛好過年前前兩天上班比較閒,於是就用 Gemini Pro API,寫了一個 Android APP 來把玩測試一下。

Android AICore

目前 Android Studio 最新預覽版已經有提供 Gemini API Starter 項目模板,供開發者開始使用適用於 Android 的 Google AI SDK。此外,Google AI Studio 也為開發者提供了一種簡化的方式來集成 Gemini Pro 模型、製作提示、創建 API 金鑰,以及輕鬆將想法轉化為 AI 應用。

Gemini Pro API有下面幾種常見的使用例:

  1. 根據純文本輸入生成文本
  2. 從文本和圖片輸入生成文本(多模態)
  3. 構建多輪對話(聊天)
  4. 使用streaming方式傳輸加快互動速度

除了上面第2項以外,其他都是使用 gemini-pro 模型,使用多模態生成文本,必須選擇 gemini-pro-vision 模型,可以同時輸入文本和圖片,送出提示的圖片格式要求,可參考提示資料和設計裡面的內容。在 Google 提供的 sample code 裡面,將圖片大小縮減為 768 像素,用以加快 Gemini AI 推論和生成內容的速度。

發送給 Gemini AI 模型的每個提示都包含用於控制模型如何生成回答的參數值,不同的參數值設定,會使模型生成不同的回答。詳細請參閱模型參數的內容。

以下是一些可以透過 Gemini Pro Vision 提供幫助的視覺回答 (VQA)任務類型應用場景:

  1. 擷取影像並要求 Gemini Pro Vision 建立與影像相關的內容,例如針對設計的產品提供文案,或者是根據一些食材照片,提供料理建議,甚至是食譜和做法。
  2. 擷取報章雜誌的文章畫面,要求 Gemini Pro Vision 總結其中的重點內容。
  3. 要求 Gemini Pro Vision 分析視覺化資料(如線圖、圓餅圖),並根據視覺化提供關鍵見解。
  4. 擷取外文的菜單目錄,要求 Gemini Pro Vision 將菜單上的品項名稱翻譯為母語。

過年前,我花了一兩天實作了一個 Android 應用程式,用來測試 Gemini AI 在智慧型手機上的使用體驗。由於我要在同一個 UI 畫面中,同時可以看見相機畫面,並呈現 AI 模型推論後的文字結果,所以我將 Camera View 做成懸浮視窗,並使用 Android 內建的 Speech to Text 來用語音輸入提示(支援多國語言的語音輸入),同時也使用 Text to Speech 來使推論結果除了文字呈現外也能用語音讀出來。

我將模型的 Temperature 設置為 0.9,並且由於是直接拿兩年多前開發的 Android 相機應用來添加 Gemini Pro API,所以實作中並沒有用到 Gemini API Starter 項目模板,而是在現有的 Android 專案進行開發。

這個 APP 也可以不使用相機,單純以語音轉換後的文字來作為提示輸入,所以在 APP UI 上面,我只放了簡單的關閉相機和開啟相機的按鈕。另外我將整個流程做成 Android 的 Foreground Service,即使當返回手機主頁面,或是開啟其他 APP,這個 APP 沒有在前景執行的情況下,我依舊可以持續透過語音和 AI 對話。

Feb 22, 2024 updated

繼上週谷歌發布 Gemini 1.5 Pro 後,今天又發佈了全新的開放式語言模型 Gemma(芽),目前兩項模型已開放給 Google Cloud 用戶在 Vertex AI 平台上使用。

Gemma 採用與 Gemini 模型相同的研究、技術和基礎架構元件,效能遠超其他同級開放式模型。目前提供 Gemma 2BGemma 7B 兩種不同規模的模型。每個規模都發布了預先訓練及指令調整版本,以作研究開發之用。

Gemma 目前支援包括 Colab 筆記本和 Kaggle Notebooks,以及JAXPyTorchKerasHugging Face Transformers 等框架,而Gemma 模型亦可在筆記型電腦、工作站或 Google Cloud 上面運作。

開發人員可以使用 Vertex AI 上的 Gemma 模型,針對文字生成、撰寫內容摘要和問答等輕量級工作,建構生成式AI應用程序;運用自訂的輕量級模型進行探索及實驗,以支援研究與開發工作;用於支援需要低延遲的即時生成式 AI 應用情景,例如串流文字。

谷歌發佈全新的開源語言模型 Gemma

下面是透過 Android APP 測試 Gemini 多模態 AI 模型的效果:

首先問一下 Gemini AI 畫面中這是什麼?

Gemini AI 可以辨識出這是一隻秋田犬,但有時候會說是柴犬

單純用語音轉文字作為提示詞輸入

一般來說,像這種比較 general 類型的問題,AI 的回答都比較正確

接著問 Gemini AI 這個節目叫什麼名字?

Gemini AI 開始練肖威

再問一次,這次提示它「節目的名字在畫面的右上方」

結果 Gemini 依舊回幹話,給它額外的提示看來沒屁用,後來我又問了好幾次,但 AI 都是給一些不相關的綜藝節目名字

《舞‧舞‧舞》是村上春樹1988年初版的作品,讓 Gemini AI 只看封面,看它是否知道這本書的內容?

Gemini AI 給的答案看似正確,實則不然

給 Gemini AI 看包裝,看看它知不知道這是啥東西

這次的回答正確

最近剛好用到這個,問一下 Gemini AI 懂不懂這個東西?

回答看似有模有樣,但這瓶其實是二氧化碳(CO2)而不是N2O,不過好像有些氣泡水產品的鋼瓶使用的確實是氮氣瓶(N2O)。

接下來,問 Gemini AI 牆上這兩幅畫叫什麼名字?

畫家名字答對了,其中一幅「星夜」也答對了,另一幅是「隆河上的星夜」,不是什麼「星空下的柏樹」

再來問問 Gemini AI 這幅經典的作品叫啥名字

回答正確,看來目前 Gemini AI 只能對這種相對普遍被認知的事物給出正確的回答

再來給 Gemini AI 看個手辦,問問看它懂不懂這是啥?

Gemini AI 竟然連七龍珠跟布羅利也懂

問問看 Gemini AI 知不知道這件瑞典小狐狸褲子是什麼牌子?

答錯了,可能Uniqlo 還是比較普遍被認知

題外話,這個相機 APP 我當年使用 Mediapipe 來實作手勢辨識功能,他能偵測事先定義的靜態手勢,甚至可以實作動態手勢的識別(如左滑、右滑、縮放、輕按等動作)。可以想像在一個吵雜的環境下,語音識別功能可能會無法正常運作,這時假設 APP 是執行在智慧型眼鏡上,利用手勢辨識(或是眼鏡上的touch panel)搭配事先自定義好的提示詞,就能利用手勢操作來和 Gemini AI 互動,並透過智慧型眼鏡的骨傳導耳機將結果用聲音唸給你聽。不過這只是個想像中的使用場景,現實是目前穿戴式眼鏡的硬體效能和電池容量,要跑 Mediapipe 這類的視覺模型在上面,是非常吃力且不實際的(因為我們之前試過了)

Gemini除了能看照片,也能看得懂影片

Gemini Pro 多模態模型,除了可以識別照片外,也可以看得懂影片。不過我試過了,目前透過 Google AI SDK for Android 好像無法實現,必須透過 Vertex AI 存取 Gemini Pro Vision 模型,才能實現影片產生文字。不過官方文件中有提到,使用視頻資料的提示受到以下限制和要求:
  • 視頻必須屬於以下 MIME 類型之一:
    MOV - video/mov
    MPEG - video/mpeg
    MP4 - video/mp4
    MPG - video/mpg
    AVI - video/avi
    WMV - video/wmv
    MPEGPS - video/mpegps
    FLS - video/flv
  • 我們建議每個提示不超過一個影片。
  • 模型將視訊處理為來自視訊的非連續圖片幀,音訊不被包括在內。 如果您發現模型缺少視頻中的某些內容,請嘗試縮短視頻,以便模型捕獲更多視頻內容的部分。
  • 系統只會處理前 2 分鐘內的資訊。
  • 每個影片佔用 1,032 個字元。
  • 不會分析音訊資訊或時間戳元資料。 因此,在需要音訊輸入(例如字幕音訊)或與時間相關的資訊(例如速度或節奏)的用例中,模型可能表現不佳。
同樣的,我在 Android 應用程式上,實作了錄影功能,我使用 Android 的 CameraX API 來錄影,在不修改 VideoCapture Builder 的設定下(影片畫質很高,檔案很大,13秒的影片大約15 MB),在 5G 訊號良好的環境下,影片推理時間大約將近10秒。

至於推理的結果嘛,首先我給 Gemini 看了一段日本旅遊型 YouTuber 前往印度品嚐美食的10幾秒影片段落,並詢問它這看起來是什麼影片?

Gemini AI 給了一個看起來有模有樣、煞有其事的答案,但其實跟影片內容完全不相干,YouTuber 的名字也說錯了(雖然很接近),也就是說回答內容完全是編造出來的。

讓 Gemini Pro 根據我給的 prompt 推理影片內容

Gemini 給了一個看起來有模有樣、煞有其事的答案,但其實跟真實內容完全不相干

接著我把錄影的解析度縮小為 640x320, 然後將 BitRate 改為 1024x1024,錄製一段16秒的影片,大小縮減為 2 MB 左右。在 5G 訊號良好的環境下,影片推理時間大約6秒。

我給 Gemini 看了一段關於 TSMC 在熊本設廠的新聞影片,並詢問它這是什麼影片?結果 Gemini 說這是日本首相視察^%$^%#^的影片(別鬧了唄~我去!)

給 Gemini 看了一段關於 TSMC 在熊本設廠的新聞影片,詢問它這是什麼影片?

Gemini 給的答案跟影片內容完全不相干

最後我測試了一下,在開車過程中,時速維持在40到60 kph之間,然後錄了一段10秒鐘左右的影片,丟給 Gemini 並詢問它「正在開車從儀表板上面的時速我最高開到了多少?」

詢問 Gemini 我最高時速開到了多少?(錄影時的車速維持在40到60 kph之間)

Gemini 回答說車速最高到160,不知道這答案是如何瞎掰出來的

為了驗證是我的code有bug還是 Gemini的影片推理能力真的這麼兩光,我直接把 mp4 影片檔丟到 Vertex AI Studio上面,行詢問一樣的問題,結果得到一樣瞎掰的答案...

在 Vertex AI Studio 上,用同樣的影片詢問一樣的問題,結果得到一樣唬爛的回答

簡單測試了幾輪下來,我對 Gemini AI 的影片推理能力的感想是,現階段用它做個小應用玩玩,或者做個 demo 騙騙外行人還行,但真的要用在 production 上面,我想還有一段距離吧!

這張圖完美詮釋了當前 Gemini 的影片推理能力程度

比較 Gemini 看圖說故事和 ChatGPT 看資料說故事的差異

後來我又測試將睡眠階段圖丟給 Gemini Pro Vision 去解讀,看它能否理解這張圖背後的含義,我先寫程式產生隨機的睡眠階段資料(假資料),並繪製出圖表,然後把 APP 截圖丟給 Gemini 並詢問「請分析以下睡眠階段圖,並告訴我關於我的睡眠品質狀況」。

APP 中顯示睡眠階段圖表的頁面(這是以前做的東西,可以透過低功耗藍芽同步穿戴式裝置上面的睡眠資料,圖表是用 MPAndroidChart 繪製的)

在沒有提供原始睡眠階段資料的情況下,Gemini AI 對以上睡眠階段圖所給的解釋,同時還給了一些簡單的建議。看起來還算有模有樣,沒有睜眼說幹話的跡象。

Gemini AI 對睡眠階段圖的解讀

Gemini AI 對睡眠階段圖的解讀

然後下面是我把上面睡眠階段圖的原始資料,透過 API 丟給 ChatGPT 並詢問差不多的問題,看看 ChatGPT 能給出怎樣的分析結果和建議,從結果看起來,顯然在 prompt 給的較詳細的情況下,能獲得的反饋也是比較詳細的。

所以可以想像的到,如果把原始睡眠資料丟給 Gemini Pro 讓它解讀,得到的效果應該也是差不多的吧。


ChatGPT 從原始睡眠階段資料中,對睡眠階段變化,以及睡眠品質給出的分析和建議

ChatGPT 從原始睡眠階段資料中,對睡眠階段變化,以及睡眠品質給出的分析和建議

ChatGPT 從原始睡眠階段資料中,對睡眠階段變化,以及睡眠品質給出的分析和建議


Google 正式發布了 Gemini 1.5 Pro

2024.4.11 更新:4月10日凌晨,Google 在官網正式發布了 Gemini 1.5 Pro,現在可在180多個國家/地區使用。 目前,可以在 Google AI Studio 開發平台免費試用 Gemini 1.5 Pro,有支援中文進行提示。

Gemini 1.5 Pro 模型直接支援多模態 + 多輪對話,可以讀取視訊、音訊等檔案(上限 20G),支援輸入的 token 上限達到了 100 萬,不過目前速率限制比較嚴格,每分鐘只有 2 次。

具有前後文記憶功能的 Multi-turn Conversation

現在透過 VertexAI SDK 的 ChatSession,我們可以實作具有前後文記憶功能的 AI 聊天機器人,下面是幾張 Multi-turn Conversation 的測試對話。其前後文記憶功能,也能夠與包含照片或影片的 Multimodal 多模態提示一起使用,例如我拍了一棟建築物,然後進行了幾次對話後,再問它說稍早拍的建築物外牆是什麼顏色的,AI 也能記得稍早的照片,並給出正確的回答。

初始提問

AI 的初始回答

AI 知道日式定食在對話中的前後文關係

AI 記得我在林口,以及我需要的是餐廳的訊息

AI 記得上次的對話,所以它知道第三家店指的是什麼

AI 的回答

AI 有對話的前後文記憶,所以我說的開車到那邊,它知道指的是哪裡

AI 的回答是正確的

最後我再故意問一次那家店,AI 也知道我指的是哪一家店

AI 給的回答正確

最後是對於多模態 AI 模型的感想

簡單用過 Gemini Pro 之後,我認為雖然目前多模態 AI 可能還不算非常成熟、聰明、即時,但是隨著軟體、硬體技術的發展,相信不久的將來,我們就會看到各種 AI 應用場景落地生根,甚至是完全進入生活中的各個領域,一切都會變得理所當然,甚至讓你感受不到 AI 技術的存在(畢竟 AI 本來就是複雜系統下的自然產物罷了)。正如 N 年前我看過推特創辦人說過的一句話:最厲害的技術,就是讓使用者完全察覺不到技術的存在

人工智能有潛力為人們創造機會,並且帶來新的創新浪潮與經濟進步,並以前所未有的規模推動知識、學習、創造力和生產力。而我們目前,才剛開始觸及這一切可能性的表面。」--by 谷歌CEO 皮蔡

回想 2022 年底才問世的大型語言模型(如 ChatGPT),對許多人尤其是碼農而言,已是不可或缺的生產力工具,而 2023 年底出現的多模態 AI 模型(如 Gemini),更將 AI 的應用變得更加廣泛,它能夠應用在生活、出行、教育、工作、娛樂、客服,乃至醫療保健等各種領域。

雖然實際使用過 Gemini Pro API 測試後,就能明白官方影片中呈現的效果,目前確實還無法真正做到,尤其是在即時性這方面。但不可否認的是 Gemini 所展示的多模態 AI 模型與其帶來的多元應用場景,以及將來 AI 如何全面改變我們的生活,確實都是非常值得期待的。


春天的櫻花盛開了

熱門文章

Nov 2024【陽明山溫泉】老字號「馬槽花藝村」的溫泉管線已恢復|在木造山景湯屋享受半露天硫磺溫泉

Nov 2024【台北北投】風景如畫的溫泉公園|前山公園散步、紗帽山輕健行,順訪陽明山下的六窟溫泉餐廳|桃園區美食~豚嶼拉麵

Nov 2024【台中西區】精誠壹山海鮮燒肉|在巷弄內的典雅復古風老宅吃燒肉,全程專人代烤

Sep, 2021【苗栗南庄】蓬萊林道Off Road小試|雨後很爛很濕滑|二傳低底盤車勿輕易嘗試

Feb, 2024【台中西區】桃太郎日本料理|隱身巷弄裡的39年老字號無菜單料理|食材新鮮、自然美味

Oct 21~24, 2023【晚秋の贅沢な山旅 PART②】黒部峽谷♡下之廊下|日本北阿爾卑斯山秘境健行+野營+秘湯溫泉 DAY 1(黒部水壩〜下之廊下〜阿曾原溫泉)

【美國加州】此生必去超美風景!加州一號公路自駕遊~Half Moon Bay、17 Mile Drive、Bixby Greek Bridge、Big Sur、McWay Falls、Elephant Seal Rookery

May 2023【台中南屯】地雷店食記|森鐵板燒|用餐體驗差,價格超貴卻豪無價值。小心別踩雷!!!

Sep 2024 晚夏的黑部源流4泊5日山旅 PART ⑤【溪流登攀&溫泉三昧】赤木沢~五郎沢~祖父沢遡行&雲ノ平~高天原~裏銀座縱走(享受高天原溫泉)

Oct 2024【新北新莊】旨醞鐵板料理|38樓高空景觀餐廳+海陸料理|週末家庭聚餐

文章列表

Contact

名稱

以電子郵件傳送 *

訊息 *