株洲市网站建设_网站建设公司_展示型网站_seo优化
2025/12/18 13:29:55 网站建设 项目流程

        本文介绍基于YOLOv11的目标检测服务系统,包含图片和视频检测两个独立服务。


1️⃣:检测图片脚本(v11)【端口:5002】

import os import json import threading from flask import Flask, request, jsonify from ultralytics import YOLO app = Flask(__name__) class GeneralImageService: def __init__(self): self.model = None self.lock = threading.Lock() self.load_model() def load_model(self): """加载YOLOv11通用模型""" model_path = "/opt/yolov11/models/yolov11n.pt" print(f"【通用图片服务】加载YOLOv11模型: {model_path}") try: if os.path.exists(model_path): self.model = YOLO(model_path) print(f"【通用图片服务】✅ YOLOv11加载成功!") print(f"【通用图片服务】可识别{len(self.model.names)}个类别") # 打印常用类别 common_classes = { 0: 'person', 2: 'car', 5: 'bus', 7: 'truck', 15: 'cat', 16: 'dog', 39: 'bottle', 41: 'cup' } print("【通用图片服务】常用类别ID:") for cls_id, name in common_classes.items(): if cls_id < len(self.model.names): print(f" {cls_id}: {name}") else: print(f"【通用图片服务】❌ 模型文件不存在: {model_path}") self.model = None except Exception as e: print(f"【通用图片服务】❌ 模型加载失败: {e}") self.model = None def predict_general(self, image_path, target_classes=None): """通用检测,支持筛选特定类别""" if self.model is None: return {"error": "Model not loaded", "success": False} try: with self.lock: # 执行推理 results = self.model(image_path, verbose=False) all_detections = [] class_statistics = {} for result in results: for box in result.boxes: cls_id = int(box.cls) class_name = self.model.names[cls_id] if cls_id < len(self.model.names) else f"class_{cls_id}" confidence = float(box.conf) # 如果指定了目标类别,只返回这些类别 if target_classes is not None and cls_id not in target_classes: continue # 统计 class_statistics[class_name] = class_statistics.get(class_name, 0) + 1 all_detections.append({ "class_id": cls_id, "class_name": class_name, "confidence": confidence, "bbox": box.xyxy[0].tolist() # [x1, y1, x2, y2] }) return { "success": True, "detections": all_detections, "statistics": class_statistics, "total_objects": len(all_detections), "image_size": result.orig_shape, "model": "yolov11n", "classes_available": len(self.model.names) } except Exception as e: return {"error": str(e), "success": False} service = GeneralImageService() @app.route('/general/health', methods=['GET']) def general_health(): return jsonify({

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询