news 2026/9/22 4:27:57

【AI】一种基于YOLOv8/v11目标检测模型之检测人体的脚本及服务1️⃣【Ubuntu 22.04】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【AI】一种基于YOLOv8/v11目标检测模型之检测人体的脚本及服务1️⃣【Ubuntu 22.04】

本文介绍了两套基于YOLOv8模型的活体检测服务系统。


1️⃣:一种针对图片YOLO活体检测服务【端口:5000】

  • ① 脚本
import os import json import threading from flask import Flask, request, jsonify from ultralytics import YOLO app = Flask(__name__) class YOLOService: def __init__(self): self.model = None self.lock = threading.Lock() self.load_model() def load_model(self): """加载能检测人和车的模型""" model_path = "/opt/yolov11/models/yolov8n.pt" print(f"【重要】加载新模型: {model_path}") print(f"此模型可检测80类目标,包括人和车") try: if os.path.exists(model_path): self.model = YOLO(model_path) # 打印模型能识别的类别 if hasattr(self.model, 'names'): print(f"模型可识别类别: {self.model.names}") # 找到人和车的ID (COCO数据集中: 0=person, 2=car) print(f"-> 人的类别ID: 0 (person)") print(f"-> 车的类别ID: 2 (car)") print("✅ 模型加载成功!") else: print(f"❌ 错误: 模型文件不存在 {model_path}") print("请运行: cd /opt/yolov11/models && wget -O yolov8n.pt https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8n.pt") self.model = None except Exception as e: print(f"❌ 模型加载失败: {e}") self.model = None def predict_image(self, image_path): """执行推理,只返回人和车""" 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 = [] person_count = 0 car_count = 0 for result in results: for box in result.boxes: cls_id = int(box.cls) conf = float(box.conf) # 只保留人和车 (COCO数据集中: 0=person, 2=car) if cls_id in [0, 2]: class_name = "person" if cls_id == 0 else "car" if cls_id == 0: person_count += 1 else: car_count += 1 all_detections.append({ "class": cls_id, "class_name": class_name, "confidence": conf, "bbox": box.xyxy[0].tolist() # [x1, y1, x2, y2] }) return { "success": True, "detections": all_detections, "statistics": { "total_objects": len(all_detections), "person_count": person_count, "car_count": car_count }, "image_size": result.orig_shape } except Exception as e: return {"error": str(e), "success": False} service = YOLOService() @app.route('/health', methods=['GET']) def health_check(): model_status = "loaded" if service.model is not None else "not loaded" return jsonify({ "status": "healthy", "model_loaded": service.model is not None, "model_name": "yolov8n.pt", "model_path": "/opt/yolov11/models/yolov8n.pt", "detection_classes": "person (人), car (车)" }) @app.route('/predict', methods=['POST']) def predict(): """接收图片路径进行预测""" data = request.json if not data or 'image_path' not in data: return jsonify({"error": "Missing image_path parameter", "success": False}), 400 image_path = data['image_path'] # 验证文件是否存在 if not os.path.exists(image_path): return jsonify({"error": f"File not found: {image_path}", "success": False}), 404 # 执行预测 result = service.predict_image(image_path) return jsonify(result) @app.route('/predict/url', methods=['POST']) def predict_url(): """通过URL推理""" data = request.json if not data or 'image_url' not in data: return jsonify({"error": "Missing image_url parameter", "success": False}), 400 image_url = data['image_url'] result = service.predict_image(image_url) return jsonify(result) if __name__ == '__main__': port = 5000 print(f"✅ YOLO活体检测服务启动!") print(f" 端口: {port}") print(f" 模型: yolov8n.pt (专检测人和车)") print(f" 访问: http://localhost:{port}/health") app.run(host='0.0.0.0', port=port, threaded=True, debug=False)
  • ② 服务
[Unit] Description=YOLOv11 CPU Inference Service After=network.target [Service] Type=simple User=zst Group=zst WorkingDirectory=/opt/yolov11 Environment="PATH=/home/zst/yolov11_venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ExecStart=/home/zst/yolov11_venv/bin/python /opt/yolov11/api/inference_service.py Restart=on-failure RestartSec=5 StandardOutput=journal StandardError=journal SyslogIdentifier=yolov11-service [Install] WantedBy=multi-user.target

2️⃣:一种针对视频YOLO活体检测服务【端口:5001】【以下任选一种脚本】

  • ① 脚本
import os import cv2 import threading import time import json import traceback from flask import Flask, request, jsonify from ultralytics import YOLO app = Flask(__name__) class VideoDetectionService: def __init__(self): self.model = None self.lock = threading.Lock() self.load_model() def load_model(self): """加载正确的模型 - yolov8n.pt""" # 【重要】使用正确的模型路径 model_path = "/opt/yolov11/models/yolov8n.pt" print(f"【视频服务】加载模型: {model_path}") # 检查文件是否存在 if not os.path.exists(model_path): print(f"【视频服务】❌ 错误: 模型文件不存在!") print(f"请运行: wget -O {model_path} https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8n.pt") self.model = None return try: self.model = YOLO(model_path) print(f"【视频服务】✅ 模型加载成功!") print(f"【视频服务】模型信息: {len(self.model.names)}个类别") # 验证模型能检测人和车 if hasattr(self.model, 'names'): print(f"【视频服务】人(person): ID 0") print(f"【视频服务】车(car): ID 2")
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/21 17:23:20

Kotaemon Docker 镜像使用指南:快速启动与定制化

Kotaemon Docker 镜像使用指南:快速启动与定制化 在构建智能问答系统时,你是否经历过这样的场景?团队成员的本地环境各不相同,“在我机器上能跑”的尴尬频发;部署到生产环境后,又因依赖冲突导致服务崩溃&a…

作者头像 李华
网站建设 2026/9/22 1:31:32

Kotaemon WebSocket支持:实现实时对话流传输

Kotaemon WebSocket支持:实现实时对话流传输 在企业级智能客服、虚拟助手和知识管理平台日益普及的今天,用户早已不再满足于“提问—等待—接收完整答案”这种机械式的交互模式。他们期待的是更自然、更流畅的沟通体验——就像与真人对话一样&#xff0c…

作者头像 李华
网站建设 2026/9/21 17:32:09

springboot_vue基于SSM的汉服文化交流商城平台设计_26t5m844

目录已开发项目效果实现截图开发技术介绍系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&…

作者头像 李华
网站建设 2026/9/22 1:49:45

Kotaemon能否提取商业模式要素?创业计划分析工具

Kotaemon能否提取商业模式要素?创业计划分析工具 在创投圈,每天都有成百上千份商业计划书被提交到孵化器、风投机构和企业创新部门。面对这些动辄数十页、充斥着愿景描述与市场预测的文档,如何快速抓住核心——比如目标客户是谁、靠什么赚钱、…

作者头像 李华
网站建设 2026/9/21 19:21:29

Kotaemon房产纠纷解答:买卖租赁常见问题

Kotaemon房产纠纷解答:买卖租赁常见问题 在二手房交易中突然遭遇卖方反悔,或是租客拖欠数月房租却拒不搬离——这类问题几乎每天都在发生。面对复杂的法律条文和漫长的诉讼流程,普通人往往不知所措。而传统客服机器人只能机械回复“请咨询律师…

作者头像 李华
网站建设 2026/9/22 1:19:41

百度百舸持续开源生产级代码,联合 SGLang 社区打造先进 AI Infra

当前,Token 的消耗量呈现出年均百倍增长的态势。国家数据局统计显示,截至今年6月底,我国日均Token消耗量从2024年初的1000亿,已经突破至30万亿,1年半时间增长了300多倍。随着以DeepSeek、Ernie 为代表的 MoE 类推理模型…

作者头像 李华