精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 Yolov8 Flask 自定義訓練實時火災和煙霧檢測

人工智能
本文開發了一個專門用于火災和煙霧檢測的自定義訓練YOLOv8模型。用于此訓練的數據集可在Kaggle上找到,如果需要重新訓練模型,訓練腳本也可供使用。

近年來,人工智能和機器學習的進步徹底改變了包括公共安全在內的各個行業。這些技術在火災和煙霧檢測方面取得了顯著進展,這對于早期預警系統和高效的應急響應至關重要。實現這一目標的最有效方法之一是將YOLOv8強大的目標檢測能力與基于Python的輕量級Web框架Flask的靈活性相結合。它們共同構成了一個通過視頻流實現的強大實時火災和煙霧檢測解決方案。

本文開發了一個專門用于火災和煙霧檢測的自定義訓練YOLOv8模型。用于此訓練的數據集可在Kaggle上找到,如果需要重新訓練模型,訓練腳本也可供使用。

數據集:

https://www.kaggle.com/code/deepaknr/yolov8-fire-and-smoke-detection?source=post_page-----79058b024b09--------------------------------

訓練腳本:

實際示例:使用YOLOv8和Flask進行火災和煙霧檢測

假設一個實際場景,您需要監控一個有火災風險的工業場地。通過攝像頭建立實時視頻流并利用YOLOv8模型的火災檢測功能,您可以及早識別火災或煙霧,從而預防潛在的災難。以下是一個Python代碼片段,展示了如何將YOLOv8與Flask集成以實現火災和煙霧檢測。

import os
import cv2
import numpy as np
from flask import Flask, render_template, Response, request
from werkzeug.utils import secure_filename
from ultralytics import YOLO

app = Flask(__name__)

YOLOV8_MODEL_PATH = 'path-to-yolov8-model'

ALLOWED_EXTENSIONS = {'mp4', 'avi', 'mov'}
video_path = None


def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS


model = YOLO(YOLOV8_MODEL_PATH)


@app.route('/')
def index():
    return render_template('index.html')


@app.route('/upload', methods=['POST'])
def upload():
    global video_path
    if 'file' not in request.files:
        return 'No file part', 400

    file = request.files['file']

    if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)
        filepath = os.path.join('uploads', filename)
        file.save(filepath)
        video_path = filepath
        return render_template('index.html')

    return 'Invalid file type', 400


