DieTurn · YOLO26s-OBB v0.6
| 臺中 | 高雄 |
|---|---|
![]() | ![]() |
綠框為 auto(conf ≥ 0.8),黃框為 review(0.5 ≤ conf < 0.8)。臺中圖以 24.144750°N、120.670500°E 為中心。影像來源:內政部國土測繪中心 PHOTO2025 z20。圖中框為模型結果,尚未經實地驗證。
從航拍正射影像中找出機車待轉格,輸出旋轉物件框(OBB)。 以 YOLO26s-OBB 為基底,從 v0.5 續訓,改用 1,500 張、涵蓋 21 個縣市的 NLSC z20 人工標註影像。
目前成果:掃描全台 29,925 個路口,產出 18,243 個待轉格,分佈在 9,790 個路口。
Detects motorcycle two-stage left-turn waiting zones in aerial orthoimagery as oriented bounding boxes. Version 0.6 is fine-tuned on 1,500 manually annotated NLSC zoom-20 images from 21 counties and cities in Taiwan. The nationwide dataset is model-generated and has not been independently verified in the field.
為了讓騎士可以預先知道要靠左還是靠右
騎機車到陌生路口,最難預先判斷的常常是:這次左轉要靠左,還是先靠右進入待轉區?等到抵達路口才發現站錯位置,可能已經來不及調整。
這個專案從正射影像辨識待轉格,再把旋轉框轉成地理座標,讓導航工具有機會提早提示騎士。偵測到待轉格可以作為查證線索;沒有偵測到,則不足以判定可以直接左轉。
模型規格
| 架構 | YOLO26s-OBB(Ultralytics 8.4.41) |
| 任務 | 旋轉框偵測,單一類別 DieTurn |
| 輸入 | RGB,NLSC z20 正射影像,原始拼接圖 768×768 px |
| 影像解析度 | 約 13.5 cm/px,3×3 Web Mercator 瓦片拼接 |
| 建議推論尺寸 | imgsz=1024 |
| 基底權重 | YOLO26s-OBB(DOTAv1 預訓練),從 v0.5 續訓 |
| 訓練資料 | 1,500 張影像、1,415 個旋轉框 |
| train / val | 1,200 / 300 張 |
| 訓練 | 預定 300 epoch,patience 60;完成 227 epoch |
| 選用的 checkpoint | 第 167 epoch,依 val fitness 選出 |
| 權重檔 | dieturn-yolo26s-obb-v0.6.pt,約 21.8 MB |
| 硬體 | NVIDIA RTX 3080 |
實務應用
HowTurn 是使用待轉格圖資的機車導航 App。 dieturn 提供影像抓取、推論、地理化及全台圖資。
全台圖資與本頁範例使用同一個 v0.6 模型。如何判斷資料可信度,見專案的查證等級制度。
快速開始
pip install ultralytics huggingface_hub
from huggingface_hub import hf_hub_download
from ultralytics import YOLO
weights = hf_hub_download(
repo_id="xamjiang/dieturn-yolo26s-obb",
filename="dieturn-yolo26s-obb-v0.6.pt",
)
model = YOLO(weights)
results = model.predict("intersection.jpg", imgsz=1024, conf=0.5)
for r in results:
print(r.obb.xyxyxyxy) # 每個旋轉框的 4 個角點,像素座標
print(r.obb.conf)
輸入應使用 NLSC z20 正射影像(約 13.5 cm/px、768×768 的 3×3 瓦片拼接)。 換影像來源、解析度或拍攝角度,都可能讓效果下降。把低解析影像放大,也不會補回原本不存在的細節。
下游管線以 conf ≥ 0.8 標為 auto,0.5 ≤ conf < 0.8 標為 review,送人工複核。這是處理門檻,並非準確率保證。
v0.5 權重仍保留為 dieturn-yolo26s-obb-v0.5.pt,可用相同方式下載比較。
訓練方式
資料:1,500 張人工標註影像、1,415 個待轉格旋轉框。 全部使用 NLSC z20 影像,涵蓋 21 個縣市,單一縣市最多占 6.6%。取樣點由 OpenStreetMap 號誌節點聚合而來,以路口為中心抓取正射影像。
這次特別補進 v0.5 容易失敗的場景,也保留困難負樣本:
| 分組 | 張數 | 選取方式 | 標註框數 |
|---|---|---|---|
| 大路口漏檢 | 400 | v0.5 零偵測,且號誌節點數 ≥ 4 | 152 |
| 低信心 | 350 | 最高信心 0.25–0.5 | 231 |
| 陰影 | 200 | 零偵測,且路口區域偏暗 | 36 |
| 正樣本 | 250 | 最高信心 ≥ 0.8,六都以外優先 | 550 |
| 異常尺寸 | 100 | 框長邊或短邊超出典型尺寸 | 183 |
| 雜亂場景 | 200 | 至少 2 個框,且最高信心 < 0.6 | 263 |
在「大路口漏檢」的 400 張影像中,25% 經人工標註後確認存在待轉格。這些是舊模型漏掉、第二輪資料特別補進來的案例。
標註在 CVAT 以旋轉矩形完成,匯出為 Ultralytics YOLO-OBB 格式。沒有待轉格的影像保留作背景負樣本,切分為訓練 1,200 張、驗證 300 張。
訓練設定: 從 v0.5 權重續訓,imgsz=1024、batch 8、300 epoch、patience 60,使用 RTX 3080;完成 227 epoch 後早停,最佳權重來自第 167 epoch。完整參數見 v06_train_args.yaml(本機路徑已正規化)。資料與訓練流程見模型文件及標註規範。
訓練結果
最佳 checkpoint(第 167 epoch)在 300 張驗證影像、291 個標註框上的結果:
| 指標 | v0.6 |
|---|---|
| mAP@0.5 | 0.94825 |
| mAP@0.5:0.95 | 0.82604 |
| Precision | 0.9186 |
| Recall | 0.92784 |
指標已核對正式 best.pt 的 checkpoint metadata 與 逐 epoch 紀錄。
驗證資料來自同一輪針對失敗場景的取樣,並非全台隨機、獨立的驗收集;這組數字用來觀察訓練效果,不能推估全台圖資的準確率,也不能與 v0.5 的不同驗證集直接比較。


