welcom ! Handel home

顯示具有 YOLO 標籤的文章。 顯示所有文章
顯示具有 YOLO 標籤的文章。 顯示所有文章

2025年2月15日 星期六

Meta Segment Anything Model (SAM) 簡介

 

🔍 Meta Segment Anything Model (SAM) 簡介

Meta Segment Anything Model (SAM) 是 Meta(Facebook)於 2023 年推出的一個 影像分割(Image Segmentation)模型,它能夠自動識別並分割影像中的物體。SAM 被設計為通用的影像分割工具,可以適用於各種應用,如醫學影像分析、自動駕駛、機器視覺等。


🔹 什麼是影像分割 (Segmentation)?

影像分割是一種 電腦視覺技術,它的目標是將影像中的不同區域或物體區分開來。影像分割的類型包括:

  1. 語意分割 (Semantic Segmentation):將影像中的像素分配給不同的類別(如「人」、「車」、「貓」)。
  2. 實例分割 (Instance Segmentation):區分同一類別內的不同物件(如「貓1」、「貓2」)。
  3. 全景分割 (Panoptic Segmentation):結合語意和實例分割,為每個物件提供完整的分類資訊。

SAM 支援所有這些類型,並且比傳統方法更靈活。


🔹 SAM 的核心功能

1️⃣ 任意物體分割 (Segment Anything)

SAM 可以在沒有標註的情況下,自動分割影像中的物體。只要用滑鼠點擊、框選或輸入文本提示,SAM 就能立即產生對應的分割結果。

2️⃣ 多種輸入方式

SAM 支援 三種輸入方式 來控制分割:

  • 點擊 (Points):點擊影像上的特定位置,SAM 會自動分割該物體。
  • 邊界框 (Bounding Boxes):標記出物體的範圍,SAM 會精確分割出該物體。
  • 文字提示 (Text Prompts, 結合 CLIP):在一些應用中,SAM 可以與 CLIP 搭配,透過自然語言描述來自動分割物體。

3️⃣ 高效能 & 可擴展

  • 零樣本學習 (Zero-shot Learning):SAM 不需要額外訓練,即可處理 任何影像
  • 大規模影像數據:SAM 使用了 Meta 的 SA-1B 資料集(110 億張影像) 進行訓練,是目前最大規模的影像分割數據集。
  • 即時分割:SAM 可以 毫秒級運行,支援 即時應用(如影片分割、自動駕駛)。

🔹 SAM 的技術架構

SAM 主要由以下三個部分組成:

  1. 影像編碼器(Image Encoder)
    • SAM 採用 Vision Transformer (ViT-Huge) 作為編碼器,能夠將輸入影像轉換為 高維特徵向量
    • 這個編碼器可以 一次性處理整張影像,大幅提升效率。
  2. 提示編碼器(Prompt Encoder)
    • 處理 使用者輸入(點、框、文字),然後轉換成模型可理解的格式。
  3. 遮罩解碼器(Mask Decoder)
    • 根據影像特徵和使用者提示,生成 精確的物體遮罩(Mask)

🔹 SAM 的應用領域

✅ 1. 醫學影像分析

  • SAM 可用於 自動檢測腫瘤、血管、器官,提升醫學影像處理的效率。
  • 例如:
    python
    sam.predict(image=medical_scan, point=(x, y))

✅ 2. 自動駕駛 & 智慧交通

  • SAM 可用於 即時車輛與行人檢測,提升自駕車的安全性。

✅ 3. AR/VR & 影像編輯

  • SAM 可用於 即時人物分割、背景移除、物件標記,提升影像處理能力。

✅ 4. 遠端感測 & 衛星影像分析

  • SAM 可以自動標註地形、建築物、農田、水域,用於環境監測和氣候研究。

🔹 如何使用 SAM?(Python + PyTorch)

📌 1. 安裝 Segment Anything

bash
pip install torch torchvision pip install git+https://github.com/facebookresearch/segment-anything.git pip install opencv-python matplotlib

📌 2. 下載 SAM 模型

python
import torch from segment_anything import sam_model_registry, SamPredictor import cv2 import numpy as np import matplotlib.pyplot as plt # 下載 SAM 模型(ViT-Huge) sam_checkpoint = "sam_vit_h.pth" model_type = "vit_h" sam = sam_model_registry[model_type](checkpoint=sam_checkpoint) predictor = SamPredictor(sam)

📌 3. 加載影像

python
image = cv2.imread("test_image.jpg") image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) predictor.set_image(image)

📌 4. 使用點擊進行分割

