Detekcia objektov s OpenCV a CUDA
Tento návod pokrýva nastavenie schopností detekcie objektov na vašom FEI JetRacer pomocou OpenCV s CUDA akceleráciou a YOLOv4-Tiny pre výkon v reálnom čase.
Prehľad
Použijeme:
- OpenCV s CUDA: Pre akcelerované operácie počítačového videnia
- YOLOv4-Tiny: Ľahký model detekcie objektov optimalizovaný pre embedded zariadenia
- cuDNN: NVIDIA knižnica pre akceleráciu hlbokého učenia
Poznámka
Ak používate náš predkonfigurovaný JetRacer image, časť tohto nastavenia je už kompletná!
Môžete preskočiť kroky inštalácie OpenCV s podporou CUDA nižšie a prejsť priamo na Overenie inštalácie.
Manuálna inštalácia
Krok 1: Inštalácia OpenCV s podporou CUDA
Použijeme inštalačný skript Qengineering, ktorý automatizuje komplexný proces buildovania OpenCV s podporou CUDA a cuDNN.
Stiahnutie inštalačného skriptu
cd ~
git clone https://github.com/Qengineering/Install-OpenCV-Jetson-Nano.git
cd Install-OpenCV-Jetson-Nano
Príprava vášho systému
Pred spustením inštalačného skriptu sa uistite, že je váš systém pripravený:
sudo apt update && sudo apt upgrade -y
sudo apt autoremove -y
Uvoľnite miesto na disku a zvýšte swap:
sudo systemctl disable nvzramconfig
sudo fallocate -l 4G /var/swapfile
sudo chmod 600 /var/swapfile
sudo mkswap /var/swapfile
sudo swapon /var/swapfile
sudo swapon -s
Spustenie inštalačného skriptu
Upozornenie: Tento proces môže trvať 2-4 hodiny. Uistite sa o stabilnom napájaní a neprerušujte proces.
chmod +x ./OpenCV-4-11-0.sh
./OpenCV-4-11-0.sh
Skript bude:
- Inštalovať všetky potrebné závislosti
- Stiahnuť zdrojový kód OpenCV
- Konfigurovať build s podporou CUDA
- Kompilovať OpenCV (toto trvá najdlhšie)
- Inštalovať skompilované knižnice
Overenie inštalácie
Po dokončení inštalácie overte OpenCV s podporou CUDA:
python3 -c "import cv2; print('OpenCV version:', cv2.__version__); print('CUDA devices:', cv2.cuda.getCudaEnabledDeviceCount())"
Mali by ste vidieť výstup podobný tomuto:
OpenCV version: 4.11.1
CUDA devices: 1
Krok 2: Konfigurácia prostredia
Uistite sa, že je inštalácia OpenCV správne nakonfigurovaná vo vašom DonkeyCar prostredí:
source ~/env/bin/activate
cd ~/mycar
Otestujte OpenCV vo vašom virtuálnom prostredí:
python3 -c "import cv2; print('OpenCV loaded successfully with version:', cv2.__version__)"
Krok 3: Nastavenie YOLOv4-Tiny
Teraz pridáme model detekcie objektov YOLOv4-Tiny do vášho DonkeyCar nastavenia.
Vytvorenie adresára modelov
cd ~/mycar
mkdir -p models
cd models
Stiahnutie súborov YOLOv4-Tiny
Stiahnite predtrénované súbory modelu YOLOv4-Tiny:
wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4-tiny.weights
wget https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov4-tiny.cfg
wget https://raw.githubusercontent.com/AlexeyAB/darknet/master/data/coco.names
Overenie súborov modelu
Skontrolujte, či sú všetky požadované súbory prítomné:
ls -la ~/mycar/models/
Mali by ste vidieť:
yolov4-tiny.weights(približne 23MB)yolov4-tiny.cfg(konfiguračný súbor)coco.names(súbor so štítkami tried)
Test detekcie objektov
Otestujte spustením webového rozhrania DonkeyCar:
cd ~/mycar
python manage.py drive
Mali by ste vidieť detekciu objektov v kamerovom feed-e vo webovom rozhraní.
Tipy na výkon
Optimalizácia pre výkon v reálnom čase
-
Ladenie rozlíšenia: Vyvážte presnosť a rýchlosť úpravou vstupného rozlíšenia
-
Frekvencia detekcie: Spúšťajte detekciu každých niekoľko snímok namiesto každej snímky
-
Spracovanie ROI: Spracovávajte len oblasti záujmu v obrázku
Riešenie problémov
Problémy s inštaláciou OpenCV
Ak inštalačný skript zlyhá:
- Nedostatočné úložisko: Uistite sa, že máte aspoň 16GB voľného miesta
- Problémy s pamäťou: Zvýšte veľkosť swap súboru
- Problémy s napájaním: Použite adekvátne napájanie
CUDA nefunguje
Ak CUDA akcelerácia nefunguje:
# Skontrolujte inštaláciu CUDA
nvcc --version
# Overte cuDNN
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
Chyby načítania modelu
Ak sa YOLO modely nedajú načítať:
-
Overte integritu súborov:
md5sum ~/mycar/models/yolov4-tiny.weights -
Skontrolujte oprávnenia súborov:
chmod 644 ~/mycar/models/*