Rumah  >  Artikel  >  Peranti teknologi  >  Latih model YOLOv7 dan bangunkan pengesanan kebakaran AI

Latih model YOLOv7 dan bangunkan pengesanan kebakaran AI

王林
王林ke hadapan
2023-05-11 13:43:06858semak imbas

1. Sediakan set data

Set data menggunakan imej sumber terbuka, sejumlah 6k imej kebakaran, ditandakan dengan dua kategori: ​​浓烟​​​ dan ​​火​​.

Latih model YOLOv7 dan bangunkan pengesanan kebakaran AI

Kebakaran

Latih model YOLOv7 dan bangunkan pengesanan kebakaran AI

Asap Pekat

Projek menggunakan ​​YOLO​​​ latihan, I Data telah ditukar kepada format ​​YOLO​​ dan dibahagikan kepada set latihan dan set pengesahan Lihat direktori ​​dataset​​.

Latih model YOLOv7 dan bangunkan pengesanan kebakaran AI

2 Latihan

Cuma rujuk dokumentasi laman web rasmi YOLOv7 untuk proses latihan.

Ubah suai fail data/coco.yaml dan konfigurasikan laluan dan kategori data latihan.

Muat turun model pra-latihan yolov7.pt, dan kemudian anda boleh memulakan latihan

Latih model YOLOv7 dan bangunkan pengesanan kebakaran AI

3. Pemantauan kebakaran

Selepas latihan selesai, Dalam direktori jalankan di bawah direktori yolov7, cari fail model yang dijana—best.pt.

Model yang saya latih diletakkan dalam direktori pemberat kod sumber, bernama fire.pt, dan anda boleh menggunakannya secara langsung.

Dengan model di tangan, kami boleh menggunakannya untuk membangunkan program pemantauan.

Pertama sekali, anda perlu memuat turun kod sumber yolov7 ke projek semasa.

Latih model YOLOv7 dan bangunkan pengesanan kebakaran AI

Kemudian, pasang pytorch dan gunakan pytorch untuk memuatkan model yolov7 terlatih.

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

Terdapat video kebakaran fire_video.mp4 dalam kod sumber Anda boleh menggunakan opencv untuk membaca video untuk menguji kesan pengesanan.

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)

Selepas operasi berjaya, kesannya akan sama seperti video pada permulaan artikel.

Anda boleh menggunakan projek ke GPU terbenam, seperti jetson nano, untuk pengesanan masa nyata. Membangunkan perkhidmatan komunikasi awan untuk menghubungi polis sekiranya berlaku kebakaran.

Pada masa yang sama, APP juga boleh dibangunkan untuk menghantar kembali strim video langsung ke pelayan APP boleh melihat kesan pemantauan dalam masa nyata dan membantu membuat keputusan.

4. Kesukaran

Malah, masih terdapat beberapa kesukaran dalam menggunakan pengesanan sasaran untuk pengesanan kebakaran. Sebagai contoh, terdapat banyak sampel yang mengganggu, yang boleh membawa kepada pengesanan palsu dengan mudah. Untuk contoh lain, pelabelan yang tidak konsisten menghalang pengiraan mAP yang cekap.

Jadi, adalah lebih baik jika kita boleh menyesuaikan kaedah pengiraan fungsi kehilangan dan ketepatan. Mengambil imbas kembali sebagai contoh, jika kita dapat mengesan kebakaran dalam gambar, ia akan dianggap berjaya, tetapi ia tidak semestinya perlu mengesan berapa banyak api dan berapa banyak asap.

Sudah tentu, tugasan jenis ini tidak semestinya perlu dilakukan melalui pengesanan sasaran. Seorang rakan mencadangkan kepada saya penggunaan tugas klasifikasi dan tugasan segmentasi, dan saya rasa saya boleh mencuba kedua-duanya.

Atas ialah kandungan terperinci Latih model YOLOv7 dan bangunkan pengesanan kebakaran AI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam