當前位置: 妍妍網 > 碼農

21.8K Star 太好用了!Supervision:強大的電腦視覺工具箱!Python工程師有福了!

2024-09-26碼農

在電腦視覺的世界中,越來越多的任務需要快速高效的處理,比如人體跟蹤、分割、檢測等。

今天為大家推薦一個開源的電腦視覺工具箱 Supervision ,使用它你可以在你電腦上實作人體跟蹤、分割、檢測等一系列電腦視覺的場景。

計畫介紹

Supervision 是一個針對於電腦視覺各種任務的框架工具,可作為Python語言的三方庫直接呼叫,提供了便捷高效的視覺處理方法,可以輕松處理數據集或直觀地展現檢測結果。

還提供了統計特定區域內檢測跟蹤、越線數量統計、切片推理、軌跡平滑等不同電腦視覺任務的方法封裝。可謂是在CV領域,有了它你可以少寫很多展現和計算程式碼。

Supervision 在 GitHub 上贏得了超過 21K 顆星,成為了電腦視覺領域不可或缺的神器。

主要功能

1、自訂模型使用

Supervision 不限於某個特定模型,使用者可以輕松插入自己需要的分類、檢測或分割模型,享受極高的靈活性。

2、數據處理

Supervision 帶有完整的數據處理能力,無論是從硬碟載入數據集,還是在影像或視訊上繪制檢測結果,亦或是將標簽轉換為不同格式,這個工具箱都能助你一臂之力。

3、數據集工具

Supervision 提供了一套工具,允許你在支持的格式中載入、分割、合並和保存數據集。

4、模型連結器

為了方便使用,可以使用最流行的庫(如 Ultralytics、Transformers 或 MMDetection)建立連結器。

5、視覺任務封裝

Supervision 還提供了多種視覺任務的封裝,比如:

  • 區域統計 :跟蹤和統計特定區域內的檢測結果。

  • 越線統計 :計算目標是否跨越特定的界線。

  • 切片推理 :將大影像分割為小塊進行推理。

  • 軌跡平滑 :在目標跟蹤過程中平滑軌跡,減少跳動和不連續。

  • 這些封裝讓你可以專註於核心演算法,而不用花費過多精力在視覺結果的繪制和展示上。

    安裝與使用

    由於supervision是純Python語言開發的模組,所有直接使用pip安裝即可。

    pip install supervision

    根據計畫文件,選擇你需要的視覺任務 API,載入模型和數據集,開始進行檢測和處理。

    案例1:目標檢測

    import cv2
    import supervision as sv
    from ultralytics import YOLO
    model = YOLO("yolov8n.pt")
    image = cv2.imread('demo.png')
    results = model(image)[0]
    detections = sv.Detections.from_ultralytics(results)
    box_annotator = sv.BoxAnnotator()
    label_annotator = sv.LabelAnnotator()
    labels = [
    f"{ class_name}{confidence:.2f}"
    for class_name, confidence
    inzip(detections[' class_name'], detections.confidence)
    ]
    # 標註辨識框
    annotated_image = box_annotator.annotate(scene=image, detections=detections)
    # 標註辨識標簽和置信度
    annotated_image = label_annotator.annotate(scene=annotated_image, detections=detections, labels=labels)
    cv2.imwrite('demo01.png',annotated_image)



    案例2:語意分割

    import cv2
    import supervision as sv
    from ultralytics import YOLO
    model = YOLO("yolov8n-seg.pt")
    image = cv2.imread('demo.png')
    results = model(image)[0]
    detections = sv.Detections.from_ultralytics(results)
    mask_annotator = sv.MaskAnnotator()
    label_annotator = sv.LabelAnnotator(text_position=sv.Position.CENTER_OF_MASS)
    annotated_image = mask_annotator.annotate(scene=image, detections=detections)
    annotated_image = label_annotator.annotate(scene=annotated_image, detections=detections)
    cv2.imwrite('demo01.png', annotated_image)



    總結

    Supervision 是一個強大且靈活的電腦視覺工具箱,能夠顯著提升開發效率,並提供多樣化的視覺任務處理方案。

    它不僅支持常見的電腦視覺功能,如檢測、分割和跟蹤,還提供了豐富的數據處理和展示工具,讓開發者可以輕松應對復雜的視覺任務。

    如果你在尋找一個功能全面且易用的工具來實作電腦視覺任務,Supervision 無疑是值得一試的選擇。

    開源地址: https://github.com/roboflow/supervision


    如果本文對您有幫助,也請幫忙點個 贊👍 + 在看 哈!❤️

    在看你就贊贊我!