ホームページ  >  記事  >  テクノロジー周辺機器  >  YOLOv7 モデルをトレーニングし、AI 火災検知を開発する

YOLOv7 モデルをトレーニングし、AI 火災検知を開発する

王林
王林転載
2023-05-11 13:43:06919ブラウズ

1. データ セットを準備する

データ セットでは、オープン ソース イメージ (合計 6,000 個の火災イメージ) が使用されており、 濃い煙 でマークされています。火災 2 つのカテゴリ。

YOLOv7 モデルをトレーニングし、AI 火災検知を開発する

#火

YOLOv7 モデルをトレーニングし、AI 火災検知を開発する##濃い煙

プロジェクトは

YOLO ##を採用しています# トレーニング。データを

YOLO 形式に変換し、トレーニング セットと検証セットを分離しました。 dataset ディレクトリを参照してください。

2. トレーニングYOLOv7 モデルをトレーニングし、AI 火災検知を開発する

トレーニング プロセスについては、YOLOv7 公式 Web サイトのドキュメントを参照してください。

data/coco.yaml ファイルを変更し、トレーニング データのパスとカテゴリを構成します。

事前トレーニング済みモデル yolov7.pt をダウンロードすると、トレーニングを開始できます

3. 火災監視YOLOv7 モデルをトレーニングし、AI 火災検知を開発する

トレーニング後完了したら、yolov7 ディレクトリの下の run ディレクトリで、生成されたモデル ファイル best.pt を見つけます。

私がトレーニングしたモデルは、fire.pt という名前のソース コードの重みディレクトリに配置されており、直接使用できます。

このモデルを使用して、監視プログラムを開発します。

まず、yolov7 ソース コードを現在のプロジェクトにダウンロードする必要があります。

次に、pytorch をインストールし、pytorch を使用してトレーニング済みの yolov7 モデルを読み込みます。 YOLOv7 モデルをトレーニングし、AI 火災検知を開発する

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

ソース コードには火災ビデオ fire_video.mp4 があり、opencv で読み込んで検出効果をテストできます。

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)

正常に実行されると、効果は記事の冒頭のビデオと同じになります。

リアルタイム検出のために、jetson nano などの組み込み GPU にプロジェクトをデプロイできます。火災発生時に警察に通報できるクラウド通信サービスを開発する。

同時に、ライブ ビデオ ストリームをサーバーに送信するアプリも開発でき、リアルタイムで監視効果を確認し、意思決定に役立てることができます。

4. 困難

実際、火災検知にターゲット検出を使用する場合には、まだいくつかの困難があります。たとえば、干渉サンプルが多数存在するため、誤検出が発生しやすくなります。別の例として、一貫性のない標識は mAP の効率的な計算を妨げます。

したがって、損失関数と精度の計算方法をカスタマイズできればベストです。リコールを例に挙げると、写真内で火災を検出できれば成功とみなされますが、必ずしも炎の数と煙の数を検出する必要はありません。

もちろん、この種のタスクは、必ずしもターゲット検出を通じて実行する必要はありません。友人が分類タスクとセグメント化タスクの使用を提案してくれたので、両方試してみることができると思います。

以上がYOLOv7 モデルをトレーニングし、AI 火災検知を開発するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。