Files
duck-stain-yolo/README.md

2.0 KiB

Duck Stain YOLO

MVP aplikacji okienkowej do podgladu kamery USB, wykrywania etykiety modelem YOLOv8 i zapisu zdjec/filmow z metadanymi JSON.

Uruchomienie

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.py

Na macOS z Tesseractem:

brew install tesseract

Na Ubuntu/WSL:

sudo apt install tesseract-ocr

Na Linuksie requirements.txt wymusza CPU build PyTorch, zeby nie pobierac wariantu CUDA. Na macOS pip zainstaluje standardowy wariant CPU dla procesora Intel.

Umiesc wytrenowany model jako models/best.pt albo zmien detection.model_path w app_config.json.

Konfiguracja

Glowny plik konfiguracji: app_config.json.

Istotne ustawienia:

  • camera.width, camera.height, camera.fps - rozdzielczosc i FPS kamery.
  • camera.rotation_degrees - obrot obrazu z kamery: 0, 90, 180 albo 270.
  • camera.properties - parametry OpenCV ustawiane na kamerze, np. jasnosc, kontrast, ekspozycja. null oznacza brak wymuszania wartosci.
  • detection.mode - best rysuje najlepsza etykiete, all rysuje wszystkie wykrycia.
  • detection.frame_stride - YOLO uruchamiany co N klatek podczas aktywnego wykrywania.
  • label_data.models, label_data.colors - slowniki do walidacji tekstu z etykiety.
  • ocr.enabled, ocr.engine - wlaczenie OCR i wybor silnika: none, tesseract, paddle.

Zdjecia trafiaja do captures/photos, filmy do captures/videos. Obok kazdego pliku media zapisywany jest JSON z aktualnym wynikiem detekcji/OCR.

Testowanie OCR poza aplikacja

OCR mozna testowac na gotowych cropach bez uruchamiania kamery i YOLO:

.venv-lin/bin/python -m app.ocr.cli crop --engine none
.venv-lin/bin/python -m app.ocr.cli crop --engine tesseract
.venv-lin/bin/python -m app.ocr.cli crop --engine paddle --json

Backend PaddleOCR jest opcjonalny. Zaleznosci do testow PaddleOCR sa w osobnym pliku:

.venv-lin/bin/pip install -r requirements-ocr-paddle.txt