Branderkennung aus Bildern
Der Zweck dieses Repos besteht darin, ein neuronales Netzmodell zur Branderkennung zu demonstrieren. Bei Verwendung dieses Modells wird ein Begrenzungsrahmen um jedes Feuer in einem Bild platziert.
Beste Ergebnisse
Objekterkennung: Nachdem ich mit verschiedenen Modellarchitekturen experimentiert hatte, entschied ich mich für das Yolov5-Pytorch-Modell (siehe pytorch/object-detection/yolov5/experiment1/best.pt
). Nach ein paar Stunden des Experimentierens habe ich ein Modell von [email protected]
mit 0,657, Präzision von 0,6 und Recall von 0,7 generiert, trainiert auf 1155 Bildern (337 Basisbilder + Erweiterung).
Klassifizierung: Ich muss mein eigenes Modell noch trainieren, aber mit ResNet50 wird eine Genauigkeit von 95 % gemeldet
Segmentierung: erfordert Anmerkung
Motivation und Herausforderungen
Herkömmliche Rauchmelder funktionieren, indem sie das physische Vorhandensein von Rauchpartikeln erkennen. Allerdings sind sie anfällig für Fehlerkennungen (z. B. durch Toaster) und können den Brand nicht besonders gut lokalisieren. In diesen Situationen könnte eine Kameralösung einen herkömmlichen Melder ergänzen, um die Reaktionszeiten zu verbessern oder zusätzliche Messwerte wie die Größe und den Ort eines Feuers bereitzustellen. Sobald der Ort und die Art des Feuers identifiziert sind, kann ein automatisierter Eingriff möglich sein, z. B. über eine Sprinkleranlage oder eine Drohne. Außerdem können Daten an die Feuerwehr gesendet werden, um ein sonst nicht vorhandenes Situationsbewusstsein zu schaffen. Besondere Standorte, die mich interessieren, sind: Küchen und Wohnzimmer, Garagen und Nebengebäude sowie Bereiche, in denen möglicherweise bereits Brände vorhanden sind, sich aber über einen gewünschten Bereich hinaus ausbreiten, z. B. eine Feuerstelle.
Es gibt einige bedeutende Herausforderungen und offene Fragen:
- Was ist für ein Fast-Edge-Modell die „beste“ Architektur? Yolo3 ist für kommerzielle Anwendungen sehr beliebt und kann in Keras oder Pytorch implementiert werden, die Basisversion von Yolov5 ist derzeit SOTA und verfügt über einen Bereitstellungsleitfaden für Jetson.
- Kann die Architektur optimiert werden, da wir nur eine einzige Klasse erkennen?
- Grundlegende Objekterkennung, aber gibt es Vorteile beim Klassifizieren oder Segmentieren? Obj-Modelle trainieren auf mAP- und Recall-Metriken, aber für unsere Anwendung hat die Genauigkeit des Begrenzungsrahmens möglicherweise nicht oberste Priorität? Allerdings funktionieren Klassifizierungsmodelle am besten bei einer schönen Aufnahme, die nur das Zielobjekt enthält, aber in realen Brandszenarien wird die Szene nicht so einfach sein wie dieses Szenario.
- Tensorflow + Google-Ökosystem oder Pytorch + NVIDIA/MS? Tensorflow leidet unter dem TF1-Alter
- Ist ein einzelnes „Super“-Modell vorzuziehen oder mehrere Spezialmodelle? Typische Brandkategorien sind Kerzenflammen, Innen-/Außenbrände und Fahrzeuge
- Sammeln oder Auffinden eines umfassenden, repräsentativen und ausgewogenen Trainingsdatensatzes
- Umgang mit unterschiedlichen Blickwinkeln, unterschiedlichen Kameraherstellern und -einstellungen sowie unterschiedlichen Umgebungslichtbedingungen.
- Da Brände so hell sind, dass sie häufig Bilder auswaschen und andere optische Störungen verursachen, wie kann dies kompensiert werden?
- Da wir davon ausgehen, dass das Modell Einschränkungen aufweisen wird, stellt sich die Frage: Wie machen wir die Modellergebnisse interpretierbar?
- Brände können sehr unterschiedlich groß sein, von einer Kerzenflamme bis hin zur Verschlingung eines ganzen Waldes – ist das ein Problem mit kleinen und großen Objekten? Die Aufteilung des Datensatzes nach Brandklassen und das Trainieren von Modellen für jede Klasse kann zu besseren Ergebnissen führen? Als semantisches Segmentierungsproblem behandeln (erfordert eine erneute Kommentierung des Datensatzes)?
Ideen:
- Bilder vorverarbeiten, z. B. um den Hintergrund zu entfernen oder Filter anzuwenden
- Einordnung kurzer Videosequenzen, da die Bewegung des Feuers recht charakteristisch ist
- Simulierte Daten: Identifizieren Sie jede Software, die realistische Brände erzeugen kann, und fügen Sie sie zu vorhandenen Datensätzen hinzu
- Erweiterungen zur Simulation der Wirkung verschiedener Kameras und Belichtungseinstellungen
- Identifizieren Sie alle relevanten Leitlinien/Gesetze zur erforderlichen Genauigkeit von Branderkennungstechniken
- RGB + Thermal kombinieren, um Fehlalarme zu unterdrücken? z. B. mit https://openmv.io/blogs/news/introducing-the-openmv-cam-pure-thermal oder günstigerem Grideye oder Melexsis
Ansatz und Werkzeuge
- Frames werden über ein neuronales Netz eingespeist. Bei positiver Branderkennung werden Metriken extrahiert. Rauch für MVP ignorieren. Probieren Sie verschiedene Architekturen und Parameter aus, um ein „gutes“ Basismodell zu erstellen.
- Entwickeln Sie ein Modell mit geringerer Genauigkeit, aber schneller, das auf RPi und Mobilgeräte ausgerichtet ist, und ein Modell mit hoher Genauigkeit, das auf GPU-Geräte wie Jetson ausgerichtet ist. Yolo präsentiert beide Optionen, yolo4 lite für Mobilgeräte und yolo5 für GPU. Alternativ gibt es mobilenet und tf-object-detection-api. Ein GPU-Modell mit höherer Genauigkeit hat Priorität.
- Nutzen Sie Google Colab für Schulungen
Artikel & Repos
- Fire_Detection -> Feuer- und Raucherkennungssystem mit Jetson nano & Yolov5 mit Bilddatensatz von iStock
- YOLOv5 Wildfire Smoke Detection mit Roboflow und Weights & Biases
- Yolov5-Fire-Detection -> gut dokumentiertes Modell, das auf Kaggle-Daten trainiert wurde
- Brand- und Raucherkennung mit Keras und Deep Learning von pyimagesearch – Datensatz, der durch Scraping von Google-Bildern gesammelt wurde (bietet Link zum Datensatz mit 1315 Brandbildern), binäre Brand-/Nicht-Brand-Klassifizierung mit tf2 und Keras sequentiellem CNN, erreicht eine Genauigkeit von 92 %, kommt zu dem Schluss Bessere Datensätze sind erforderlich
- Branderkennung von Grund auf mit YOLOv3 – hier wird die Annotation mit LabelImg, die Verwendung von Google Drive und Colab, die Bereitstellung über Heroku und die Verwendung von Streamlit besprochen. Werk von Devdarshan Mishra
- Feuer- und Schusswaffenerkennung -> Feuer- und Schusserkennung mit yolov3 in Videos und Bildern. Trainingscode, Datensatz und Datei mit trainiertem Gewicht verfügbar.
- YOLOv3-Cloud-Based-Fire-Detection -> Benutzerdefinierte Objekterkennung mit YOLOv3 in der Cloud. Es ist darauf trainiert, Feuer in einem bestimmten Frame zu erkennen. Es kann weitgehend bei Waldbränden, Brandunfällen usw. eingesetzt werden.
- fire-detect-yolov4 -> Training des Yolo v4-Modells
- midasklr/FireSmokeDetectionByEfficientNet – Brand- und Rauchklassifizierung und -erkennung mithilfe vonefficientnet, Python 3.7、PyTorch1.3, visualisiert die Aktivierungskarte, enthält Trainings- und Inferenzskripte
- arpit-jadon/FireNet-LightWeight-Network-for-Fire-Detection – Ein spezialisiertes leichtes Brand- und Raucherkennungsmodell für Echtzeit-IoT-Anwendungen (z. B. auf RPi), Genauigkeit ca. 95 %. Papier https://arxiv.org/abs/1905.11922v2
- tobybreckon/fire-detection-cnn – Links zu einigen Datensätzen
- EmergencyNet – Identifizieren Sie Brände und andere Notfälle mithilfe einer Drohne
- Branderkennung mithilfe von CCTV-Bildern – Monk Library-Anwendung – Keras-Klassifikator für Kaggle-Datensätze, Mobilenet-v2, Densenet121 und Densenet201
- fire-detection-cnn – automatische Erkennung von Brandpixelbereichen in Video- (oder Stand-)Bildern innerhalb der Echtzeitgrenzen. Eine maximale Genauigkeit von 0,93 für die binäre Branderkennung im gesamten Bild (1) kann mit einer Genauigkeit von 0,89 innerhalb unseres Superpixel-Lokalisierungsrahmens erreicht werden
- Brandfrüherkennungssystem mit Deep Learning und OpenCV – angepasste InceptionV3- und CNN-Architekturen für die Branderkennung im Innen- und Außenbereich. 980 Bilder für das Training und 239 Bilder für die Validierung, Trainingsgenauigkeit von 98,04 und eine Validierungsgenauigkeit von 96,43, OpenCV wird für die Live-Erkennung per Webcam verwendet – Code und Datensätze (hier bereits referenziert) auf https://github.com/jackfrost1411/fire- Erkennung
- Smoke-Detection-using-Tensorflow 2.2 – EfficientDet-D0, 733 kommentierte Rauchbilder, erwähnt im Roboflow-Blog
- Luftbilddatensatz zur Branderkennung: Klassifizierung und Segmentierung mit unbemannten Luftfahrzeugen (UAV) – binärer Klassifikator, 76 % Genauigkeit im Testsatz
- Ein Waldbranderkennungssystem basierend auf Ensemble-Lernen -> Zunächst werden zwei einzelne Lernende, Yolov5 und EfficientDet, integriert, um den Branderkennungsprozess durchzuführen. Zweitens ist ein weiterer einzelner Lernender, EfficientNet, dafür verantwortlich, globale Informationen zu lernen, um Fehlalarme zu vermeiden
- Brandmeldesystem mit Multi-Label-Klassifizierungsmodell, erklärt durch GradCAM -> Verwenden Sie CAM, um zu visualisieren, welcher Bereich eines Bildes für eine Vorhersage verantwortlich ist, und verwenden Sie synthetische Daten, um fehlende Klassen aufzufüllen, um die Klassenverteilung auszugleichen
- Training des fast.ai-Modells und Bereitstellung über die Gradio-App
- Deepfire -> Waldbranderkennung auf UAV mit ResNet50 und EfficientNetB7 durchführen
- Wildfire-Smoke-Detection -> Faltungsmodell eines neuronalen Netzwerks basierend auf der Architektur des Faster-RCNN zur Erkennung von Waldbrandrauch
- FireNet-LightWeight-Network-for-Fire-Detection -> Ein spezialisiertes leichtes Brand- und Raucherkennungsmodell für Echtzeit-IoT-Anwendungen mit ArXiv-Papier
- Waldbrand-Raucherkennungsforschung -> Früherkennung von Waldbrand-Rauch, mit Papier
Datensätze
- FireNET – ca. 500 Brandbilder mit Begrenzungsrahmen im Pascal-Voc-XML-Format. Repo enthält ein trainiertes Yolo3-Modell, das mit imageai trainiert wurde, unbekannte Leistung. Allerdings sind die Bilder klein, im Durchschnitt 275 x 183 Pixel, was bedeutet, dass ein Netzwerk weniger Strukturmerkmale erlernen muss.
- Branderkennung von CCTV auf Kaggle – Bilder und Videos, Bilder werden aus Videos extrahiert, relativ kleiner Datensatz, wobei alle Bilder nur aus 3–4 Videos stammen. Sehr relevant für die aktuelle Aufgabe, da es Videos zum Testen gibt. Datensatz organisiert für die Klassifizierungsaufgabe Normal/Rauch/Feuer, keine Begrenzungsrahmenanmerkungen
- cair/Fire-Detection-Image-Dataset – Dieser Datensatz enthält viele normale Bilder und 111 Bilder mit Feuer. Der Datensatz ist sehr unausgewogen, um Situationen in der realen Welt widerzuspiegeln. Die Bilder haben eine angemessene Größe, sind aber nicht mit Anmerkungen versehen.
- mivia Branderkennungsdatensatz – ca. 30 Videos
- USTC-Raucherkennung – Links zu verschiedenen Quellen, die Rauchvideos bereitstellen
- Der Fire/Not-Fire-Datensatz im Pyimagesearch-Artikel kann heruntergeladen werden. Beachten Sie, dass es viele Bilder von Brandszenen gibt, die kein echtes Feuer, sondern beispielsweise ausgebrannte Häuser zeigen.
- FIRE-Datensatz auf Kaggle – 755 Feuerbilder im Freien und 244 Bilder ohne Feuer. Die Bilder haben eine angemessene Größe, sind aber nicht mit Anmerkungen versehen
- Brandbilddatensatz für die Dunnings-Studie 2018 – PNG-Standbildsatz
- Fire Superpixel-Bilddatensatz für die Samarth 2019-Studie – PNG-Standbildsatz
- Wildfire Smoke-Datensatz – 737 kommentierte (umrandete) Bilder
- Datensatz von jackfrost1411 -> mehrere hundert Bilder, sortiert nach Feuer/Neutral für die Klassifizierungsaufgabe. Keine Begrenzungsrahmenanmerkungen
- Feuer-und-Rauch-Datensatz auf Kaggle -> 7000+ Bilder, bestehend aus 691 Bildern nur mit Flammen, 3721 Bildern nur mit Rauch und 4207 Bildern mit Feuer {Flamme und Rauch}
- Domestic-Fire-and-Smoke-Dataset -> Ca. 5000 einzigartige Bilder, 2-Klasse (Feuer und Rauch), Bounding-Box-Anmerkung, COCO-, PASCAL VOC- und YOLO-Formate
- Kaggle Fire-and-Gun-Dataset
- Wildfire-Detection -> Datensatz von PerceptiLabs, 250x250-Pixel-Bilder, die normale Szenen und Szenen mit Bränden darstellen. Mit Artikel. Es ist dieser Datensatz von kaggle
- DFireDataset -> ein Bilddatensatz zur Brand- und Raucherkennung
Hinweise zum Brandschutz
- Suchen Sie nach Referenzen zu den verschiedenen Arten von Bränden im Haus, häufigen Szenarien und Interventionen
- Sicherheits-/Genauigkeitsstandards für Brandmelder, einschließlich ROC-Eigenschaften
Brände im Haus
- Häufige Ursachen sind glimmende Zigaretten, Kerzen, Stromausfälle, Brände in der Fritteuse
- Eine Vielzahl von Faktoren beeinflussen die Art des Feuers, vor allem der Brennstoff und die Sauerstoffversorgung, aber auch der Ort, an dem sich das Feuer befindet, die Mitte des Raums/an einer Wand, die Wärmekapazität eines Raums, die Wände, die Umgebungstemperatur, die Luftfeuchtigkeit und Schadstoffe das Material (Staub, ölbasierte Produkte, Weichmacher usw.)
- Zum Löschen eines Feuers kommen eine Reihe von Löschmitteln in Betracht: Wasser (nicht in der Elektro- oder Chippfanne), Schaum, CO2, Trockenpulver
- Bei Elektrobränden sollte zunächst die Stromversorgung unterbrochen werden
- Durch eine Reduzierung der Belüftung, z. B. durch das Schließen von Türen, wird der Brand begrenzt
- Rauch selbst ist ein starker Indikator für die Art des Feuers
- Lesen Sie https://en.m.wikipedia.org/wiki/Fire_triangle und https://en.m.wikipedia.org/wiki/Combustion
Edge-Bereitstellung
Unser Endziel der Bereitstellung auf einem Edge-Gerät (RPi, Jetson Nano, Android oder iOS) wird Entscheidungen über die Architektur und andere Kompromisse beeinflussen.
- Stellen Sie YOLOv5 für Jetson Xavier NX mit 30 FPS bereit – Inferenz mit 30 FPS
- So trainieren Sie YOLOv5 an einem benutzerdefinierten Datensatz
- Trainieren Sie YOLOv4-tiny mit benutzerdefinierten Daten – blitzschnelle Objekterkennung
- So trainieren Sie ein benutzerdefiniertes TensorFlow Lite-Objekterkennungsmodell – Colab Notebook, MobileNetSSDv2, Bereitstellung auf RPi
- So trainieren Sie ein benutzerdefiniertes mobiles Objekterkennungsmodell mit YOLOv4 Tiny und TensorFlow Lite – trainieren Sie YOLOv4 tiny Darknet und konvertieren Sie zu tflite, Demo auf Android, mehr Schritte als das direkte Training für tflite
- KI für AG: Maschinelles Produktionslernen für die Landwirtschaft – vollständiger Workflow von der Schulung bis zum Einsatz
- Pytorch unterstützt jetzt offiziell RPihttps://pytorch.org/blog/prototype-features-now-available-apis-for-hardware-accelerated-mobile-and-arm64-builds/
- Hermes ist ein Wildfire-Erkennungssystem, das Computer Vision nutzt und mit NVIDIA Deepstream beschleunigt wird
Cloud-Bereitstellung
Wir wollen eine Lösung, die auch in der Cloud bereitgestellt werden kann, mit minimalen Änderungen im Vergleich zur Edge-Bereitstellung. Ein paar Optionen:
- Als Lambda-Funktion bereitstellen – meiner Erfahrung nach sind die Antwortzeiten lang, bis zu 45 Sekunden
- Stellen Sie es auf einer VM mit benutzerdefiniertem Code bereit, um das Einreihen von Anforderungen in die Warteschlange zu verwalten
- Verwenden Sie Torchserve auf Sagemaker, läuft auf EC2-Instanz. Gut dokumentiert, aber AWS-spezifisch.
- Verwenden Sie einen der Cloud-Anbieter, z. B. AWS Rekognition erkennt Brände
Bildvorverarbeitung und -erweiterung
Roboflow ermöglicht zusätzlich zum einfachen Zuschneiden bis zu drei Arten der Erweiterung pro Datensatz. Wenn wir mit weiteren Erweiterungen experimentieren möchten, können wir uns https://imgaug.readthedocs.io/en/latest/ ansehen.
- Warum Bildvorverarbeitung und -erweiterung wichtig sind
- Die Bedeutung von Unschärfe als Bildvergrößerungstechnik
- Wann Kontrast als Vorverarbeitungsschritt verwendet werden sollte
- Datenerweiterung in YOLOv4
- Warum man Bildern für maschinelles Lernen Rauschen hinzufügen sollte
- Warum und wie man die Erweiterung zufälliger Erntedaten implementiert
- Wann man Graustufen als Vorverarbeitungsschritt verwenden sollte
ML-Metriken
-
Precision
ist die Genauigkeit der Vorhersagen, berechnet als precision = TP/(TP+FP)
oder „Wie viel Prozent der Vorhersagen sind richtig?“ -
Recall
ist die True-Positive-Rate (TPR), berechnet als recall = TP/(TP+FN)
oder „Wie viel Prozent der True-Positives erfasst das Modell?“ - Der
F1 score
(auch F-Score oder F-Maß genannt) ist das harmonische Mittel aus Präzision und Erinnerung, berechnet als F1 = 2*(precision * recall)/(precision + recall)
. Es vermittelt die Balance zwischen Präzision und Rückruf. Ref - Die Falsch-Positiv-Rate (FPR), berechnet als
FPR = FP/(FP+TN)
wird oft gegen Recall/TPR in einer ROC-Kurve aufgetragen, die zeigt, wie der TPR/FPR-Kompromiss mit dem Klassifizierungsschwellenwert variiert. Das Absenken des Klassifizierungsschwellenwerts führt zu mehr echten positiven Ergebnissen, aber auch zu mehr falschen positiven Ergebnissen - Karte, IoU, Präzision und Rückruf werden hier und hier gut erklärt
- IceVision gibt die COCOMetric zurück, insbesondere den
AP at IoU=.50:.05:.95 (primary challenge metric)
, von hier aus typischerweise als „mittlere durchschnittliche Präzision“ (mAP) bezeichnet. -
[email protected]
: die mittlere durchschnittliche Präzision oder Korrektheit jedes Labels unter Berücksichtigung aller Labels. @0.5
legt einen Schwellenwert dafür fest, wie viel des vorhergesagten Begrenzungsrahmens die ursprüngliche Anmerkung überlappt, z. B. „50 % Überlappung“.
Kommentare
- Firenet ist ein SEHR gebräuchlicher Name für Modell, nicht verwenden
Diskussion
- Thread, den ich im fast.ai-Forum gestartet habe
Demo
Das leistungsstärkste Modell kann durch Ausführen der mit Gradio erstellten Demo-App verwendet werden. Siehe demo
Verzeichnis