当前位置: 首页 > article >正文

YOLOv8 Flask整合问题

YOLOv8 Flask整合问题

yolov8 + flask 后代码没有进行推理问题。

Bug model.predict()+pyinstaller+HTTPServer/flask: not executing

yolov8是异步线程调用了,flask打包exe后会应该异步问题,model.predict()不会进行返回,导致没有看着没有执行而已。

Behind the scenes, ultralytics (or one of its dependencies) is using multiprocessing, and if you want to use multiprocessing in a PyInstaller-frozen application, you need to call multiprocessing.freeze_support before making any use of multiprocessing functionality.

In the case of your non-flask example:

from http.server import BaseHTTPRequestHandler, HTTPServer
import json
import cv2
import multiprocessing  # For multiprocessing.freeze_support()
import numpy as np
import base64
import time
from ultralytics import YOLO

class MyServer(BaseHTTPRequestHandler):
    def do_POST(self):
        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.end_headers()

        content_length = int(self.headers['Content-Length'])
        post_data = json.loads(self.rfile.read(content_length))
        img = post_data['img']

        nparr = np.frombuffer(base64.b64decode(img), np.uint8)
        img_np = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
        
        print('starting..')
        model = YOLO('best.pt')
        print('model loaded')
        results = model.predict(source=img_np, show=False, save=False, save_conf=False, show_conf=False, save_txt=False)
        print('model predicted')

        self.wfile.write(bytes(f"ok", "utf-8"))

if __name__ == "__main__":
    multiprocessing.freeze_support()  # <--- Added
    print('starting server..')    
    webServer = HTTPServer(('localhost', 5000), MyServer)
    try:
        webServer.serve_forever()
    except KeyboardInterrupt:
        pass
    finally:
        print('aborted')
        time.sleep(2)
    webServer.server_close()

解决!!!


http://www.kler.cn/a/326279.html

相关文章:

  • C#,图论与图算法,输出无向图“欧拉路径”的弗勒里(Fleury Algorithm)算法和源程序
  • 【C++/控制台】2048小游戏
  • 接口测试-postman(使用postman测试接口笔记)
  • LeetCode 第34题:二分查找+扩展搜索
  • 浙江安吉成新的分布式光伏发电项目应用
  • 分享:osgb倾斜数据转cesium-3dtiles 小工具.
  • Git 使用方法
  • c++泛型编程
  • 【hot100-java】【二叉树的层序遍历】
  • Excel:常用函数
  • vue中异步批量删除列表数据
  • 常用的MySQL日期、时间函数
  • 视频集成与融合项目中需要视频编码,但是分辨率不兼容怎么办?
  • 使用 C++ 实现卷积运算:从理论到实践的详细指南
  • Leetcode 739.42. 每日温度 接雨水 单调栈 C++实现
  • 局部整体(七)利用python绘制圆形嵌套图
  • 2024/9/29周报
  • SpringMVC5-域对象共享数据
  • NIO基础
  • Java集合ArrayList的扩容原理是什么?附源码讲解+举例说明
  • DSPy101
  • 有源滤波器故障怎么处理
  • Redis哨兵模式的搭建以及配置参数简介
  • websocket接收文心一言示例
  • 【系统架构设计师】经典论文:轮软件三层架构设计
  • ClickHouse | 入门