YOLO26前端展示:HTML+JS实现检测结果可视化

YOLO26前端展示:HTML+JS实现检测结果可视化

最新 YOLO26 官方版训练与推理镜像
本镜像基于 YOLO26 官方代码库 构建,预装了完整的深度学习开发环境,集成了训练、推理及评估所需的所有依赖,开箱即用。

在完成模型推理后,如何将检测结果以更直观、可交互的方式呈现给用户?本文将带你使用纯 HTML + JavaScript 实现一个轻量级的前端页面,用于可视化 YOLO26 的目标检测结果。无需后端框架,不依赖复杂构建工具,只需几行代码即可部署查看。

1. 前端可视化需求分析

1.1 为什么需要前端展示?

虽然 YOLO26 的 detect.py 能自动生成带框的图片并保存到 runs/detect 目录下,但这些静态图像不利于:

  • 多图批量浏览
  • 检测信息(类别、置信度)的结构化展示
  • 与用户的交互操作(如缩放、点击查看细节)
  • 快速分享或嵌入网页应用

通过一个简单的 HTML 页面,我们可以把推理结果组织成“图像 + 标注数据”的形式,提升可读性和实用性。

1.2 技术选型:为何选择原生 HTML+JS?

  • 零依赖:不需要 Node.js、Vue、React 等复杂生态
  • 易部署:和 runs/detect 文件夹放在一起就能直接打开
  • 跨平台兼容:任何浏览器均可运行
  • 快速调试:修改 JS 即可见效,适合实验性项目

我们只需要:

  • 一张原始图
  • 一个 JSON 文件记录检测框和标签
  • 一段 JS 解析并绘制标注

2. 准备检测结果数据

2.1 修改 detect.py 输出结构化数据

为了让前端能读取检测信息,我们需要让 detect.py 同时输出 JSON 格式的标注文件。

修改后的 detect.py 如下:

# -*- coding: utf-8 -*- """ @Auth :落花不写码 @File :detect.py @IDE :PyCharm @Motto :学习新思想,争做新青年 """ from ultralytics import YOLO import cv2 import json import os if __name__ == '__main__': # 加载模型 model = YOLO(model=r'yolo26n.pt') # 推理 results = model.predict( source=r'./ultralytics/assets', save=True, show=False, conf=0.25 ) # 存储所有结果 output_data = [] for r in results: img_path = r.path img_name = os.path.basename(img_path) # 读取图像尺寸 h, w = r.orig_shape detections = [] for box in r.boxes: cls_id = int(box.cls[0]) label = model.names[cls_id] conf = float(box.conf[0]) xyxy = box.xyxy[0].tolist() # [x1, y1, x2, y2] detections.append({ "class": label, "confidence": round(conf, 3), "bbox": [round(x, 1) for x in xyxy] }) output_data.append({ "image": img_name, "width": w, "height": h, "detections": detections }) # 保存为 JSON 文件 with open("runs/detect/predictions.json", "w", encoding="utf-8") as f: json.dump(output_data, f, indent=2, ensure_ascii=False) print(" 检测结果已保存为 runs/detect/predictions.json") 
运行此脚本后,除了生成带框图像外,还会在 runs/detect/ 下创建 predictions.json,包含每张图的完整检测信息。

2.2 JSON 数据结构示例

[ { "image": "zidane.jpg", "width": 720, "height": 480, "detections": [ { "class": "person", "confidence": 0.998, "bbox": [156.2, 178.3, 308.1, 402.5] } ] } ] 

这个结构清晰明了,前端可以直接解析使用。

3. 构建前端展示页面

3.1 创建 index.html