python
input_point = np.array([[500, 300]]) # 指定分割點(X, Y 座標) input_label = np.array([1]) # 1 表示正樣本(前景) masks, scores, logits = predictor.predict( point_coords=input_point, point_labels=input_label, multimask_output=True, ) # 顯示分割結果 plt.imshow(image) plt.imshow(masks[0], alpha=0.5) # 疊加遮罩 plt.show()

🔹 SAM 的優勢 vs. 傳統方法

特性SAM傳統影像分割
訓練需求不需要額外訓練需要大量標註數據
適應性支援 任意影像只能針對特定資料集
輸入方式點擊、框選、文字提示需要完整標註
計算效率高效,適用於即時應用較慢,需大量計算資源
適用場景醫學、交通、工業、AI特定應用,如 X-ray、MRI

🔹 SAM 的未來發展

  1. 進一步壓縮模型,使 SAM 能夠在 手機、邊緣設備 運行。
  2. 結合大語言模型(LLM),讓 SAM 透過文字指令自動分割影像
  3. 擴展到 3D 影像分割,應用於 醫學 CT、LiDAR

🚀 總結

Meta SAM 是一種通用影像分割模型,能夠即時識別和分割任意物體
支援點擊、框選、文字等輸入方式,適用於 醫學、自駕車、影像編輯、衛星分析
開源可用,安裝簡單,適合開發者應用於 AI 影像處理專案

現在你可以試試 SAM 來實現自動影像分割了!🚀🔍

2025年1月16日 星期四

ROS 如何整合 Gazebo 和 YOLOv8 進行視覺機器手臂控制

 

整合 ROSGazeboYOLOv8 來實現基於視覺的機器手臂控制,涉及 環境設定、模型訓練、控制邏輯 等多個步驟。以下是一個完整的指導方案。


1. 環境準備

1.1 安裝 ROS 和 Gazebo

  • 安裝 ROS (推薦 ROS Noetic 或更高版本)。
  • 安裝 Gazebo,確保與 ROS 相容。

1.2 安裝 YOLOv8

使用 Python Ultralytics YOLOv8 庫:

pip install ultralytics

2. 數據準備與模型訓練

2.1 準備數據集

  • 收集並標註圖像數據,確保包含多種場景與目標物體。
  • 使用 LabelImg 等工具進行標註。
  • YOLOv8 需要特定格式的數據集,包括圖片和對應的標籤文件。

2.2 訓練 YOLOv8 模型

from ultralytics import YOLO

model = YOLO('yolov8s.pt')  # 加載預訓練模型
results = model.train(data='path/to/data.yaml', epochs=100, imgsz=640)

🔹 注意

  • data.yaml 檔案應包含 訓練與驗證數據的路徑及類別資訊

3. 集成與控制邏輯

3.1 創建 ROS 節點

訂閱來自 Gazebo 中相機的圖像數據,並將其傳遞給 YOLOv8 模型處理。

3.2 設置 Gazebo 內的機械手臂模型

  • 選擇機械手臂(如 UR5、Panda Arm)。
  • 確保機械手臂能接收 ROS 控制指令

3.3 視覺回饋控制

YOLOv8 檢測物體後,將目標位置轉換為 機械手臂運動指令

示例代碼(訂閱相機數據並處理影像)

import rospy
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
from ultralytics import YOLO

model = YOLO('path/to/your/yolov8_model.pt')
bridge = CvBridge()

def image_callback(msg):
    cv_image = bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')
    results = model(cv_image)  # 使用 YOLOv8 進行檢測
    # 處理檢測結果並控制機械手臂

rospy.init_node('vision_control_node')
image_subscriber = rospy.Subscriber('/camera/image_raw', Image, image_callback)
rospy.spin()

4. 在 Gazebo 中添加 YOLOv8 模型

4.1 修改 Gazebo 模型

  • URDF / SDF 文件中 添加相機傳感器,確保其能夠捕獲圖像並發送到 ROS。
  • 確保相機能夠發送影像到 /camera/image_raw topic。

4.2 啟動 Gazebo 並測試

使用 ROS launch 文件 啟動 Gazebo 仿真環境:

roslaunch your_package your_launch_file.launch

5. 測試與調優

5.1 測試系統

  • 在 Gazebo 運行仿真,觀察機械手臂是否能準確識別目標物體。
  • 確保系統可以根據識別結果生成適當的 運動控制指令

