Communitygithub.com

eminmeydanoglu/agentseg-label

使用 `agentseg` CLI(SAM 3 追蹤 + 健康檢查)在此 repo 中標註或追蹤影片/圖片序列中的物件。適用於「標註魚雷」、「標註此資料夾中的板子」、「追蹤 X 穿過這些幀」、「修正追蹤 N 的標籤」或匯出標籤等請求。

agentseg-label 是什麼?

這個 AI 代理技能讓使用者能夠透過 `agentseg` CLI 對影片或圖片序列中的物件進行標註與追蹤。它整合了 SAM 3 模型進行追蹤,並提供健康檢查機制來標記可能出錯的影格(稱為「問題」)。使用者只需提供一個良好的初始遮罩,接著系統會自動追蹤其餘影格,使用者再針對被標記的問題進行檢查與修正。此技能支援多種平台(如 Claude Code、Cursor、Codex 等),並可處理「標註魚雷」、「追蹤板子」、「修正標籤」等常見請求。其核心工作流程包括:開啟專案、解析標籤名稱、透過 SAM 取得初始遮罩(可調整邊界框與正負點)、建立與傳播追蹤軌跡、處理遺失物件的情況、審查與修正問題,最後匯出標籤(支援 YOLO-seg、YOLO-detect、COCO 等格式)。技能提供詳細的指令參考與最佳實務,協助使用者高效完成標註任務。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/eminmeydanoglu/agentseg/tree/HEAD/.agent/skills/agentseg-label

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

使用 agentseg 標註序列

您對物件進行一次性分割,SAM 3 會自動追蹤其餘的每一幀,後端會標記看起來有問題的影格(即「問題」)。您的工作是提供一個良好的初始遮罩,然後檢查問題並只修正真正有問題的部分。大多數序列只需要 0–3 次修正。

從 repo 根目錄執行 CLI,指令為 .venv/bin/agentseg …(或 uv run agentseg …)。 每個指令都會輸出一個 JSON 物件;請閱讀 ok、error 和 next 欄位。圖片會以 PNG 檔案寫入,並以 "image": "<path>" 形式回傳。請使用您的檔案讀取工具開啟該路徑來查看圖片。 您無法在不檢視的情況下判斷遮罩是否正確。

慣例:像素座標,邊界框格式為 x0,y0,x1,y1,點格式為 x,y,影格是專案中圖片順序的 0 為基底索引。影格範圍寫法如 120-139,150。

0. 服務

agentseg status            # 後端 + sam_server + 已開啟的專案
agentseg up                # 啟動所有關閉的服務(sam_server 約需 1–2 分鐘)

如果 up 失敗,請閱讀它印出的日誌路徑。不要終止其他 GPU 程序。切勿在執行期間執行 agentseg down:後端是您的主機,停止它會結束您的執行。GPU 可能共享,因此指令可能因 sam_server 錯誤(CUDA 記憶體不足)而失敗。請等待 30–60 秒後重試;agentseg up 只會啟動關閉的服務。如果持續失敗,請停止並回報。

1. 開啟專案並找到物件

agentseg project open <image_folder>     # 或一個現有的專案目錄(包含 agentseg.db)
agentseg sheet                           # 整個序列約 24 張縮圖

project open 會回傳 frames 和 image_size。查看 sheet。選擇一個提示影格,其中物件完全可見、大而清晰,不一定是第 0 幀。追蹤會從關鍵影格雙向(向前和向後)執行。

2. 在建立第一個遮罩之前解析標籤

在呼叫 segment 或建立軌跡之前選擇標籤名稱。使用使用者請求中的物件名稱;當請求不明確時,從圖片推斷一個簡短、具體的名稱,並在執行中說明該選擇。永遠不要將標籤保留為 unknown、空字串或佔位符。如果存在多個合理的物件,且選擇會改變標註目標,請在執行 SAM 之前詢問使用者。解析後的名稱會帶入第一個 track create 呼叫以及之後的每個報告。

例如,對於「標註魚雷」解析為 torpedo;對於「標註此資料夾中的板子」解析為 board(或者當物件身分明確時使用 torpedo_board)。在整個序列中保持名稱穩定。

在第一個遮罩之前,將其註冊到專案的標籤列表中(這與人員在網頁 UI 中選擇的清單相同;如果已有命名物件的標籤,請重複使用):

agentseg labels                     # 現有標籤
agentseg labels --add <resolved_label>

3. 第一個遮罩

agentseg view <f> --grid                          # 50 像素標記網格,用於讀取座標
agentseg segment <f> --box x0,y0,x1,y1            # 僅預覽,不儲存任何內容

邊界框:緊貼,包圍整個物件。 在網格上,找到物件的左、右、上、下像素(保險桿到保險桿、輪胎、車頂),然後添加一個小邊距(約物件大小的 5–10%)。不要過大:邊界框內過多空間會讓 SAM 捕獲物件的陰影或周圍的地面,然後追蹤器會將其複製到每一幀。

  • 閱讀 check:segment 也會嘗試一個大 20% 的邊界框。如果較大的邊界框導致遮罩變大,則表示您的邊界框切斷了物件。如果該較大遮罩的縮圖顯示了整個物件,請使用其 padded_preview_id;否則,請重新繪製邊界框以包含整個物件。切勿忽略此警告並重新執行相同的邊界框。
  • segment 回傳 image(整幀,黃色填充)和 zoom(特寫,僅輪廓,青色 = 使用的邊界框)。開啟縮圖並沿輪廓檢查:物件的每個末端都必須在輪廓內部。
  • 太多了? 輪廓必須沿著物件自己的邊緣。如果它延伸到物件下方或旁邊的陰影、道路或相鄰物體上,請對該部分重新執行 --neg x,y(並使用更緊的邊界框)。
  • 仍然是部分遮罩? 不要重新執行相同的邊界框:它會產生相同的遮罩。在缺少的部分添加 --pos x,y(SAM 通常會在顏色或光線邊界處停止:向陽的一半、陰影的一半、雙色車輛)。
  • 範圍: 只包含使用者意指的物件:「板子」不含其支架,「汽車」不含拖車。
  • 最多嘗試 4 次。一個只覆蓋物件 2/3 的關鍵影格還不如沒有:追蹤器會將其複製到每一幀,而健康檢查無法看到它。如果您無法在此影格上取得完整的物件,請選擇另一個影格。然後:
agentseg track create --label <resolved_label> --preview <preview_id>
agentseg track propagate <track_id>               # 每 500 幀約需 1 分鐘;回傳問題

對於之後添加的關鍵影格,請將 --track T 傳遞給 segment:此時縮圖也會顯示軌跡的最近關鍵影格,以便您可以檢查它是否是同一個物件。

3b. 當追蹤遺失物件時

SAM 3 通常會在物件消失一段時間後自行重新找到它,因此短暫的間隔不需要任何處理。propagate 只在遮罩連續 60 幀為空時才會停止向一個方向追蹤,並回傳 lost:

"lost": [{"keyframe": 420, "direction": "forward", "lost_from": 579, "stopped_at": 638, "untracked": [639, 999]}]

更常見的失敗情況是相反的:在間隔之後,SAM 會回到一個不同的、相似的物件上。每當軌跡在空影格之後重新出現時(在 sheet --track 中為紅色),請使用 view <第一個空影格後的影格> --track T --zoom 檢查身分。

在處理問題****之前處理 lost。查看從 lost_from 開始實際發生的情況:agentseg sheet --frames <lost_from-5>-<lost_from+40>(不加 --track,這樣您可以看到原始的影格)。

  • 物件消失了(隧道、建築物後面、鏡頭移開、剪輯):找到它回來的地方,執行 track absent T <lost_from>-<last gone frame> --no-propagate,然後在它回來的一個清晰影格上執行 segment + track refine。
  • 物件仍然可見:追蹤器丟失了它。在 lost_from 之後的一個清晰影格上執行 segment + track refine。
  • 它在結束前再也沒有回來:將剩餘部分標記為 absent。

每次修復都會重新傳播;重複直到沒有 lost 為止。

使用使用者提供的標籤名稱,或一個簡短描述性的名稱,例如 torpedo_board。

4. 審查問題

propagate(以及 refine、absent、keyframes --rm)會回傳當前的問題列表:

{"id": 9, "start": 210, "end": 228, "worst_frame": 218, "kind": "drift", "n_frames": 19, "reasons": {...}}

對於每個問題,請查看其 worst_frame:

agentseg view <worst_frame> --track <T> --grid

在檢視中,軌跡遮罩為洋紅色並帶有輪廓。黃色框標記關鍵影格,青色框標記已傳播的影格。填充色會遮蓋物體的顏色;關於身分或覆蓋範圍的任何資訊,請使用特寫:

agentseg view <f> --track <T> --zoom     # [最近關鍵影格] [影格] [影格 + 輪廓],無填充

身分。 在遮擋、隧道、鏡頭切換或快速平移後,SAM 經常跳到附近的相似物件上。與關鍵影格面板比較:相同顏色、相同車型(SUV 與轎車、掀背車與三廂車)、相同細節?「一輛位置正確的深色汽車」是不夠的。任何其 reasons 包含 dino_low(遮罩看起來與關鍵影格不同)的問題,在您審查之前都需要進行縮圖比較。如果是另一個物件,真正的物件要麼在其他地方(對它執行 segment + track refine),要麼不可見(track absent)。

