Maison  >  Article  >  Périphériques technologiques  >  Former le modèle YOLOv7 et développer la détection d'incendie par IA

Former le modèle YOLOv7 et développer la détection d'incendie par IA

王林
王林avant
2023-05-11 13:43:06924parcourir

1. Préparez l'ensemble de données

L'ensemble de données utilise des images open source, un total de 6 000 images de feu, chacune marquée avec ​Fumée dense​​​et​​Feu​​Deux catégories. ​浓烟​​​和​​火​​两类。

Former le modèle YOLOv7 et développer la détection dincendie par IA

Former le modèle YOLOv7 et développer la détection dincendie par IA

浓烟

项目采用​​YOLO​​​训练,我已经把数据转成​​YOLO​​​格式,并分好了训练集和验证集,见​​dataset​

Former le modèle YOLOv7 et développer la surveillance des incendies par l'IA

Former le modèle YOLOv7 et développer la détection dincendie par IAfire

Former le modèle YOLOv7 et développer la surveillance des incendies par l'IA

Projet Dense Smoke

Utilisation de ​​YOLO​ ​​Formation, j'ai converti les données en​​YOLO​​​Format, et divisé en ensemble d'entraînement et ensemble de vérification, voir​​dataset​​ répertoire.

Former le modèle YOLOv7 et développer la détection dincendie par IA2. Formation

Pour le processus de formation, veuillez vous référer à la documentation du site officiel de YOLOv7.

Modifiez le fichier data/coco.yaml et configurez le chemin et la catégorie des données d'entraînement.

Téléchargez le modèle pré-entraîné yolov7.pt, puis vous pourrez commencer la formation

3. Surveillance des incendies

Former le modèle YOLOv7 et développer la détection dincendie par IAUne fois la formation terminée, recherchez le fichier de modèle généré - best.pt dans le répertoire d'exécution sous le. répertoire yolov7 .

Le modèle que j'ai formé est placé dans le répertoire des poids du code source, nommé fire.pt, et vous pouvez l'utiliser directement.

Avec le modèle, nous l'utilisons pour développer un programme de surveillance.

Tout d'abord, vous devez télécharger le code source de yolov7 sur le projet en cours.

Ensuite, installez pytorch et utilisez pytorch pour charger le modèle yolov7 entraîné.

fire_detector = torch.hub.load('./yolov7', 'custom', './weights/fire.pt', source='local')

Il y a une vidéo d'incendie fire_video.mp4 dans le code source. Vous pouvez utiliser opencv pour lire la vidéo afin de tester l'effet de détection.

ret, frame = cap.read()
results = self.fire_detector(img_cvt)
pd = results.pandas().xyxy[0]

# 绘制检测框
for obj in pd.to_numpy():
box_l, box_t = int(obj[0]), int(obj[1])
box_r, box_b = int(obj[2]), int(obj[3])
obj_name = obj[6]

if obj_name == 'smoke':
box_color = (0, 0, 255)
box_txt = '检测到浓烟'
else:
box_color = (0, 255, 0)
box_txt = '检测到大火'

frame = cv2.rectangle(frame, (box_l, box_t), (box_r, box_b), box_color, 2)
frame = cv2_add_chinese_text(frame, box_txt, (box_l, box_t-40), box_color, 25)

Après une exécution réussie, l'effet sera le même que la vidéo au début de l'article.

Vous pouvez déployer le projet sur un GPU intégré, tel que Jetson Nano, pour une détection en temps réel. Développer un service de communication cloud pour appeler la police en cas d'incendie.

En même temps, vous pouvez également développer une application pour transmettre le flux vidéo en direct au serveur. L'application peut voir l'effet de surveillance en temps réel et aider à prendre des décisions. 🎜🎜4. Difficultés🎜🎜En fait, il existe encore quelques difficultés dans l'utilisation de la détection de cible pour la détection d'incendie. Par exemple, il existe de nombreux échantillons interférents, ce qui peut facilement conduire à de fausses détections. Pour un autre exemple, un étiquetage incohérent empêche un calcul efficace du mAP. 🎜🎜Il est donc préférable que nous puissions personnaliser la méthode de calcul de la fonction de perte et de la précision. En prenant le rappel comme exemple, si nous pouvons détecter un incendie sur l'image, il sera considéré comme réussi, mais il ne doit pas nécessairement détecter combien de flammes et combien de fumées. 🎜🎜Bien entendu, ce type de tâche ne doit pas nécessairement être effectué via la détection de cibles. Un ami m'a suggéré d'utiliser des tâches de classification et des tâches de segmentation, et je pense que je peux essayer les deux. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer