CV / YOLOv5
YOLOv5n_seg
Version légère de la série de segmentation d'instance YOLOv5n-Seg, compacte et efficace, conçue pour la segmentation d'objets au niveau pixel et la prédiction de masques, idéale pour le déploiement sur l'edge.
Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.
Pour commencer
sudo docker run --rm \
--name rk3588-yolov5n-seg \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
--device /dev/video0:/dev/video0 \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov5_seg:latest \
python3 web_detection.py --model_path model/yolov5n_seg.rknn --video video/test.mp4API REST
Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/predict" -F "realtime=true"
# Or without file parameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/predict"
import requests
import json
resp = requests.post(
"http://127.0.0.1:8000/api/models/yolov5_seg/predict",
json={},
timeout=30
)
result = resp.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
Détails du modèle
Demarrage rapide
1. Installer Docker
Executez les commandes suivantes sur la carte de developpement pour installer Docker :
# Download installation script
curl -fsSL https://get.docker.com -o get-docker.sh
# Install using Aliyun mirror source
sudo sh get-docker.sh --mirror Aliyun
# Start Docker and enable auto-start on boot
sudo systemctl enable docker
sudo systemctl start docker2. Executer le projet (Une commande, apercu double mode)
Ce projet prend en charge l'apercu via un navigateur Web. Le projet peut etre execute avec une seule commande. De plus, une interface Fast-API est fournie pour faciliter le developpement et les tests personnalises des utilisateurs.
Etape A : Telecharger les images
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-yolov5_seg:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-yolov5_seg:latestEtape B : Execution en un clic
Pour RK3588 :
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
--device /dev/video0:/dev/video0 \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov5_seg:latest \
python3 web_detection.py --model_path model/yolov5n_seg.rknn --video video/test.mp4Pour RK3576 :
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
--device /dev/video0:/dev/video0 \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolov5_seg:latest \
python3 web_detection.py --model_path model/yolov5n_seg.rknn --video video/test.mp4Acces via : http://<Board_IP>:8000
Note : Si vous avez besoin de classes personnalisees, vous pouvez ajouter le montage
-v $(pwd)/class_config.txt:/app/class_config.txt \et le parametre--class_path. Le programme utilise par defaut les 80 classes COCO.
Exemple :
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
-v $(pwd)/class_config.txt:/app/class_config.txt \
--device /dev/video0:/dev/video0 \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov5_seg:latest \
python3 web_detection.py --model_path model/yolov5n-seg.rknn --video video/test.mp4 --class_path class_config.txt🔌 Documentation de l'API
Ce projet fournit des interfaces RESTful compatibles avec la norme API Ultralytics Cloud, prenant en charge la segmentation d'instance via le telechargement d'images, de videos ou l'appel direct de la camera.
1. Interface d'inference du modele (Predict)
Point de terminaison : POST /api/models/yolov5_seg/predict
Parametres de la requete (Multipart/Form-Data) :
file: (Optionnel) Fichier image a detecter.video: (Optionnel) Fichier video MP4 a detecter.timestamp: (Optionnel) Horodatage dans le fichier video (secondes), retourne les resultats de detection pour la trame a ce point. La valeur par defaut est 0.realtime: (Optionnel) Booleen. Sitrueou si aucun parametrefile/videon'est fourni, retourne les resultats de detection pour la trame actuelle de la camera.conf: (Optionnel) Seuil de confiance pour une requete unique, plage 0.0-1.0.iou: (Optionnel) Seuil IOU NMS pour une requete unique, plage 0.0-1.0.
Exemples d'utilisation :
1. Detection d'image :
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/predict" -F "file=@/home/cat/001.jpg"2. Detection de trame video specifique :
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/predict" -F "video=@/home/cat/test.mp4" -F "timestamp=5.5"3. Obtenir la detection de la trame camera actuelle :
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/predict" -F "realtime=true"
# Or without file parameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/predict"Format de reponse (JSON) :
{
"success": true,
"source": "video frame at 5.5s",
"predictions": [
{
"class": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 200, "x2": 300, "y2": 500 },
"polygons": [
[100, 200], [150, 210], [160, 300]
]
}
],
"image": { "width": 1280, "height": 720 }
}2. Interface de configuration systeme (Config)
Utilisee pour ajuster dynamiquement les seuils pour les flux video en temps reel et l'inference par defaut.
Obtenir la configuration actuelle
- Point de terminaison :
GET /api/config - Reponse :
{"obj_thresh": 0.25, "nms_thresh": 0.45}
Mettre a jour la configuration systeme
- Point de terminaison :
POST /api/config - Corps de la requete (JSON) :
{"obj_thresh": 0.3, "nms_thresh": 0.5} - Reponse :
{"status": "success"}
3. Interface de flux video en temps reel (Video Feed)
Obtenez un flux video MJPEG en temps reel avec les boites de detection et les masques de segmentation dessines, pouvant etre directement integre dans les balises HTML <img>.
- Point de terminaison :
GET /api/video_feed - Exemple d'utilisation :
<img src="http://<Board_IP>:8000/api/video_feed">
🛠️ Guide du developpeur (Recommandations de production)
Description du code
web_detection.py:- Prise en charge double mode : Integre FastAPI, prenant en charge a la fois le rendu local et la sortie de streaming MJPEG.
- Adaptatif a l'environnement : Detecte automatiquement la variable d'environnement
DISPLAY, ignorant silencieusement l'initialisation GUI si elle n'est pas presente. - Inference RKNN : Encapsule l'initialisation RKNN, le chargement du modele et la logique d'inference multi-coeur.
- Chargement dynamique : Prend en charge le chargement dynamique de la configuration des classes via
--class_path. - Post-traitement : Decodage haute performance des boites englobantes base sur Numpy, NMS et extraction de contours (
cv2.findContours).
Modification des modeles
- Placez le modele .rknn entraine et converti dans le repertoire
model/. - Ajoutez l'argument
--model_patha la commande d'execution pour pointer vers le nouveau modele.