5.2 調優參數

  • YOLOv8 模型參數:調整 置信度閾值、NMS 閾值 等參數。
  • 相機參數:確保 解析度、曝光時間、視野範圍 適當。
  • 機械手臂控制參數:調整 關節速度、運動路徑,確保平穩運行。

6. YOLOv8 在 Gazebo 中的檢測效果分析

6.1 高精度與準確率

  • 多目標環境中,YOLOv8-SS 模型準確率達 91.00%
  • 相較於 YOLOv7,識別精度提升 10.11%

6.2 實時性能

  • YOLOv8-Extend 模型 可達 57.6 FPS,滿足 實時檢測需求

6.3 適應性強

  • 複雜環境(如光照變化、物體遮擋)下仍能高效識別。
  • 適用於農業場景,準確率提升 11.9%

6.4 多目標檢測能力

  • 搭配 ByteTrack 進行 多目標檢測與追蹤,準確率可達 94%

7. 總結

透過 ROS、Gazebo 和 YOLOv8,可以實現 基於視覺的機械手臂控制,具備以下優勢:

高精度目標檢測適用於動態環境高效能並行計算可擴展性強(適用於 工業自動化、智慧農業、機器人抓取 等場景)

這套技術堆疊將提升 機械手臂在複雜環境中的操作能力,推動智慧機器人技術的進一步發展。🚀


=================================

以下是一些推荐的视频,展示了如何在 Gazebo 中使用 YOLOv8 进行目标检测和相关应用:

  1. YOLOv8 Aerial Sheep Detection and Counting
    该视频演示了在 Gazebo 中使用 YOLOv8 进行羊只检测和计数的仿真。视频展示了如何设置环境以及模型的运行效果。
    观看视频 
    1
  2. Aerial Object Detection with PX4 Autopilot and ROS 2
    这个视频展示了如何使用 PX4 无人机和 ROS 2 在 Gazebo 中进行空中目标检测,利用 YOLOv8 进行实时识别。
    观看视频 
    3
  3. ROS与Gazebo中的YOLO仿真
    演示了如何在 ROS 环境下,将 Gazebo 和 YOLO 集成,实现小车的目标检测功能。适合想要了解 ROS 与 Gazebo 整合的用户。
    观看视频 
    5

这些视频为你提供了在 Gazebo 中集成 YOLOv8 的实践示例和详细步骤,帮助你更好地理解和应用这一技术。

YOLO8 自訓練

 

          YOLO8 自訓練 



YOLO8 安裝教學



YOLO8 訓練資料集 DIY











YOLOv8 自訓練指南

 YOLOv8 自訓練指南

YOLOv8 是一個多功能的 AI 視覺處理平台,不僅可用於物件偵測,還能處理圖像分類、分割、追蹤,以及姿態估計等任務。以下介紹 YOLOv8 自訓練時可使用的工具與相關流程。


1. 資料標記工具

  • Roboflow:線上數據管理平台,提供圖像標註、數據清理、轉換和管理功能,可輸出 YOLO 格式數據,並支援資料增強。

  • LabelImg:本地端圖像標註工具,可安裝於電腦並進行標註。

  • Labelme:適用於圖像分割任務,能產生 Mask 圖像。

  • Label Studio:開源數據標記工具,提供簡單 UI,支援圖像與影片標記。

  • CVAT:互動式影片與圖像標註工具。

  • Makesense.ai:免費線上標記工具,瀏覽器即可使用。


2. 資料集準備

  • 資料夾結構:YOLOv8 的資料集通常包含以下資料夾:

    • train/:存放訓練圖片與標籤檔。

    • valid/:存放驗證圖片與標籤檔。

    • test/ (非必要):存放測試圖片與標籤檔。

    • 各資料夾內需有 images/ (圖片) 與 labels/ (標籤檔)。

  • 標籤格式:使用 YOLOv5 PyTorch TXT 格式,標籤檔以 TXT 格式儲存,包含類別與邊界框資訊。

  • 資料分割:圖片分割比例通常為 8:2 (訓練集:驗證集) 或其他適當比例。


3. YAML 參數設定檔

data.yaml 用於描述資料集位置與類別資訊,包含以下內容:

path: /path/to/dataset
train: train/images
val: valid/images
test: test/images  # 非必要
nc: 類別數量
names: ['class1', 'class2', 'class3']

