使用 Streamlit 与 Ultralytics YOLO26 搭建实时目标检测 Web 应用 📅 发布时间:2026/9/8 23:16:52 👁 浏览次数: 使用 Streamlit 与 Ultralytics YOLO26 搭建实时目标检测 Web 应用【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics本指南讲解如何在 Ultralytics 仓库的solutions模块基础上用 Streamlit 快速搭建一款可在浏览器中运行的实时目标检测 Web 应用。你将掌握如何以命令行一键启动、如何在 Python 脚本中调用solutions.Inference类以及该应用内部视频帧捕获 → YOLO26 推理 → 前后对比展示的完整实现链路并具备按需替换模型、调整置信度与 IoU 阈值、开启目标跟踪等实战能力。简介为什么用 Streamlit 跑 YOLO 实时推理Streamlit 是目前构建数据类 Web 应用最轻量的 Python 框架之一只需编写普通 Python 脚本即可生成包含侧边栏、滑块、下拉框的交互界面。将它与 Ultralytics YOLO26 结合后无需任何前端知识就能在浏览器中获得选择模型 → 启动摄像头 → 实时查看检测结果的完整体验。YOLO26 是当前 Ultralytics 主推的统一实时模型系列在推理速度与精度之间取得平衡覆盖检测detect、实例分割seg、语义分割sem、深度估计depth、姿态估计pose、旋转框检测obb与图像分类cls等任务详见 YOLO26 文档。Streamlit 前端 YOLO26 后端的组合非常适合安防监控、零售客流分析、水产养殖、畜牧监测等需要即时反馈的场景——本仓库已在 水产鱼类检测 等真实案例中验证该模式的可行性。实时推理Live Inference的核心优势即时的实时目标检测直接从摄像头webcam画面进行检测一帧进入、一帧出结果满足需要即时反馈的应用。Streamlit 的前后端刷新机制天然适配边推理边刷新画面的工作流与 Predict 模式 的推理管线可无缝衔接。极低的部署门槛Streamlit 把所有界面控件封装为 Python API用户只需点击Start按钮即可启动推理无需学习 HTML/CSS/JavaScript也无需复杂的环境配置。资源利用高效YOLO26 系列提供 n/s/m/l/x 多种规格普通 CPU/入门 GPU 即可流畅跑通摄像头实时推理配合仓库内的自定义训练模型可把深度学习能力下沉到更广泛的硬件环境。环境准备与安装安装 Ultralytics Python 包应用运行前请确认已安装 Ultralytics 包pip install ultralytics安装 Streamlit 运行时依赖应用底层依赖 Streamlit且要求版本不低于1.29.0。该检查由两处源码共同保障Inference.__init__在实例化时调用check_requirements(streamlit1.29.0)见 streamlit_inference.pyCLI 启动路径同样在 cfg/init.py 中执行checks.check_requirements(streamlit1.29.0)后才会拉起 Streamlit 进程。若本机尚未安装 StreamlitUltralytics 会在启动时提示缺少依赖此时可手动执行pip install streamlit1.29.0快速启动一行命令开启实时推理Ultralytics 已将 Streamlit 实时推理应用内置为solutions子命令。在终端执行yolo solutions inference该命令会启动随 Ultralytics 包分发的默认 Streamlit 界面。你还可以显式指定模型文件yolo solutions inference modelpath/to/model.pt需要查看可用的解决方案命令与参数时执行yolo solutions help从 CLI 实现看cfg/init.pyinference走的是与其他 solution 完全不同的分支它会以subprocess方式调用streamlit run执行包内自带的 streamlit_inference.py并默认携带modelyolo26n.pt参数与--server.headless true服务端配置。因此你通过model传入的路径会被追加为应用脚本的命令行参数最终作为默认模型注入侧边栏。在 Python 脚本中使用 solutions.Inference最小可运行示例from ultralytics import solutions inf solutions.Inference( modelyolo26n.pt, # 可换成任何 Ultralytics 支持的模型YOLO26 各规格或自训练模型 ) inf.inference()注意由于该应用本质是 Streamlit 程序请务必使用 Streamlit 命令运行脚本而不是直接用pythonstreamlit run path/to/file.py自定义模型与其他关键字参数Inference.__init__通过**kwargs接收配置见 streamlit_inference.py并把它们合入内部的temp_dictfrom ultralytics import solutions inf solutions.Inference( modelpath/to/my_custom_model.pt, imgsz640, # 推理输入尺寸默认 640可在构造时覆盖 ) inf.inference()运行后Streamlit 会在默认浏览器中打开应用。页面包含主标题、副标题与侧边栏配置区在侧边栏中选择 YOLO26 模型、调节置信度阈值与 NMS 阈值点击 Start 按钮即可开始实时目标检测。界面操作指南应用启动后页面自上而下依次呈现主标题区web_ui()通过st.markdown(..., unsafe_allow_htmlTrue)注入定制 HTML隐藏 Streamlit 默认菜单并展示 Ultralytics YOLO Streamlit Application 标题与副标题源码见 streamlit_inference.py。侧边栏控制区User Configuration由sidebar()构建从上到下依次为Source输入源下拉框可选webcam默认摄像头索引 0、video上传本地视频、image批量上传图片。Enable Tracking是否跟踪单选框仅在选择webcam或video时出现选 Yes 后推理走model.track()管线。Confidence Threshold 滑块置信度阈值范围0.0 ~ 1.0步长0.01默认0.25。IoU Threshold 滑块非极大值抑制NMS的 IoU 阈值范围0.0 ~ 1.0步长0.01默认0.45。Model 下拉框可选官方各规格模型或构造时传入的自定义模型。Classes 多选框加载模型后列出全部类别名默认勾选前三个类别用于过滤只检测感兴趣的目标。画面展示区对webcam/video输入sidebar()会创建左右两栏分别用于实时显示原帧与标注帧。这些控件的默认值均有明确出处conf 0.25、iou 0.45、imgsz 640在 streamlit_inference.py 的构造器中初始化。工作原理从点击 Start 到实时检测的完整链路应用启动后的初始化流程调用inf.inference()后主流程按顺序执行四个内部方法streamlit_inference.pyweb_ui()—— 初始化页面标题与布局sidebar()—— 渲染侧边栏控件收集source / enable_trk / conf / iou并预创建原帧与标注帧容器source_upload()—— 依据所选输入源准备数据webcam将vid_file_name设为整数0即 OpenCV 默认摄像头video通过file_uploader接收视频写入本地临时文件ultralytics.mp4source_uploadtests/test_solutions.py 有对应单元测试image接收多张图片并写入临时文件供后续逐张推理configure()—— 构建模型下拉列表并加载模型官方模型候选由GITHUB_ASSETS_STEMS过滤生成格式为YOLO26n / YOLO26n-seg / YOLO26n-sem / YOLO26n-depth / YOLO26n-pose / YOLO26n-obb / YOLO26n-cls的组合覆盖 n/s/m/l/x 五种规格见 configure若构造时传入了model会将该自定义模型插入候选列表首位支持直接传入已导出格式的模型以.pt、.onnx、.torchscript、.mlpackage、.engine结尾或包含openvino_model、rknn_model的路径见 configure意味着你可以对 TensorRT、ONNX 等优化后的模型同样执行浏览器端推理模型加载成功后页面顶部出现st.success(Model loaded successfully!)提示随后把全部类别名注入 Classes 多选框。点击 Start 后的逐帧推理循环点击侧边栏 Start 按钮后应用进入主循环inference创建Stop停止按钮并用cv2.VideoCapture(self.vid_file_name)打开视频源逐帧读取cap.read()若读取失败则给出警示并退出若开启跟踪则调用self.model.track(frame, conf..., iou..., classes..., imgsz..., persistTrue)否则调用self.model(frame, conf..., iou..., classes..., imgsz...)用results[0].plot()在帧上绘制边界框、类别标签与置信度生成标注帧通过两个预置容器同步刷新展示左栏org_frame.image(...)显示原始帧右栏ann_frame.image(...)显示标注帧若点击 Stop释放摄像头并停止应用while cap.isOpened()循环结束后同样会释放资源。值得注意的是track()中的persistTrue该参数让跟踪器跨帧保持目标 ID从而支持在后续扩展中叠加跨帧计数、轨迹绘制等高级功能。图片批量推理分支若输入源选择image点击 Start 后会进入image_inference()streamlit_inference.py逐张用cv2.imread读取并展示原图调用模型推理后把results[0].plot()结果并列展示在右侧最后清理临时文件。关键参数速查表参数控件类型默认值取值范围说明source下拉框webcamwebcam/video/image推理输入源enable_trk单选框NoYes/No是否开启目标跟踪仅视频/webcamconf滑块0.250.0 ~ 1.0步长 0.01置信度阈值iou滑块0.450.0 ~ 1.0步长 0.01NMS IoU 阈值model下拉框官方模型或自定义见上文格式推理模型classes多选框默认前 3 类模型类别全集类别过滤imgsz构造参数640正整数推理输入尺寸仅代码可配进阶将应用接入更多 Ultralytics 生态能力在 Solutions 解决方案总览 中Inference是列出的 12 类开箱即用解决方案之一可用于快速制作演示原型。如果你需要生产级能力可参考以下方向扩展替换不同任务的模型把侧边栏模型换成YOLO26n-seg.pt实例分割、YOLO26n-pose.pt姿态估计或自定义数据集训练出的权重solutions.Inference会自动读取模型names更新类别下拉框无需改动代码加入安防告警逻辑检测结果流可接入 Security Alarm 方案 的邮件告警通道开启实时跟踪在侧边栏把 Enable Tracking 选为 Yes推理将自动切换到带persistTrue的跟踪管线为后续叠加计数、轨迹等业务打下基础后台自动加载测试保障仓库在 test_solutions.py 中内置了StreamlitInference的冒烟测试用例运行环境允许图形界面时执行solution_class().inference()并专门为视频上传写临时文件逻辑编写了单元测试 test_streamlit_handle_video_upload_creates_file说明该应用的输入处理已被纳入持续集成验证范围。常见问题FAQ如何用 Streamlit 与 Ultralytics YOLO26 搭建实时目标检测应用步骤非常简单。首先安装依赖pip install ultralytics然后创建脚本以app.py为例from ultralytics import solutions inf solutions.Inference( modelyolo26n.pt, # 也可换成 yolo26s/yolo26m/yolo26l/yolo26x 或自训练模型 ) inf.inference()用 Streamlit 启动streamlit run app.py更详细的界面与参数说明见上文 Streamlit Application Code 一节。用 YOLO26 Streamlit 做实时检测有哪些主要优势无缝实时检测从摄像头画面即可获得高精度实时检测结果界面友好Streamlit 的交互式界面让非技术用户也能一键启动推理部署成本低资源高效YOLO26 经过算法优化可在常规硬件上以较低算力开销保持流畅的实时推理。如何在浏览器中部署 Streamlit 目标检测应用代码编写完成后运行streamlit run path/to/file.py该命令会在默认浏览器打开应用。你可以选择 YOLO26 模型、设置置信度与 NMS 阈值点击按钮即可开始实时检测具体说明见上文启动与配置章节。实时目标检测有哪些典型落地场景安防实时监测未授权闯入等异常行为可与 安全告警系统 联动零售顾客计数、货架管理与库存盘点野生动物与农业水产养殖中的鱼类监测、畜牧场动物监测与作物状态监控更多完整案例可浏览 Ultralytics Solutions。YOLO26 相比 YOLOv5、RCNN 等模型有何优势更快的速度与更高的精度针对实时场景做了联合优化易于使用训练、验证、导出接口高度统一配合solutions.Inference可零前端代码落地为 Web 应用资源效率高同精度目标下计算量更省推理所需硬件门槛更低。完整的模型能力对照表检测/分割/姿态/分类/旋转框各任务与 n/s/m/l/x 各规格的对应关系参见 YOLO26 官方文档。结语通过本指南你已经成功搭建了一个基于 Streamlit 与 Ultralytics YOLO26 的实时目标检测应用既能以yolo solutions inference一条命令启动也能用solutions.Inference类在自己的脚本中深度定制。借助仓库源码中透明的 UI 构建、逐帧推理与跟踪管线你可以随时扩展更多能力——例如录制视频流、保存标注帧或将其与其它计算机视觉分析模块组合构建面向真实业务的端到端解决方案。API 层面的逐方法说明可进一步查阅 solutions.streamlit_inference 参考文档。【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考