runs/detect/ 目录下新建 index.html,内容如下:

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <title>YOLO26 检测结果可视化</title> <style> body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; margin: 0; padding: 20px; background: #f5f5f5; } .container { max-width: 1200px; margin: 0 auto; } h1 { text-align: center; color: #333; } .gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; margin-top: 20px; } .item { border: 1px solid #ddd; border-radius: 8px; overflow: hidden; background: white; box-shadow: 0 2px 8px rgba(0,0,0,0.1); } .item img { width: 100%; height: 200px; object-fit: cover; cursor: pointer; } .info { padding: 12px; } .info h3 { margin: 0 0 8px 0; font-size: 16px; } .labels { font-size: 14px; color: #555; line-height: 1.5; } .label-item { display: inline-block; background: #e1f5fe; color: #01579b; padding: 2px 6px; border-radius: 4px; margin-right: 4px; margin-bottom: 4px; font-weight: 500; } .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.9); z-index: 100; justify-content: center; align-items: center; } .modal-content { position: relative; max-width: 90vw; max-height: 90vh; } .modal img { max-width: 100%; max-height: 80vh; border: 2px solid white; } .close { position: absolute; top: 10px; right: 20px; color: white; font-size: 30px; font-weight: bold; cursor: pointer; } </style> </head> <body> <div> <h1>📷 YOLO26 检测结果可视化</h1> <div></div> </div> <!-- 图片放大模态框 --> <div> <div> <span onclick="document.getElementById('modal').style.display='none'">&times;</span> <img alt="放大图" /> </div> </div> <script> // 加载 JSON 数据 fetch('predictions.json') .then(res => res.json()) .then(data => { const gallery = document.getElementById('gallery'); data.forEach(item => { // 创建缩略图项 const div = document.createElement('div'); div.className = 'item'; const img = document.createElement('img'); img.src = item.image; img.alt = item.image; img.onclick = () => { document.getElementById('modal-img').src = item.image; document.getElementById('modal').style.display = 'flex'; }; const info = document.createElement('div'); info.className = 'info'; const title = document.createElement('h3'); title.textContent = item.image; const labels = document.createElement('div'); labels.className = 'labels'; if (item.detections.length === 0) { const span = document.createElement('span'); span.textContent = '未检测到目标'; span.style.color = '#999'; labels.appendChild(span); } else { item.detections.forEach(det => { const tag = document.createElement('span'); tag.className = 'label-item'; tag.textContent = `${det.class} (${det.confidence})`; labels.appendChild(tag); }); } info.appendChild(title); info.appendChild(labels); div.appendChild(img); div.appendChild(info); gallery.appendChild(div); }); }) .catch(err => { console.error("加载 predictions.json 失败:", err); alert("无法加载检测结果,请检查 predictions.json 是否存在"); }); </script> </body> </html> 

3.2 功能说明

功能描述
缩略图网格自动加载所有检测图片,按网格排列
类别标签展示显示每个图像中检测出的对象及其置信度
点击放大点击图片可在模态框中查看高清大图
响应式布局支持手机、平板、桌面多端查看
错误提示若 JSON 加载失败会弹窗提醒

4. 使用方法与效果演示

4.1 部署步骤

  1. 运行修改后的 detect.py,确保生成了 predictions.json
  2. 将上面的 index.html 文件复制到 runs/detect/ 目录下
  3. 双击 index.html 在浏览器中打开(或通过 HTTP 服务访问)
注意:如果双击打不开,可能是浏览器安全策略限制。建议使用 Python 快速启动本地服务器:

然后访问 http://localhost:8000

4.2 实际效果预览

假设你有以下几张测试图:

  • zidane.jpg → 检测到 2 个 person
  • bus.jpg → 检测到 bus, person, tie 等多个对象

前端页面将显示:

  • 每张图的缩略图卡片
  • 下方列出所有检测类别和置信度,例如:person (0.998)tie (0.876)
  • 点击可查看原图
效果预览
🖼 页面简洁美观,适合汇报、演示、内部评审等场景。

5. 扩展功能建议

5.1 添加边界框高亮显示(进阶)

可以在点击图片时,在大图上叠加绘制 bounding box,增强可视化效果。

只需在模态框中加入 <canvas> 层,并根据 bbox 坐标画矩形和文字。

5.2 支持视频帧序列展示

如果你对视频做了逐帧检测,可以把帧命名成 frame_0001.jpg, frame_0002.jpg 并按顺序展示,模拟播放效果。

5.3 增加筛选功能

添加搜索框,支持按类别过滤图片:

<input type="text" placeholder="搜索类别..." oninput="filterImages(this.value)"> 

配合 JS 实现动态隐藏/显示。

5.4 导出报告功能

增加按钮,一键导出当前所有检测结果为 PDF 或 Markdown 表格,便于归档。

6. 总结

6. 总结

本文介绍了一种极简高效的 YOLO26 检测结果前端可视化方案:

  • 无需后端:仅用 HTML + JS 实现完整功能
  • 自动集成:通过修改 detect.py 自动生成 JSON 数据
  • 开箱即用:复制文件即可部署,适合本地调试和成果展示
  • 易于扩展:支持添加标注高亮、筛选、导出等功能

这套方案特别适用于:

  • 学术研究中的结果展示
  • 项目中期/终期汇报
  • 内部测试反馈收集
  • 快速验证模型表现

比起手动截图贴 PPT,这种方式更加系统化、自动化,也更具专业感。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 ZEEKLOG星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Read more

无人机数据集汇总无人机航拍各个方面检测分割数据集合集