4. 模型訓練

  • 選擇模型

    • yolov8n (nano) - 適合資源受限環境。

    • yolov8s (small) - 速度與精度均衡。

    • yolov8m (medium) - 適合中等規模應用。

    • yolov8l (large) - 高精度模型。

    • yolov8x (extra-large) - 最精確但計算需求最高。

  • 訓練方式

    • 命令行模式

      yolo detect train data=data.yaml model=yolov8n.pt epochs=100 imgsz=640
    • Python 程式碼模式

      from ultralytics import YOLO
      model = YOLO('yolov8n.pt')
      model.train(data='data.yaml', epochs=100, imgsz=640)
  • 訓練參數

    • data:資料集 YAML 檔路徑。

    • model:選擇的 YOLOv8 預訓練模型。

    • epochs:訓練輪數。

    • imgsz:輸入圖像大小。

    • device:使用 CPU 或 GPU。

    • batch:批次大小。

    • workers:數據加載器的工作數。


5. 模型驗證與測試

  • 驗證

    • 訓練過程中,模型會定期在驗證集上評估性能,以調整參數並防止過擬合。

  • 測試

    • 訓練完成後,使用測試集評估最終性能。

  • 測試方式

    • 命令行模式

      yolo detect predict model=best.pt source=test/images
    • Python 程式碼模式

      results = model.predict(source='test/images')
  • 輸出結果

    • 包含帶有邊界框的圖像、標籤資訊與效能指標。


6. Ultralytics HUB

Ultralytics HUB 是一個 AI 平台,支援創建、訓練與部署機器學習模型,並可與 Roboflow 結合,方便管理數據與分析結果。


總結

YOLOv8 提供完整的自訓練流程,從資料標註到模型訓練與測試,均有相應工具可使用。

  • Roboflow 簡化資料標註與準備流程。

  • Ultralytics HUB 協助模型管理與部署。

  • 多種訓練方式 可依需求選擇命令行或 Python API。

使用者可根據需求選擇適合的工具與流程來訓練 YOLOv8 模型。

2024年12月10日 星期二

YOLO 目前發展的時間軸

 


YOLOv1: 最早的版本,奠定了YOLO系列的基礎。
YOLOv2: 引入批次正規化、錨框和尺寸聚類等技術,提升了模型的性能。
YOLOv3: 採用更有效的骨幹網路、多尺度特徵融合等方法,進一步增強了模型的表現。
YOLOv4: 引入Mosaic資料增強、無錨框偵測頭、新的損失函數等創新,大幅提升了模型的準確度。
YOLOv5: 優化了超參數,整合實驗追蹤和自動匯出功能,使其更易於使用。
YOLOv6: 由美團開放原始碼,並應用於其許多自動配送機器人中。
YOLOv7: 新增了人體姿態估計等任務。
YOLOv8: 由Ultralytics推出,支援更廣泛的視覺AI任務,性能更佳。
YOLOv9: 引入可程式化梯度資訊(PGI)和通用高效層聚合網路(GELAN)等創新方法。
YOLOv10: 由清華大學研究人員開發,採用端到端偵測頭,無需非極大值抑制(NMS)。
YOLOv11: Ultralytics最新的版本,在多種任務上取得了最先進的性能
Ps: 
    >> V4,V7,V9 於技術上有改進突破 提高準確率和速度 台灣中研院發表 
    >> V5, V8,V11 為 Ultralytics推出改進版本 無核心技術貢獻 但改進使用介面使YOLO容易使用 
         可以用 Pytorch 工具編譯 集多個類模型可適合各種平台使用








Yolov8 發展資源 模型分類

 



#YOLOv8 的不同版本與特色

#參數說明:
模型大小 (MB): 模型檔的大小,直接影響模型的部署和存儲。
參數量 (M): 模型中的可訓練參數數量,影響模型的複雜度和訓練時間。
FLOPs (G): 浮點運算次數,反映模型的計算量,影響推理速度。
輸入尺寸: 模型輸入圖像的尺寸,影響模型的感受野和檢測精度。
mAP@0.5: 平均精度均值,用於評估模型的整體性能。
mAP@0.5:0.95: 平均精度均值,考慮了不同 IoU 閾值下的性能,更全面地反映模型的性能。
推理速度 (FPS): 模型在特定硬體上的推理速度,單位元為幀每秒。
適用場景: 根據模型的性能特點,建議的應用場景。

#模型特性:
YOLOv8n: 極輕量,適合資源受限設備,如嵌入式系統和移動設備。
YOLOv8s: 速度與精度平衡,適用於一般目標檢測任務。
YOLOv8m: 精度較高,速度適中,適合中等複雜度場景。
YOLOv8l: 適合複雜場景,精度高,但對計算資源要求較高。
YOLOv8x: 最大模型,精度最高,但對計算資源要求極高。