評估結果
和 v0.5 比,找回更多待轉格
下表比較同一批臺北路口的偵測結果,使用正式管線門檻 conf ≥ 0.5:
| 推論方式 | v0.5 recall | v0.6 recall |
|---|---|---|
| 單尺度 768 | 0.517 | 0.751 |
| 三尺度聯集(768 / 1024 / 1280) | 0.576 | 0.807 |
這裡的 recall 是相對於參考位置的命中比例,不能直接當成模型的絕對準確率。 參考位置來自 v0.5 在臺北 z21 高解析影像上的輸出,並非獨立人工真值,包含誤報與漏檢;兩個模型使用同一套參考位置做比較。參考影像及其衍生資料不隨公開 repo 散布,因此這組比較目前無法由公開檔案獨立重現。
另一次以 1,096 個參考位置逐一比較的結果:v0.6 比 v0.5 多找回 234 個位置,只有 13 個位置退步。角度比較中的 heading_deg P95 誤差,從 14.9° 降至 7.1°。完整方法、門檻及限制見模型評估文件。
以上是影像間的對照評估,與訓練驗證集的 mAP/precision/recall 不同。
效果圖

黃圈為高解析影像參考位置,紅框為 v0.5,綠框為 v0.6。這四個範例中,v0.5 各只找到 1 個角,v0.6 找齊四個角。49 個具有四個參考待轉格的路口中,全部找齊的比例從 24% 提升至 71%。

紅框為 v0.5,綠框為 v0.6,黃色標記為參考位置。六個範例中,五個是 v0.5 完全沒有偵測到的場景。範例用於展示改善,並不代表隨機抽樣的整體表現。
封面與效果圖的影像來源:內政部國土測繪中心。
全台掃描成果
以三尺度聯集掃描全台 29,925 個路口,合併重複偵測後:
| v0.5 | v0.6 | |
|---|---|---|
| 待轉格數 | 9,735 | 18,243 |
| 有待轉格的路口 | 6,000(20.1%) | 9,790(32.7%) |
auto(conf ≥ 0.8) | 6,839 | 15,605 |
review(0.5 ≤ conf < 0.8) | 2,896 | 2,638 |
這些是模型產出的圖資數量,尚未做全台獨立驗收。GeoJSON 與欄位說明在專案 repo。
限制
- 絕對準確率仍待量測。 尚未建立各縣市分層隨機、獨立人工驗收的資料集。訓練資料刻意偏向失敗場景,不能拿來推估全台準確率。
- 台北以外尚無獨立評估。 訓練資料涵蓋 21 個縣市,不代表已量測各縣市的表現。
- 白色矩形仍可能誤報。 建物屋頂、窗格、車輛及其他相似形狀可能被辨識為待轉格。
- 遮蔽仍會造成漏檢。 陰影、樹冠、車輛及褪色標線會降低可辨識性。
- 有明確的影像域限制。 未驗證斜拍、街景或其他解析度的輸入;v0.5 的跨年度影像改善也尚未在 v0.6 重做驗證。
- 尚未實地驗證。 這份圖資不足以單獨判定道路上的法定左轉方式;尤其不能把「沒偵測到」當成「可以直接左轉」。
資料與授權
- 權重:AGPL-3.0,沿用 Ultralytics YOLO26 基底模型的授權。
- v0.6 訓練影像: 內政部國土測繪中心正射影像,政府資料開放授權條款第 1 版;使用時須註明出處「內政部國土測繪中心」。影像與標註資料集未隨本模型倉庫發布。
- 路口取樣點與全台圖資: ODbL 1.0,© OpenStreetMap contributors;全台圖資另須保留 NLSC 出處標示。
- 早期臺北 z21 評估資料: 受來源使用條款限制,影像與衍生資料不公開散布。公開的比較報告保留方法、數字與限制。
完整說明見 DATA_LICENSES.md。
相關連結
引用
@misc{dieturn2026,
title = {DieTurn: Detecting motorcycle two-stage left-turn waiting zones from aerial imagery},
author = {Sam Jiang and contributors},
year = {2026},
url = {https://github.com/PlanktonLab/dieturn}
}

