你是否有過這種經驗?翻遍手機相簿,就是找不到那張截圖;在密密麻麻的產品照片中,要找出特定零件,眼睛都快花了。或是身為設計師,想在幾百張素材圖裡找到「戴紅色帽子的那個人」,滑鼠點到快抽筋。
別擔心,NVIDIA 最新開源的 LocateAnything-3B 模型,就是為了解決這個困擾而生的。這個在 HuggingFace 上短短一週就獲得超過 1298 個讚的模型,號稱「只要說得出來,就能找得到」。而且最棒的是,它完全免費、開源,你可以在自己的電腦上執行,不用把照片上傳到任何雲端伺服器。
今天這篇教學,就是要帶你從零開始,用最簡單的方式,3分鐘內學會使用 LocateAnything-3B。不管你是完全不懂程式的普通人,還是想把它整合進工作流程的專業人士,這篇都適用。
這到底是什麼神器?|一句話解釋 LocateAnything
簡單來說,LocateAnything-3B 是一個「AI 物體定位器」。你給它一張圖片,然後用「自然語言」描述你要找的東西——比如「左邊第二個杯子」、「穿藍色衣服的人」、「紅色圓形按鈕」——它就會用一個方框,精準地把那個物體框出來。
它跟一般的「物件偵測」模型不同。傳統模型只能辨識它「學過」的物體(比如貓、狗、車子),但 LocateAnything 厲害的地方在於,它能夠理解你隨意描述的語句。即使你描述的東西它從來沒「看過」,它也能根據上下文推測出你要找的是什麼。
這背後的技術是 NVIDIA 結合了「視覺語言模型」和「指涉表達理解(Referring Expression Comprehension)」的最新成果。簡單講,就是它同時「看」懂了圖片,也「讀」懂了你的話,然後把兩者對應起來。
第一步:免安裝!|用 HuggingFace 線上體驗
如果你只是想快速體驗一下,完全不需要安裝任何東西。NVIDIA 官方在 HuggingFace 上提供了一個免費的線上 Demo。
- 打開瀏覽器,前往 HuggingFace 的 LocateAnything 空間(搜尋
nvidia/LocateAnything-3B就能找到)。 - 你會看到一個簡單的介面,左邊可以上傳圖片,右邊是結果顯示區。
- 點擊「上傳圖片」,選一張你電腦裡的照片,最好是內容豐富一點的,比如一張雜亂的桌面、一群人聚會的照片,或是你家的寵物。
- 在下方文字框輸入你要找的東西。例如圖片中有一隻貓和一隻狗,你就輸入「那隻黑色的貓」。
- 按下「送出」或「Locate」,等個幾秒鐘,圖片上就會出現一個紅色的框框,精準地框住你描述的物體。
是不是很神奇?你可以多試幾種不同的描述方式,例如「最右邊的人」、「桌上的手機」、「藍色的杯子」。你會發現,即使描述很模糊,它也能給你合理的答案。
第二步:本地安裝|在自己的電腦上跑起來
線上體驗雖然方便,但如果你有大量圖片要處理,或是注重隱私不想上傳照片,那就需要在本機端跑這個模型了。放心,步驟非常簡單,你只需要有 Python 基礎知識就夠。
環境準備
首先,確認你的電腦有安裝 Python 3.8 以上版本。然後打開終端機(Windows 用戶打開命令提示字元或 PowerShell),依序輸入以下指令:
# 建立一個新的資料夾
mkdir locate-anything-demo
cd locate-anything-demo
# 建立虛擬環境(建議)
python -m venv venv
# Windows 啟動虛擬環境
venv\Scripts\activate
# Mac/Linux 啟動虛擬環境
source venv/bin/activate
# 安裝必要的套件
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
pip install transformers pillow gradio
這裡我們安裝了 PyTorch(AI 運算核心)、Transformers(HuggingFace 模型庫)、Pillow(圖片處理)和 Gradio(快速建立網頁介面)。
下載模型並執行程式
接下來,複製以下程式碼,貼到一個新檔案,命名為 app.py:
import gradio as gr
from transformers import AutoModelForUniversalSegmentation, AutoProcessor
from PIL import Image
import torch
# 載入模型和處理器
model_name = "nvidia/LocateAnything-3B"
processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForUniversalSegmentation.from_pretrained(
model_name,
trust_remote_code=True,
torch_dtype=torch.float16 # 節省記憶體
)
def locate_object(image, text_query):
# 處理輸入
inputs = processor(images=image, text=text_query, return_tensors="pt")
# 執行推理
with torch.no_grad():
outputs = model(**inputs)
# 取得邊界框結果
boxes = outputs.pred_boxes[0].tolist()
scores = outputs.scores[0].tolist()
# 在圖片上畫框
from PIL import ImageDraw
draw = ImageDraw.Draw(image)
for box, score in zip(boxes, scores):
if score > 0.3: # 只顯示信心度大於30%的結果
draw.rectangle(box, outline="red", width=5)
return image
# 建立 Gradio 介面
iface = gr.Interface(
fn=locate_object,
inputs=[
gr.Image(type="pil", label="上傳圖片"),
gr.Textbox(label="描述你要找的物體", placeholder="例如:左邊第二個杯子")
],
outputs=gr.Image(label="結果"),
title="NVIDIA LocateAnything-3B 本地版",
description="上傳一張圖片,然後用文字描述你要找的物體,AI會自動幫你框出來!"
)
iface.launch(share=False) # share=True 可以產生公開連結
然後在終端機執行:
python app.py
第一次執行會自動下載模型(約 6GB),請耐心等待。下載完成後,終端機會顯示一個本地網址(通常是 http://127.0.0.1:7860),用瀏覽器打開就能看到跟線上版類似的介面了。
進階技巧:批次處理大量圖片
如果你有幾百張圖片要處理,不想一張一張上傳,可以改用以下批次處理腳本:
import os
from PIL import Image
from transformers import AutoModelForUniversalSegmentation, AutoProcessor
import torch
model_name = "nvidia/LocateAnything-3B"
processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForUniversalSegmentation.from_pretrained(
model_name, trust_remote_code=True, torch_dtype=torch.float16
)
input_folder = "input_images"
output_folder = "output_results"
os.makedirs(output_folder, exist_ok=True)
query = "手機" # 你要找的物體
for filename in os.listdir(input_folder):
if filename.endswith((".jpg", ".png", ".jpeg")):
image_path = os.path.join(input_folder, filename)
image = Image.open(image_path).convert("RGB")
inputs = processor(images=image, text=query, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
boxes = outputs.pred_boxes[0].tolist()
scores = outputs.scores[0].tolist()
# 在圖片上畫框
from PIL import ImageDraw
draw = ImageDraw.Draw(image)
for box, score in zip(boxes, scores):
if score > 0.3:
draw.rectangle(box, outline="red", width=5)
output_path = os.path.join(output_folder, f"located_{filename}")
image.save(output_path)
print(f"已處理: {filename}")
print("全部完成!")
這個腳本會讀取 input_images 資料夾裡的所有圖片,自動找出你指定的物體,並在 output_results 資料夾輸出標記好的圖片。
第三步:進階應用|結合其他工具打造超級工作流
LocateAnything 最強大的地方,是它可以跟其他 AI 工具結合,變成自動化流程的一部分。
案例一:自動整理照片庫
你有一萬張家庭照片,想找出所有「有小孩在沙灘玩耍」的照片。你可以這樣做:
- 先用圖片字幕模型(如 BLIP)為每張照片產生描述。
- 再用 LocateAnything 對這些描述進行「二次定位」,確認小孩和沙灘的位置。
- 最後自動把符合條件的照片移動到「沙灘回憶」資料夾。
案例二:電商產品品質檢測
如果你是網拍賣家,每天有上百件商品要拍照上架。你可以建立一個自動化流程:
- 拍攝商品照片後,自動用 LocateAnything 檢查「商品是否在畫面中央」。
- 如果偵測到商品偏移,自動標記為「不合格」,並提示重新拍攝。
- 甚至可以結合 OCR,檢查商品標籤上的文字是否清晰可見。
案例三:學術研究輔助
研究人員在分析顯微鏡照片時,常常需要手動標記特定細胞或結構。現在只要寫一個簡單的腳本,就能讓 AI 自動幫你標記「紅色的細胞核」或「受損的組織區域」,大幅節省人工標註的時間。
實用技巧|讓 LocateAnything 更聽話
經過測試,我們發現幾個能讓結果更準確的小技巧:
- 描述要具體:不要只說「杯子」,試著說「左邊那個藍色馬克杯」。越具體,AI 越容易鎖定目標。
- 善用空間詞:使用「左邊」、「右邊」、「上面」、「下面」、「中間」等詞,能幫助 AI 理解相對位置。
- 多試幾種說法:如果第一次沒找到,換個描述方式試試。例如「穿紅色衣服的人」改成「照片中間穿紅衣的那位」。
- 調整信心度門檻:在程式碼中調整
score > 0.3這個數值。調低(如 0.1)會顯示更多候選框,調高(如 0.7)則只顯示最有把握的結果。
為什麼你應該現在就試?
LocateAnything-3B 代表的是一個趨勢:AI 正從「能辨識什麼」進化到「能理解你在找什麼」。這不是一個玩具,而是真正能提升工作效率的工具。不管是整理照片、處理設計素材、還是做研究分析,它都能幫你省下大量「眼睛搜尋」的時間。
而且,它是 NVIDIA 開源的,意味著你不用擔心未來要付費,社群也會持續改進它。現在學會,就是投資自己未來的生產力。
延伸閱讀
常見問題
Q: 我的電腦需要多好的顯示卡才能跑? A: 其實不需要很好的顯示卡。LocateAnything-3B 可以在 CPU 上執行(只是速度較慢)。如果你有 NVIDIA 顯示卡(6GB VRAM 以上),可以用 GPU 加速,速度會快 5-10 倍。Mac 的 M1/M2 晶片也能順利執行。
Q: 支援繁體中文輸入嗎? A: 目前官方版本主要針對英文設計,對繁體中文的支援有限。建議先用英文描述(例如 “the blue cup on the left”),效果最好。社群已經有人在開發中文版本,相信不久後就會出現。
Q: 可以一次找多個物體嗎? A: 可以,但需要分次執行。例如先輸入「紅色杯子」,儲存結果後,再輸入「藍色盤子」。批次處理腳本可以讓你一次處理多個查詢,但每個查詢是獨立進行的。
Q: 模型下載後佔用多少空間? A: 完整模型約 6GB,加上相關依賴套件,總共約 10GB。建議在硬碟保留至少 20GB 的空間。
Q: 跟 Google 的「以圖搜圖」有什麼不同? A: 完全不同。Google 以圖搜圖是「用圖片找相似的圖片」,LocateAnything 是「用文字描述在單張圖片中定位物體」。前者是搜尋引擎,後者是視覺理解工具,兩者可以互補使用。