本数据集集合了面向无人机视觉任务的大规模、多场景、多目标标注数据资源,涵盖了地理环境、智慧城市、基础设施巡检、农业生产、公共安全与灾害监测等多个关键领域。数据主要以两种主流格式提供:适用于目标检测的VOC/YOLO格式与适用于像素级语义分割的LabelMe格式,为算法开发与模型训练提供了高度结构化的标注支持。 在地理与农业监测方面,包含田地、道路、森林、水体等地理要素的分割数据集,以及作物病害、杂草识别、农田农机、牛羊牲畜等农业目标的检测数据,支持精准农业与生态研究。智慧城市与交通领域提供了丰富的城市街道场景数据,涵盖行人、车辆、交通标志、占道经营、消防通道、广告牌等目标的检测与分割,助力城市智能化管理。基础设施巡检是另一重点,覆盖电力线、光伏板、桥梁、铁路、风力发电机等设备的缺陷与异常检测,以及工地车辆、施工人员、物料垃圾的识别,满足工业自动化巡检需求。在灾害与安全监控中,包含滑坡、洪水、火灾烟雾、河道垃圾、违规建筑等应急场景的检测与分割数据,同时提供了溺水人员、海上救援、军事目标等特殊任务的专项数据集。此外,

Vivado完整license文件获取与配置指南

本文还有配套的精品资源,点击获取 简介:Vivado是由Xilinx开发的FPGA和SoC设计综合工具,支持Verilog、VHDL等硬件描述语言,提供高级综合、仿真、IP集成等功能。本资源包“Vivado_的license文件.zip”包含用于解锁Vivado完整功能的许可证文件。介绍了许可证服务器配置、.lic文件管理、浮动与固定许可证区别、激活流程、更新与诊断等核心内容。适用于FPGA开发者、嵌入式系统工程师及学习者,帮助其合法配置Vivado环境,提升开发效率和项目执行能力。 1. Vivado工具与FPGA开发环境概述 Xilinx Vivado设计套件是面向FPGA和SoC开发的集成化软件平台,广泛应用于通信、工业控制、人工智能、嵌入式视觉等多个高科技领域。其核心功能包括项目创建、综合、实现、仿真、调试及系统级集成,支持从设计输入到硬件验证的全流程开发。 Vivado不仅提供了图形化界面(GUI)便于初学者快速上手,还支持Tcl脚本自动化操作,满足高级用户的大规模工程管理需求。其模块化架构设计使得开发者可以灵活选择所需功能组件,如HLS(高层次综合)、IP In

Stable Diffusion WebUI完全指南:零基础变身AI绘画大师

Stable Diffusion WebUI完全指南:零基础变身AI绘画大师 【免费下载链接】stable-diffusion-webuiAUTOMATIC1111/stable-diffusion-webui - 一个为Stable Diffusion模型提供的Web界面,使用Gradio库实现,允许用户通过Web界面使用Stable Diffusion进行图像生成。 项目地址: https://gitcode.com/GitHub_Trending/st/stable-diffusion-webui 想要用简单的文字创造出惊艳的视觉作品吗?Stable Diffusion WebUI正是实现这个梦想的完美工具。这个基于Gradio库构建的开源项目,让任何人都能轻松驾驭AI图像生成的强大能力。无论你是艺术爱好者、设计师,还是对AI技术充满好奇的普通人,这篇指南都将带你从零开始,快速掌握这个革命性的创作工具。🚀 新手入门:准备工作与环境搭建 系统要求与安装步骤 硬件配置建议表: | 显卡VRAM | 推荐分辨率 | 适用人群 | |----------|---------

WIN11必备!QTTabBar中文优化版保姆级安装教程(含常见问题解决)

WIN11效率革命:深度定制你的资源管理器,不止于多标签 如果你和我一样,每天要在Windows的资源管理器里花费大量时间,那你一定对那种反复在层层文件夹中穿梭、找不到上一个窗口的体验深恶痛绝。系统自带的文件管理工具,就像一个功能简陋的毛坯房,勉强能用,但毫无效率与舒适度可言。尤其是升级到WIN11后,虽然界面更现代,但核心的文件管理逻辑依然停留在上个时代,对于追求效率的用户来说,这无疑是一种巨大的生产力损耗。 这篇文章,就是为那些不愿忍受现状,但又不想投入过多精力去学习复杂新软件的WIN10/WIN11用户准备的。我们不讨论那些需要彻底改变操作习惯的“重型”第三方管理器,而是聚焦于一种更优雅、更无感的解决方案:增强你正在使用的资源管理器本身。今天的主角,是一个经过国内开发者精心“魔改”的经典工具——QTTabBar的中文优化版。它就像给你的文件管理器做了一次精装修,保留了熟悉的格局,却赋予了它全新的、高效的能力。接下来,我将带你从零开始,完成这次效率升级,并深入探讨如何根据你的习惯,将它调校成最趁手的工具。 1. 为什么选择增强,而非替换? 在深入安装细节之前,我们有必要先