كشف الحرائق من الصور
الغرض من هذا الريبو هو عرض نموذج الشبكة العصبية للكشف عن الحرائق. عند الاستخدام، سيضع هذا النموذج مربعًا محيطًا حول أي حريق في الصورة.
أفضل النتائج
الكشف عن الكائنات: بعد تجربة العديد من بنيات النماذج، استقرت على نموذج Yolov5 pytorch (انظر pytorch/object-detection/yolov5/experiment1/best.pt
). بعد بضع ساعات من التجربة، قمت بإنشاء نموذج [email protected]
بقيمة 0.657، ودقة تبلغ 0.6، واستدعاء 0.7، وتم تدريبه على 1155 صورة (337 صورة أساسية + تكبير).
التصنيف: لم أقوم بعد بتدريب النموذج الخاص بي، ولكن تم الإبلاغ عن دقة بنسبة 95% باستخدام ResNet50
التقسيم: يتطلب شرحًا
الدافع والتحديات
تعمل أجهزة كشف الدخان التقليدية عن طريق الكشف عن الوجود المادي لجزيئات الدخان. ومع ذلك، فهي عرضة للاكتشافات الخاطئة (على سبيل المثال من المحامص) ولا تحدد مكان الحريق بشكل جيد. في هذه الحالات، يمكن أن يكون حل الكاميرا مكملاً للكاشف التقليدي، من أجل تحسين أوقات الاستجابة أو توفير مقاييس إضافية مثل حجم الحريق وموقعه. مع تحديد موقع الحريق وطبيعته، قد يكون التدخل الآلي ممكنًا، على سبيل المثال عن طريق نظام الرش أو الطائرة بدون طيار. يمكن أيضًا إرسال البيانات إلى خدمات الإطفاء لتوفير الوعي الظرفي غير الموجود. المواقع المحددة التي أهتم بها هي: المطابخ وغرف المعيشة والجراجات والمباني الملحقة والمناطق التي قد تكون فيها الحرائق موجودة بالفعل ولكنها تنتشر خارج المنطقة المرغوبة، على سبيل المثال حفرة النار.
هناك بعض التحديات الهامة والأسئلة المفتوحة:
- بالنسبة لنموذج الحافة السريعة، ما هي الهندسة المعمارية "الأفضل"؟ يحظى Yolo3 بشعبية كبيرة في التطبيقات التجارية ويمكن تنفيذه في keras أو pytorch، وهو Yolov5 الأساسي لأنه حاليًا SOTA ولديه دليل نشر لـ Jetson.
- هل يمكن تحسين البنية لأننا نكتشف فئة واحدة فقط؟
- الكشف عن الكائنات الأساسية، ولكن هل هناك فائدة للمصنف أو التجزئة؟ تتدرب نماذج Obj على مقاييس mAP وRecall ولكن بالنسبة لدقة المربع المحيط بالتطبيق قد لا تكون ذات أولوية قصوى؟ ومع ذلك، تعمل نماذج التصنيف بشكل أفضل في اللقطة الرائعة التي تحتوي على الكائن المستهدف فقط، ولكن في سيناريوهات إطلاق النار الواقعية، لن يكون المشهد بهذه البساطة مثل هذا السيناريو.
- Tensorflow + google Ecosystem أو Pytorch + NVIDIA/MS؟ Tensorflow يعاني من تراث tf1
- هل يُفضل نموذج واحد "فائق" أم عدة نماذج متخصصة؟ تشمل فئات الحرائق النموذجية لهب الشمعة، والحرائق الداخلية/الخارجية، والمركبات
- جمع أو تحديد موقع مجموعة بيانات تدريبية شاملة وتمثيلية ومتوازنة
- التعامل مع وجهات النظر المختلفة والشركات المصنعة للكاميرات والإعدادات المختلفة وظروف الإضاءة المحيطة المختلفة.
- بما أن النيران ساطعة جدًا لدرجة أنها غالبًا ما تغسل الصور وتسبب اضطرابات بصرية أخرى، فكيف يمكن التعويض عن ذلك؟
- وبما أننا نتوقع أن يكون للنموذج قيود، فكيف نجعل نتائج النموذج قابلة للتفسير؟
- يمكن أن تكون الحرائق في نطاق واسع جدًا من الأحجام، بدءًا من لهب الشمعة وحتى اجتياح غابة بأكملها - هل هذه مشكلة جسم صغير ومشكلة جسم كبير؟ تقسيم مجموعة البيانات حسب فئة النار ونماذج التدريب لكل فئة قد يعطي نتائج أفضل؟ التعامل مع مشكلة التجزئة الدلالية (تتطلب إعادة كتابة مجموعة البيانات)؟
الأفكار:
- المعالجة المسبقة للصور، على سبيل المثال لإزالة الخلفية أو تطبيق المرشحات
- تصنيف تسلسلات الفيديو القصيرة، نظرًا لأن حركة النار مميزة تمامًا
- البيانات المحاكاة، وتحديد أي برنامج يمكنه توليد حرائق واقعية وإضافتها إلى مجموعات البيانات الموجودة
- التعزيزات لمحاكاة تأثير الكاميرات المختلفة وإعدادات التعرض
- تحديد أي توجيهات/تشريعات ذات صلة بشأن الدقة المطلوبة لتقنيات الكشف عن الحرائق
- الجمع بين RGB + الحراري لقمع الإيجابيات الكاذبة؟ على سبيل المثال باستخدام https://openmv.io/blogs/news/introducing-the-openmv-cam-pure-thermal أو شبكة شبكية أو melexsis أرخص
النهج والأدوات
- سيتم تغذية الإطارات من خلال الشبكة العصبية. عند الكشف الإيجابي عن مقاييس الحريق يتم استخراجها. تجاهل الدخان من أجل MVP. جرب بنيات ومعلمات مختلفة لإنشاء نموذج أساسي "جيد".
- قم بتطوير نموذج أقل دقة ولكنه سريع يستهدف RPi والهواتف المحمولة، ونموذج عالي الدقة يستهدف أجهزة GPU مثل Jetson. يقدم Yolo كلا الخيارين، yolo4 lite للجوال وyolo5 لوحدة معالجة الرسومات. وبدلاً من ذلك، يوجد mobilenet وtf-object-detection-api. يعد نموذج GPU عالي الدقة هو الأولوية.
- استخدم Google Colab للتدريب
المقالات والاتفاقات
- Fire_Detection -> نظام الكشف عن الحرائق والدخان باستخدام Jetson nano & Yolov5 مع مجموعة بيانات الصور من gettyimages
- YOLOv5 اكتشاف دخان حرائق الغابات باستخدام Roboflow والأوزان والتحيزات
- Yolov5-Fire-Detection -> نموذج موثق جيدًا تم تدريبه على بيانات kaggle
- اكتشاف الحرائق والدخان باستخدام Keras والتعلم العميق بواسطة pyimagesearch - مجموعة البيانات التي تم جمعها عن طريق استخراج صور Google (توفر رابطًا لمجموعة البيانات التي تحتوي على 1315 صورة للحريق)، وتصنيف ثنائي للحريق/غير النار باستخدام tf2 وkeras CNN المتسلسل، يحقق دقة بنسبة 92%، ويخلص إلى أن مطلوب مجموعات بيانات أفضل
- اكتشاف الحرائق من البداية باستخدام YOLOv3 - يناقش التعليق التوضيحي باستخدام LabelImg، باستخدام Google Drive وColab، والنشر عبر Heroku وباستخدام Streamlit هنا. عمل لديفدارشان ميشرا
- كشف الحرائق والبنادق -> كشف الحرائق والبنادق باستخدام yolov3 في مقاطع الفيديو وكذلك الصور. يتوفر رمز التدريب ومجموعة البيانات وملف الوزن المدرب.
- YOLOv3-Cloud-Based-Fire-Detection -> اكتشاف الكائنات المخصصة باستخدام YOLOv3 على السحابة. تم تدريبه على اكتشاف النار في إطار معين. يمكن استخدامه بشكل كبير في حرائق الغابات وحوادث الحرائق وما إلى ذلك.
- Fire-detect-yolov4 -> التدريب على نموذج Yolo v4
- midasklr/FireSmokeDetectionByEfficientNet - تصنيف واكتشاف الحرائق والدخان باستخدام شبكة الكفاءة، Python 3.7、PyTorch1.3، تصور خريطة التنشيط، وتتضمن نصوص التدريب والاستدلال
- arpit-jadon/FireNet-LightWeight-Network-for-Fire-Detection - نموذج متخصص خفيف الوزن للكشف عن الحرائق والدخان لتطبيقات إنترنت الأشياء في الوقت الفعلي (على سبيل المثال، RPi)، الدقة تقريبًا. 95%. ورقة https://arxiv.org/abs/1905.11922v2
- tobybreckon/fire-detection-cnn - روابط لعدد من مجموعات البيانات
- EmergencyNet - التعرف على الحرائق وحالات الطوارئ الأخرى من طائرة بدون طيار
- اكتشاف الحرائق باستخدام صور الدوائر التلفزيونية المغلقة — تطبيق مكتبة Monk - مُصنف keras على مجموعات بيانات kaggle وmobilenet-v2 وdendennet121 وdendennet201
- Fire-detection-CNN - الكشف التلقائي عن مناطق البكسل الناري في صور الفيديو (أو الثابتة) ضمن حدود الوقت الفعلي. يمكن تحقيق دقة قصوى تبلغ 0.93 للكشف عن الحرائق الثنائية للصورة بأكملها (1)، مع دقة تبلغ 0.89 ضمن إطار توطين البكسل الفائق الخاص بنا.
- نظام الكشف المبكر عن الحرائق باستخدام التعلم العميق وOpenCV - بنيات InceptionV3 وCNN المخصصة للكشف عن الحرائق الداخلية والخارجية. 980 صورة للتدريب و239 صورة للتحقق، دقة التدريب 98.04 ودقة التحقق 96.43، openCV يستخدم للكشف المباشر على كاميرا الويب - الكود ومجموعات البيانات (المشار إليها بالفعل هنا) على https://github.com/jackfrost1411/fire- كشف
- كشف الدخان باستخدام Tensorflow 2.2 - EfficientDet-D0، 733 صورة دخان توضيحية، مذكورة في مدونة Roboflow
- مجموعة بيانات الصور الجوية للكشف عن الحرائق: التصنيف والتجزئة باستخدام المركبات الجوية بدون طيار (UAV) - مصنف ثنائي، دقة 76% في مجموعة الاختبار
- نظام الكشف عن حرائق الغابات يعتمد على التعلم الجماعي -> أولاً، تم دمج اثنين من المتعلمين الفرديين Yolov5 وEfficientDet لإنجاز عملية الكشف عن الحرائق. ثانيًا، يكون المتعلم الفردي الآخر EfficientNet مسؤولاً عن تعلم المعلومات العالمية لتجنب الإيجابيات الكاذبة
- نظام إنذار للحريق مع نموذج تصنيف متعدد الملصقات تم شرحه بواسطة GradCAM -> استخدم CAM لتصور منطقة الصورة المسؤولة عن التنبؤ، ويستخدم البيانات الاصطناعية لملء الفئات الناقصة لجعل توزيع الفئات متوازنًا
- تدريب نموذج fast.ai ونشره عبر تطبيق Gradio
- Deepfire -> إجراء التعرف على حرائق الغابات على الطائرات بدون طيار باستخدام ResNet50 وEfficientNetB7
- Wildfire-Smoke-Detection -> نموذج الشبكة العصبية التلافيفية استنادًا إلى بنية Faster-RCNN للكشف عن دخان حرائق الغابات
- FireNet-LightWeight-Network-for-Fire-Detection -> نموذج متخصص خفيف الوزن للكشف عن الحرائق والدخان لتطبيقات إنترنت الأشياء في الوقت الفعلي باستخدام ورق ArXiv
- أبحاث-كشف دخان حرائق الغابات -> الكشف المبكر عن دخان حرائق الغابات باستخدام الورق
مجموعات البيانات
- فاير نت - تقريبًا. 500 صورة نارية مع مربعات محيطة بتنسيق Pascal voc XML. يحتوي الريبو على نموذج Yolo3 مُدرب باستخدام imageai، أداء غير معروف. ومع ذلك، فإن الصور الصغيرة تبلغ 275 × 183 بكسل في المتوسط، مما يعني أن هناك ميزات تركيبية أقل يمكن للشبكة تعلمها.
- كشف الحرائق من CCTV على Kaggle - الصور والفيديو، يتم استخراج الصور من الفيديو، وهي مجموعة بيانات صغيرة نسبيًا مع جميع الصور مأخوذة فقط من 3-4 مقاطع فيديو. مناسب تمامًا للمهمة الحالية كما هو الحال مع مقاطع الفيديو التي يمكن اختبارها. تم تنظيم مجموعة البيانات لمهمة التصنيف العادية/الدخان/النار، بدون تعليقات توضيحية للمربع المحيط
- cair/Fire-Detection-Image-Dataset - تحتوي مجموعة البيانات هذه على العديد من الصور العادية و111 صورة بالنار. مجموعة البيانات غير متوازنة إلى حد كبير للرد بالمثل على مواقف العالم الحقيقي. الصور ذات حجم لائق ولكنها غير مشروحة.
- مجموعة بيانات الكشف عن الحرائق mivia - تقريبًا. 30 فيديو
- كشف الدخان التابع لـ USTC - روابط لمصادر مختلفة توفر مقاطع فيديو للدخان
- يمكن تنزيل مجموعة بيانات النار/عدم إطلاق النار في مقالة pyimagesearch. لاحظ أن هناك العديد من صور مشاهد الحرائق التي لا تحتوي على حريق فعلي، بل منازل محترقة على سبيل المثال.
- مجموعة بيانات FIRE على Kaggle - 755 صورة نار خارجية و244 صورة غير حريق. الصور ذات حجم لائق ولكنها غير مشروحة
- مجموعة بيانات صور الحرائق لدراسة Dunnings 2018 - مجموعة الصور الثابتة بتنسيق PNG
- مجموعة بيانات صور Fire Superpixel لدراسة Samarth 2019 - مجموعة صور ثابتة PNG
- مجموعة بيانات Wildfire Smoke - 737 صورة توضيحية (محاطة بمربع).
- مجموعة البيانات بواسطة jackfrost1411 -> عدة مئات من الصور المصنفة إلى نار/محايدة لمهمة التصنيف. لا توجد تعليقات توضيحية للمربع المحيط
- مجموعة بيانات النار والدخان على Kaggle -> أكثر من 7000 صورة، تتكون من 691 صورة لهب فقط، و3721 صورة دخان فقط، و4207 صورة نار {لهب ودخان}
- مجموعة بيانات الحرائق والدخان المحلية -> تقريبًا. 5000 صورة فريدة، فئة 2 (نار ودخان)، تعليقات توضيحية للمربع المحيط، تنسيقات COCO وPASCAL VOC وYOLO
- مجموعة بيانات Kaggle للنار والبندقية
- Wildfire-Detection -> مجموعة بيانات من PerceptiLabs، صور بحجم 250 × 250 بكسل تصور مشاهد عادية وتلك التي تحتوي على حرائق. مع المادة. إنها مجموعة البيانات هذه من kaggle
- DFireDataset -> مجموعة بيانات الصورة للكشف عن الحرائق والدخان
مراجع السلامة من الحرائق
- حدد موقع المرجع الذي يغطي أنواع الحرائق المختلفة في المنزل والسيناريوهات والتدخلات الشائعة
- معايير السلامة/الدقة لأجهزة الكشف عن الحرائق، بما في ذلك خصائص ROC
حرائق في المنزل
- الأسباب الشائعة بما في ذلك ترك السجائر مشتعلة، والشموع، والأعطال الكهربائية، وحرائق رقائق البطاطس
- هناك عدد كبير من العوامل التي تؤثر على طبيعة الحريق، في المقام الأول الوقود والأكسجين، ولكن أيضًا مكان الحريق، وسط الغرفة/ مقابل الجدار، والسعة الحرارية للغرفة، والجدران، ودرجة الحرارة المحيطة، والرطوبة، والملوثات الموجودة على المادة (الغبار، المنتجات الزيتية، المطريات، إلخ)
- لإخماد حريق، يتم أخذ عدد من المثبطات في الاعتبار - الماء (وليس على الأجهزة الكهربائية أو مقلاة الرقائق)، والرغوة، وثاني أكسيد الكربون، والمسحوق الجاف
- في الحرائق الكهربائية يجب أولاً عزل مصدر الكهرباء
- إن تقليل التهوية، على سبيل المثال عن طريق إغلاق الأبواب، سيحد من نشوب الحرائق
- الدخان في حد ذاته مؤشر قوي على طبيعة النار
- اقرأ https://en.m.wikipedia.org/wiki/Fire_triangle و https://en.m.wikipedia.org/wiki/Combustion
نشر الحافة
إن هدفنا النهائي المتمثل في النشر على جهاز متطور (RPi أو jetson nano أو android أو ios) سيؤثر على القرارات المتعلقة بالهندسة المعمارية والمقايضات الأخرى.
- انشر YOLOv5 على Jetson Xavier NX بمعدل 30 إطارًا في الثانية - الاستدلال عند 30 إطارًا في الثانية
- كيفية تدريب YOLOv5 على مجموعة بيانات مخصصة
- تدريب YOLOv4-tiny على البيانات المخصصة - اكتشاف الكائنات بسرعة البرق
- كيفية تدريب نموذج مخصص للكشف عن الكائنات TensorFlow Lite - دفتر colab، MobileNetSSDv2، النشر إلى RPi
- كيفية تدريب نموذج مخصص للكشف عن الكائنات المحمولة باستخدام YOLOv4 Tiny وTensorFlow Lite - تدريب YOLOv4 tiny Darknet والتحويل إلى tflite، عرض توضيحي على نظام Android، خطوات أكثر من التدريب مباشرة على tflite
- الذكاء الاصطناعي لـ AG: إنتاج التعلم الآلي للزراعة - سير العمل الكامل بدءًا من التدريب وحتى النشر
- تدعم Pytorch الآن رسميًا RPihttps://pytorch.org/blog/prototype-features-now-available-apis-for-hardware-accelerated-mobile-and-arm64-builds/
- Hermes هو نظام للكشف عن Wildfire يستخدم Computer Vision ويتم تسريعه باستخدام NVIDIA Deepstream
نشر السحابة
نريد حلاً يمكن نشره أيضًا على السحابة، مع الحد الأدنى من التغييرات مقارنة بالنشر على الحافة. زوجان من الخيارات:
- النشر كدالة لامدا - في تجربتي، تكون أوقات الاستجابة طويلة، وتصل إلى 45 ثانية
- النشر على جهاز افتراضي باستخدام رمز مخصص للتعامل مع قائمة انتظار الطلبات
- استخدم torchserve على sagemaker، ويعمل على مثيل EC2. موثق جيدًا ولكن AWS محدد.
- استخدم أحد موفري الخدمات السحابية، على سبيل المثال، سوف يقوم AWS Rekognition بالتعرف على الحرائق
معالجة الصور وتكبيرها
يسمح Roboflow بما يصل إلى 3 أنواع من التعزيز لكل مجموعة بيانات، بالإضافة إلى الاقتصاص الأساسي. إذا أردنا تجربة المزيد من التعزيزات، فيمكننا التحقق من https://imgaug.readthedocs.io/en/latest/
- لماذا تعتبر المعالجة المسبقة للصورة وتكبيرها أمرًا مهمًا
- أهمية التمويه كتقنية لتكبير الصورة
- متى يتم استخدام التباين كخطوة معالجة مسبقة
- زيادة البيانات في YOLOv4
- لماذا يجب إضافة التشويش إلى الصور للتعلم الآلي
- لماذا وكيف يتم تنفيذ زيادة بيانات المحاصيل العشوائية
- متى يتم استخدام التدرج الرمادي كخطوة معالجة مسبقة
مقاييس تعلم الآلة
-
Precision
هي دقة التنبؤات، ويتم حسابها على أنها precision = TP/(TP+FP)
أو "ما هي النسبة المئوية للتنبؤات الصحيحة؟" -
Recall
هو المعدل الإيجابي الحقيقي (TPR)، ويتم حسابه على النحو التالي: recall = TP/(TP+FN)
أو "ما هي النسبة المئوية للإيجابيات الحقيقية التي يلتقطها النموذج؟" -
F1 score
(وتسمى أيضًا درجة F أو مقياس F) هي المتوسط التوافقي للدقة والاستدعاء، ويتم حسابها كـ F1 = 2*(precision * recall)/(precision + recall)
. فهو ينقل التوازن بين الدقة والاستدعاء. المرجع - غالبًا ما يتم رسم المعدل الإيجابي الكاذب (FPR)، المحسوب كـ
FPR = FP/(FP+TN)
مقابل الاستدعاء/TPR في منحنى ROC الذي يوضح كيف تختلف مقايضة TPR/FPR مع عتبة التصنيف. يؤدي خفض عتبة التصنيف إلى إرجاع المزيد من النتائج الإيجابية الحقيقية، ولكن أيضًا المزيد من النتائج الإيجابية الخاطئة - يتم شرح كل من mAP وIoU والدقة والاستدعاء بشكل جيد هنا وهنا
- تقوم IceVision بإرجاع COCOMetric، وتحديدًا
AP at IoU=.50:.05:.95 (primary challenge metric)
، من هنا، والذي يشار إليه عادةً باسم "متوسط الدقة" (mAP) -
[email protected]
: متوسط متوسط الدقة أو الصحة لكل تسمية مع الأخذ في الاعتبار جميع التصنيفات. @0.5
يعين حدًا لمقدار تداخل المربع المحيط المتوقع مع التعليق التوضيحي الأصلي، أي "تداخل بنسبة 50%"
تعليقات
- Firenet هو اسم شائع جدًا للنموذج، فلا تستخدمه
مناقشة
- لقد بدأت الموضوع في منتدى fast.ai
تجريبي
يمكن استخدام النموذج الأفضل أداءً عن طريق تشغيل التطبيق التجريبي الذي تم إنشاؤه باستخدام Gradio. انظر الدليل demo