您看到的情況操作
遮罩正確;物件只是變小、變大、旋轉或快速移動將其標記為已檢查: agentseg track review T <issue_id> --note "<一行原因>"。它的影格會從待審查轉為已批准。
遮罩溢出到背景或其他物件上,或有遠離的離散斑點(邊界框巨大)對該影格使用一個緊密的邊界框(+ --neg 作用於溢出部分)執行 segment,然後執行 track refine T <f> --preview P
遮罩只覆蓋了物件的一部分(檢查縮圖),或者位於錯誤的物件上(與關鍵影格面板比較)相同:segment → track refine
物件完全不可見(超出影格、完全遮擋),但存在遮罩執行 track absent T <range>。首先使用 sheet --track T --frames a-b 找到範圍。
物件可見但沒有遮罩(在 sheet 中為紅色的「empty」)在一個清晰可見的影格上執行 segment → track refine

規則:

  • 在沒有先檢視預覽的情況下,切勿進行精煉。 一個糟糕的關鍵影格會毒害追蹤器處理許多影格。
  • 如果您添加的關鍵影格使情況變得更糟:agentseg track keyframes T --rm <f>。
  • 批次修復: 在所有除了最後一個 refine 或 absent 之外的指令中添加 --no-propagate,或者跟隨一個 agentseg track propagate T。每次傳播耗時 30–60 秒。
  • 對於 absent,請檢查邊界。使用 sheet --track T --frames a-b 圍繞範圍進行檢查,並僅標記物件真正不可見的影格(靠近影像邊緣的一小條仍算作可見)。
  • 同一個問題在 2 次修復後仍然存在 → 停止修復它,保持其開啟(不要對其執行 review),並在您的報告中提到它。未解決的問題是人員之後會檢查的內容。
  • 僅在您檢視了問題的影格後才能對其執行 review。對於一個長問題,檢查該範圍的一個 sheet --track T --frames a-b,而不僅僅是 worst_frame。可以一次檢查多個問題:track review T 2,3,5 --note ...,但僅限於您實際檢查過的相同類型的問題;該說明必須對列表中的每個 ID 都成立。切勿將 lost 問題(空影格)審查為「mask correct」。
  • 預算:每個序列約 10 次修復和約 40 張檢視的圖片。掃描範圍時,優先使用一個 sheet 而不是多個 view。

5. 最終檢查與匯出

agentseg sheet --track T                 # 邊框顏色:黃色關鍵影格、綠色良好、
                                        # 橘色待審查、灰色為不存在、紅色為無遮罩
agentseg export                          # YOLO-seg(預設);--format yolo-detect|coco

查看最終的 sheet。橘色影格屬於仍然開啟的問題:檢查並對其執行 review,修復它們,或者故意將它們保持開啟以供人員處理。紅色影格需要注意,除非物件在那裡確實不存在;如果是,則將它們標記為 absent。

6. 向使用者報告

簡短:

  • 軌跡 ID 和標籤
  • 影格數量
  • 關鍵影格(影格號及原因)
  • 不存在的範圍(absent ranges)
  • 已審查為無問題的問題,附帶一行原因
  • 未解決的問題
  • 匯出路徑
  • 最終 sheet 路徑

參考

agentseg status | up [--no-sam] [--no-ui] | down [--all]
agentseg project open <dir> [--name N] [--project-dir D]
agentseg labels [--add NAME]
agentseg view <f> [--track T] [--grid] [--preview P] [--zoom]
agentseg sheet [--track T] [--every N | --frames a-b,c]
agentseg segment <f> --box x0,y0,x1,y1 [--pos x,y]... [--neg x,y]... [--track T] [--no-grid]
agentseg track create --label L --preview P
agentseg track propagate T [--full] [--start a --end b] [--max-lost N] [--no-wait]
agentseg track issues T [--verbose]
agentseg track review T <ids|all> [--note TEXT]
agentseg track refine T <f> (--preview P | --box ... [--pos ..] [--neg ..]) [--no-propagate]
agentseg track keyframes T [--rm F] [--no-propagate]
agentseg track absent T <frames> [--no-propagate]
agentseg track list
agentseg export [--format yolo-seg|yolo-detect|coco] [--out DIR] [--approved-only] [--labels-only]

所有指令都接受 --help。錯誤會輸出 {"ok": false, "error": "..."} 並以非零狀態碼退出;請閱讀訊息,因為它通常會指出修復方法。

相關技能