此API使用了基於Pytorch的YOLO模型進行影像中的物件偵測。我們支援兩種版本的YOLO,分別是YOLOv5和YOLOv8。除此之外,我們也提供了選擇性的深度估計模型以進行影像中物體的深度估計。
YOLOv5(上) 與 YOLOv8-seg(下) ZoeDepth深度估計
請依照以下步驟進行環境設定與相依套件的安裝。
- 安裝相依套件 首先,你需要安裝相依套件。在你的終端機中輸入下面的指令來安裝所有需要的Python套件:
pip install -r requirements.txt
- 安裝PyTorch與CUDA支援 接著,你需要安裝支援CUDA的PyTorch。你可以使用以下的指令來安裝:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
*請注意,你需要有一個支援CUDA的圖形處理器(GPU)才能使用這個指令。如果你的設備不支援CUDA,你可能需要安裝不支援CUDA的PyTorch版本。
- ZoeDepth 放置於
./hub/checkpoints/ZoeD_M12_N.pt
- Yolov5, v8模型放置於
./models
,如:./models/yolov8-seg.pt
以下是此API的主要端點:
- /: 顯示可用模型列表的端點
- /upload: 上傳圖片並進行物件偵測的端點
此端點用於取得當前可用的YOLO模型列表。
方法: POST
回傳格式: JSON
回傳內容: 一個字典,鍵為模型名稱,值為available
此端點接受上傳的圖片並進行物件偵測。
方法: POST 參數:
- Model_name: 選擇YOLO模型名稱,需符合當前可用模型列表的模型名稱。
- base64_str: 圖片的base64編碼字串,需包含
data:image/[image format];base64
, 的前綴,例如data:image/jpeg;base64,/9j/4AAQSk...
- Deep_model: 選擇是否使用ZoeDepth模型進行深度估算,需傳入Python的bool值字串,例如
True
或False
。 - version: YOLO模型版本,目前支援
v5
或v8
。
回傳格式: JSON
- 回傳內容: 每一個偵測到的物件都會有一個字典,字典的鍵包含
name
、class
、confidence
、xmin
、ymin
、xmax
、ymax
- 使用深度估算時會有
deep
。- Yolov5計算
bbox
內的深度中位數 - Yolov8計算
keypoints
(mask)所還蓋範圍內深度平均數
- Yolov5計算
- 如果使用的是YOLOv8,還會包含
keypoints
。
可以在命令行介面下使用以下指令啟動此API:
python main.py --device [運行設備] --port [端口]
其中,運行設備可以選擇 cuda:0
或 cpu
,端口可以選擇例如 5001
或 5002
。
請求範例
curl -X POST "http://localhost:5001/upload" \
-H "Content-Type: application/json" \
-d '{
"Model_name": "yolov5s",
"base64_str": "data:image/jpeg;base64,/9j/4AAQSk...",
"Deep_model": "True",
"version": "v5"
}'
回應範例
{
"0": {
"name": "person",
"class": "0",
"confidence": "0.99",
"xmin": "116.52",
"ymin": "34.41",
"xmax": "167.94",
"ymax": "224.88",
"deep": "65"
},
"1": {
"name": "bicycle",
"class": "1",
"confidence": "0.87",
"xmin": "201.72",
"ymin": "120.28",
"xmax": "295.03",
"ymax": "203.18",
"deep": "77"
}
}