Skip to content

ROS_YOLO_MODEL Wiki

Attila Ötvös edited this page Nov 26, 2024 · 27 revisions

Áttekintés

A ros_yolo_model egy ROS 2 csomag, amely az AJR (GKNB_AUTM078) tárgyra, egy a DDC által kiadott feladat alapján készült. A projekt célja az, hogy megismerkedjünk a YOLO architektúra, azon belül is a Yolov5 működésével és használatával.

A YOLOv5 (You Only Look Once, Version 5) egy valós idejű objektumdetektáló algoritmus, amely a számítógépes látás területén kiemelkedő teljesítményt nyújt sebességben és pontosságban. A YOLO család ötödik generációjaként került kifejlesztésre, és a PyTorch keretrendszeren alapul. Gyorsaságát és hatékonyságát a könnyű súlyú architektúrájának és optimalizált kódstruktúrájának köszönheti.

Az alábbi alfeladatokat igyekeztünk teljesíteni:

  • Node készítése, amellyel a YOLO modell feltanítható saját képek felismerésére az alap objektumok mellett.
  • Node készítése, amely egy saját .pt állományt használva képes egy bemeneti képen vagy videón objektumok felismerésére. Az is beállítható, hogy a deketálás eredményét szeretnénk-e menteni.
  • YOLO modell feltanítása, ami képes felismerni az egyetemi hallgatói és alkalmazotti kártyákat, és az ehhez szükséges adathalmaz elkészítése.
  • A tanítást úgy elvégezni, hogy meg is különböztesse az említett kártyákat. Script írása "dummy kártyák" generálására, illetve azok véletlenszerű elhelyezésére képeken, valamint ezekből adathalmaz készítése.

A feladatunk alapjául a https://github.com/ultralytics/yolov5 szolgált.

Működése

1. teach_node

  • Célja:

    • YOLOv5 modell feltanítása egyedi adatkészlet alapján
  • Működése:

    • Paraméterek:
      • dataset_path: Az adatkészlet elérési útja, ami tartalmazza a YOLOv5 által megkövetelt data.yaml fájlt is.
      • model_output_path: Az eredményként kapott modell kimeneti útvonala, ahol a súlyokat és a tanítás eredményeit tárolja.
    • A YOLO modell tanítása:
      • A YOLOv5 hivatalos train.py scriptjét egy rendszerszintű parancs (std::system) segítségével hívja meg.
      • Ezt a parancsot az alábbiak szerint paraméterezi fel:
        • Kép méret: 640px széles képek használata alapértelmezetten
        • Batch-méret: 16 kép egyidejű feldolgozása (hardver és cél függően módosítandó)
        • Epoch-ok száma: 100 iteráció az optimális modell eléréséhez (hardver és cél függően módosítandó)
        • Korábbi súlyok használata: Kiindulási pontként a fifth_train[cards](vagy amelyiket éppen szeretnénk) előzőleg betanított modell súlyait használja
        • Hiperparaméterek: egyedi hyp.yaml fájl segítségével további finomhangolás végzése (hardver és cél függően módosítandó)
  • Főbb funkciók:

    • Node inicializálás
    • Tanítási folyamat
    • Hibaellenőrzés
  • Használat:

    cd ~/ros2_ws
    colcon build --packages-select ros_yolo_model --symlink-install
    Környezet source-olása a futtatás előtt!
    source ~/ros2_ws/install/setup.bash 

    A node indítása:

    ros2 run ros_yolo_model teach_node <dataset_path> <model_output_path>

    Példa:

    ros2 run ros_yolo_model teach_node /home/ajr/ros2_ws/src/ros_yolo_model/dataset /home/ajr/ros2_ws/src/ros_yolo_model/output

2. detector_node

Clone this wiki locally