def generate_frames():
    global video_path
    if video_path is None:
        return None
    cap = cv2.VideoCapture(video_path)

    alpha = 0.4
    while True:
        success, frame = cap.read()
        if not success:
            break

        result = model(frame, verbose=False, conf=0.35)[0]

        bboxes = np.array(result.boxes.xyxy.cpu(), dtype="int")
        classes = np.array(result.boxes.cls.cpu(), dtype="int")
        confidence = np.array(result.boxes.conf.cpu(), dtype="float")

        for cls, bbox, conf in zip(classes, bboxes, confidence):
            (x1, y1, x2, y2) = bbox
            object_name = model.names[cls]
            if object_name == 'fire':

                color = (19, 127, 240)
            else:
                color = (145, 137, 132)

            cropped_image = frame[int(y1):int(y2), int(x1):int(x2)]
            white_layer = np.ones(cropped_image.shape, dtype=np.uint8) * 255
            cropped_image = cv2.addWeighted(cropped_image, 1 - alpha, white_layer, alpha, 0)
            frame[int(y1):int(y2), int(x1):int(x2)] = cropped_image
            cv2.rectangle(frame, (x1, y1 -30), (x1 + 200, y1), color, -1)

            cv2.rectangle(frame, (x1, y1), (x2, y2), color, 2)

            cv2.putText(frame, f"{object_name.capitalize()}: {conf * 100:.2f}%", (x1, y1 - 5), cv2.FONT_HERSHEY_DUPLEX,
                        0.8, (255, 255, 255), 1)

        ret, buffer = cv2.imencode('.jpg', frame)
        frame = buffer.tobytes()

        yield (b'--frame\r\n'
               b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')

    cap.release()


@app.route('/video_feed')
def video_feed():
    return Response(generate_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')


if __name__ == '__main__':
    os.makedirs('uploads', exist_ok=True)

    app.run(host='0.0.0.0', port=5000, debug=True)import os
import cv2
import numpy as np
from flask import Flask, render_template, Response, request
from werkzeug.utils import secure_filename
from ultralytics import YOLO

app = Flask(__name__)

YOLOV8_MODEL_PATH = 'path-to-yolov8-model'

ALLOWED_EXTENSIONS = {'mp4', 'avi', 'mov'}
video_path = None


def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS


model = YOLO(YOLOV8_MODEL_PATH)


@app.route('/')
def index():
    return render_template('index.html')


@app.route('/upload', methods=['POST'])
def upload():
    global video_path
    if 'file' not in request.files:
        return 'No file part', 400

    file = request.files['file']

    if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)
        filepath = os.path.join('uploads', filename)
        file.save(filepath)
        video_path = filepath
        return render_template('index.html')

    return 'Invalid file type', 400


def generate_frames():
    global video_path
    if video_path is None:
        return None
    cap = cv2.VideoCapture(video_path)

    alpha = 0.4
    while True:
        success, frame = cap.read()
        if not success:
            break

        result = model(frame, verbose=False, conf=0.35)[0]

        bboxes = np.array(result.boxes.xyxy.cpu(), dtype="int")
        classes = np.array(result.boxes.cls.cpu(), dtype="int")
        confidence = np.array(result.boxes.conf.cpu(), dtype="float")

        for cls, bbox, conf in zip(classes, bboxes, confidence):
            (x1, y1, x2, y2) = bbox
            object_name = model.names[cls]
            if object_name == 'fire':

                color = (19, 127, 240)
            else:
                color = (145, 137, 132)

            cropped_image = frame[int(y1):int(y2), int(x1):int(x2)]
            white_layer = np.ones(cropped_image.shape, dtype=np.uint8) * 255
            cropped_image = cv2.addWeighted(cropped_image, 1 - alpha, white_layer, alpha, 0)
            frame[int(y1):int(y2), int(x1):int(x2)] = cropped_image
            cv2.rectangle(frame, (x1, y1 -30), (x1 + 200, y1), color, -1)

            cv2.rectangle(frame, (x1, y1), (x2, y2), color, 2)

            cv2.putText(frame, f"{object_name.capitalize()}: {conf * 100:.2f}%", (x1, y1 - 5), cv2.FONT_HERSHEY_DUPLEX,
                        0.8, (255, 255, 255), 1)

        ret, buffer = cv2.imencode('.jpg', frame)
        frame = buffer.tobytes()

        yield (b'--frame\r\n'
               b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')

    cap.release()


@app.route('/video_feed')
def video_feed():
    return Response(generate_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')


if __name__ == '__main__':
    os.makedirs('uploads', exist_ok=True)

    app.run(host='0.0.0.0', port=5000, debug=True)

主要函數說明:

  • def generate_frames():此函數從上傳的視頻中提取幀,并利用YOLOv8模型進行目標檢測,特別是針對火災和煙霧等元素。幀上會渲染帶有相應類別標簽(火災、煙霧)的邊界框。為了增強可見性,在檢測到物體的區域應用了半透明的白色覆蓋層。處理后的幀被轉換為JPEG格式,并持續輸出以生成視頻流。
  • def video_feed():此路由使用generate_frames函數將處理后的視頻幀作為HTTP響應流式傳輸。它使用MIME類型multipart/x-mixed-replace向Web客戶端發送JPEG圖像流。

應用程序啟動:

if __name__ == '__main__':
    os.makedirs('uploads', exist_ok=True)
    app.run(host='0.0.0.0', port=5000, debug=True)

如果直接運行腳本,它會確保uploads目錄存在,然后在端口5000上啟動Flask應用程序,并監聽所有接口(0.0.0.0)。


責任編輯:趙寧寧 來源: 小白玩轉Python
相關推薦

2025-02-07 14:52:11

2024-10-16 16:49:44

定向邊界框目標檢測YOLOv8

2024-07-01 12:55:50

2024-10-25 08:30:57

計算機視覺神經網絡YOLOv8模型

2023-01-12 12:20:29

YOLOv8模型

2024-10-10 17:05:00

2024-08-27 12:40:59

2024-07-09 08:50:23

2024-01-29 09:29:02

計算機視覺模型

2024-07-22 13:49:38

YOLOv8目標檢測開發

2024-10-07 11:12:55

2024-11-18 17:31:27

2022-12-08 08:40:38

YOLOv7模型AI

2024-07-11 08:25:34

2024-10-14 17:43:05

2025-02-24 09:50:21

2024-05-15 09:16:05

2025-01-22 11:10:34

2023-12-11 10:18:38

YOLOv8檢測器實戰

2023-02-02 09:00:00

點贊
收藏

51CTO技術棧公眾號

最新热久久免费视频| 亚洲精品极品少妇16p| 精品女同一区二区三区在线播放| 国产精品区二区三区日本| 亚洲 欧美 日韩 综合| 精品午夜久久| 精品捆绑美女sm三区| 日韩久久一级片| 成人福利在线观看视频| 成人美女视频在线观看18| 国产91在线高潮白浆在线观看 | 亚洲图片小说视频| 亚洲天堂偷拍| 在线a欧美视频| 亚洲欧美日韩偷拍| 国产精品白丝久久av网站| 麻豆久久精品| 日韩中文字幕精品| 亚洲制服丝袜在线播放| 四虎精品永久免费| 欧美午夜精品在线| 男女啪啪免费观看| 福利在线视频导航| thepron国产精品| 亚洲一区二区久久久久久久| 免费看毛片网站| 国内激情久久| 美日韩在线视频| 人成免费在线视频| 一区二区三区视频免费观看| 精品99一区二区三区| 国产探花在线看| 奇米777日韩| 午夜a成v人精品| 成人手机在线播放| 免费黄网在线观看| 中文字幕久久午夜不卡| 裸体丰满少妇做受久久99精品| 精品国产乱码久久久久久蜜臀网站| 天堂成人免费av电影一区| 午夜精品一区二区三区视频免费看 | 国产一区二区三区免费不卡| 黄色一级片国产| 高清在线观看av| 91麻豆swag| 国产精选一区二区| www黄色在线观看| 国产美女精品在线| 成人中文字幕在线观看| 亚洲天堂国产精品| 蜜桃91丨九色丨蝌蚪91桃色| 国产成人精彩在线视频九色| 国产午夜性春猛交ⅹxxx| 日韩视频二区| 98精品在线视频| 九九视频在线免费观看| 欧美日韩福利| 欧美激情xxxx| 日本一本高清视频| 夜夜夜久久久| 人人做人人澡人人爽欧美| 成人免费区一区二区三区| 亚洲无线一线二线三线区别av| 欧美激情第6页| 精品无码一区二区三区电影桃花| 国产综合自拍| 欧美一区深夜视频| 日本免费精品视频| 久久电影国产免费久久电影 | 黑人精品无码一区二区三区AV| 国产精品永久| 国产精品99久久久久久www| 青娱乐在线免费视频| 日韩**一区毛片| 成人激情黄色网| 粉嫩av一区二区夜夜嗨| 91视频www| 日韩中文一区| a毛片在线观看| 亚洲丝袜精品| 国产亚洲成aⅴ人片在线观看| 日本精品一区二区| 伊人免费在线| 亚洲一区二区视频在线| 日韩精品视频一区二区在线观看| 欧美xnxx| 日韩精品最新网址| 精品人妻少妇嫩草av无码| 大色综合视频网站在线播放| 美女av一区二区| 一级片中文字幕| 美女视频网站黄色亚洲| www.久久久| 免费播放片a高清在线观看| 国产精品乱码一区二区三区软件| 日韩一区二区高清视频| 久久人体大尺度| 制服丝袜中文字幕亚洲| 在线观看日韩精品视频| 日韩成人激情| 91精品国产高清久久久久久久久 | 日本视频一区在线观看| 婷婷在线视频| 精品国产91久久久| 中文字幕一区二区在线观看视频 | 国产99精品视频| 美日韩精品免费| 二区在线播放| 欧美日韩一区二区精品| 成人不卡免费视频| 九一亚洲精品| 欧美黄色小视频| 国产乱码77777777| 成人精品视频网站| 中文字幕成人一区| 欧美人体一区二区三区| 精品国产乱码久久久久久牛牛 | 亚洲成人动漫精品| 天堂视频免费看| 性生活免费观看视频| 韩国中文免费在线视频| 亚洲香肠在线观看| 中文字幕日韩综合| 国产精选一区| 欧美在线观看视频| 人妻无码一区二区三区久久99| 亚洲三级在线观看| wwwwwxxxx日本| 精品国产乱码久久久| 777777777亚洲妇女| www.国产免费| 亚洲三级在线播放| 国产传媒免费观看| 久久精品国产68国产精品亚洲| 日本久久久久久久久| 四虎永久在线观看| 亚洲二区在线视频| 逼特逼视频在线观看| 午夜久久美女| 91久久精品国产91久久性色tv | 免费看的黄色大片| 成人动态视频| 久久久免费观看| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 欧美成人一级| 久久综合88中文色鬼| 一卡二卡在线观看| 国产精品视频麻豆| 99热这里只有精品在线播放| 日韩欧美大片| 国产精品久久久久久一区二区| 国产在线观看网站| 欧美视频一二三区| 韩国一级黄色录像| 国产一区中文字幕| 日本道在线视频| 亚洲天堂中文字幕在线观看| 欧美黑人极品猛少妇色xxxxx| 亚洲第一大网站| 亚洲国产精品自拍| 素人fc2av清纯18岁| 久久久久欧美精品| 四虎一区二区| 四虎成人精品一区二区免费网站| 久久国内精品一国内精品| 国产免费福利视频| 黄色片网站在线免费观看| 日本aⅴ精品一区二区三区 | 岛国精品视频在线播放| 亚洲av无码一区二区三区观看| 午夜影院日韩| 日本黑人久久| 美国十次综合久久| 国内精品视频在线| 九色视频网站在线观看| 欧美日韩大陆一区二区| 九九视频在线观看| 久久精品在线观看| 中文字幕在线视频精品| 欧美精品一级| 欧美日韩在线一二三 | 成人9ⅰ免费影视网站| √天堂8资源中文在线| 亚洲色图国产精品| 国产免费视频一区二区三区| 无吗不卡中文字幕| 任你操精品视频| 成人综合婷婷国产精品久久| 播放灌醉水嫩大学生国内精品| 青青草国产免费一区二区下载| 99在线观看视频网站| 亚洲天堂av在线| xxx欧美精品| 色视频在线观看免费| 欧美日韩成人在线一区| 日韩大片免费在线观看| 中日韩免费视频中文字幕| 欧美一级大片免费看| 日本午夜精品视频在线观看| 国产91沈先生在线播放| 奇米亚洲欧美| 福利视频一区二区三区| 色是在线视频| 欧美成人第一页| 可以在线观看的av| 精品日产卡一卡二卡麻豆| 国产成人麻豆免费观看| 午夜精品久久久久久| 亚洲精品电影院| 久久精品视频在线看| 亚洲综合伊人久久| 日本不卡视频在线| 国产极品尤物在线| 一区二区电影| 在线一区高清| av永久不卡| 麻豆精品视频| 波多野结衣一区二区三区免费视频| 国产乱码精品1区2区3区| 日本男女交配视频| 日韩在线观看一区| 欧美日韩国产三区| 高清一区二区三区| 97se视频在线观看| 99tv成人影院| 国产精品网站视频| 久久uomeier| 欧美尤物巨大精品爽| 污影院在线观看| 久久精品成人欧美大片| av电影在线观看| 亚洲一区二区黄| 欧美精品a∨在线观看不卡| 亚洲第五色综合网| 亚洲成人一级片| 欧美一区永久视频免费观看| 一级全黄裸体免费视频| 欧美中文字幕亚洲一区二区va在线| 中文字幕亚洲高清| 香蕉久久一区二区不卡无毒影院| 久久国产精品二区| 亚洲欧美日韩人成在线播放| 秋霞欧美一区二区三区视频免费| 欧美国产成人精品| 国产18无套直看片| 国产精品亲子伦对白| 老头老太做爰xxx视频| 久久精品人人做| 精品无码国产污污污免费网站| 91丨porny丨首页| 大又大又粗又硬又爽少妇毛片| 成人的网站免费观看| 中文字幕人妻一区二区三区| av资源站一区| 精品人妻一区二区三区视频| 久久久噜噜噜久久中文字幕色伊伊| 欧美bbbbb性bbbbb视频| 久久中文字幕电影| 亚洲一区二区自偷自拍| 国产午夜精品一区二区三区视频| 免费看91的网站| 自拍偷拍亚洲激情| 色在线观看视频| 亚洲18色成人| 成年人视频免费| 欧美区在线观看| jizz中国少妇| 日韩av一区二区在线观看| 久香视频在线观看| 中文字幕日韩在线播放| av超碰免费在线| 高清欧美电影在线| 黄瓜视频成人app免费| 国产美女直播视频一区| 亚洲精品黑牛一区二区三区| 国产欧美一区二区三区另类精品| 亚洲素人在线| 亚洲制服中文| 欧洲一级精品| 中文字幕一区二区三区在线不卡| 人人人妻人人澡人人爽欧美一区| 中文字幕在线一区| 久久精品99国产精| 黑人巨大精品欧美一区二区一视频| 波多野结衣黄色| 欧美一卡2卡三卡4卡5免费| 四虎免费在线观看| yw.139尤物在线精品视频| 久久五月精品中文字幕| 国产精品1区2区在线观看| 国产精品日本一区二区三区在线| 国内精品视频免费| 日韩片欧美片| 亚洲人精品午夜射精日韩| 免费观看成人鲁鲁鲁鲁鲁视频| 韩国黄色一级片| 国产欧美精品一区| 国产一级在线免费观看| 91福利社在线观看| 高潮毛片7777777毛片| 中文字幕亚洲精品| 成av人片在线观看www| 成人在线播放av| 一区二区三区日本久久久| 国产一区二区三区播放| 蜜臀91精品一区二区三区| 亚洲熟女乱综合一区二区三区| 中文字幕一区二区三中文字幕| 在线观看亚洲天堂| 欧美成人性福生活免费看| 在线观看av黄网站永久| 1769国产精品| 日本免费一区二区视频| 亚洲精品在线视频观看| 国产午夜精品一区二区三区欧美 | 亚洲免费人成在线视频观看| av网站在线免费| 国产精品免费电影| 亚洲人成网站77777在线观看| 亚洲国产一二三精品无码| 久久99久久99小草精品免视看| 久久无码人妻精品一区二区三区| 亚洲精品中文在线影院| 97人妻精品一区二区三区| 一区二区三区天堂av| 波多野结衣亚洲| 精品综合久久| 在线免费高清一区二区三区| 亚洲国产综合av| 最新热久久免费视频| 伊人久久亚洲综合| 影音先锋欧美精品| 亚洲播播91| 日韩免费三级| 久久精品91| 波多野结衣a v在线| 欧美日韩视频免费播放| 少妇人妻精品一区二区三区| 欧美激情女人20p| 亚洲国产中文在线二区三区免| 日本女人高潮视频| 国产精品一区三区| 久久久久亚洲AV成人| 久久三级视频| 日韩免费视频在线观看| 日韩午夜视频在线| 亚洲欧洲日韩综合二区| 免费在线欧美视频| 91制片厂在线| 欧美一级一区二区| 污片在线免费观看| 国产精品久久久久久久小唯西川 | 国产午夜伦鲁鲁| 91视视频在线直接观看在线看网页在线看| 国产精品成人aaaa在线| 亚洲成人免费在线视频| aa视频在线观看| 免费看国产精品一二区视频| 久久久久国产一区二区| 国产一二三四五区| 欧美日韩一区二区三区免费看 | 亚洲视频免费观看| 精品毛片在线观看| 久久人91精品久久久久久不卡 | 国产精品一级在线| 国产在线视频99| 亚洲精品日韩丝袜精品| 国产精品亚洲d| 一区二区三区在线视频看| 国产一区二三区| 精品一区免费观看| 亚洲欧洲偷拍精品| 欧美少妇激情| 91黄色在线看| 国产亚洲精品超碰| 国产绿帽刺激高潮对白| 午夜精品福利视频| 日韩精品一卡| 免费看的av网站| 欧美日韩激情小视频| 北岛玲一区二区三区| 91精品在线影院| 99精品99| 一级黄色片日本| 亚洲精品美女免费| 欧美激情不卡| 丰满少妇久久久| 国产精品久久久一本精品 | 外国成人毛片| 僵尸世界大战2 在线播放| 国产精品三级久久久久三级| a级片免费观看| 日韩av电影中文字幕| 中文字幕亚洲综合久久五月天色无吗'' | 国产精品专区一| 91精品精品| 人人妻人人澡人人爽人人精品| 欧美日韩国产片| 交100部在线观看| 国产麻豆电影在线观看|