Yolov/templates/demo/index.html

274 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>多任务YOLO检测系统</title>
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.8/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/bootstrap-icons/1.13.1/font/bootstrap-icons.css">
<link href="css/style.css" rel="stylesheet">
</head>
<body>
<!-- 导航栏 -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="#">
<i class="bi bi-cpu-fill me-2"></i>多任务YOLO检测系统
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link active" href="index.html">
<i class="bi bi-house-door me-1"></i>首页
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="task-management.html">
<i class="bi bi-list-task me-1"></i>任务管理
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="monitoring.html">
<i class="bi bi-graph-up me-1"></i>系统监控
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="video-player.html">
<i class="bi bi-camera-video me-1"></i>视频播放
</a>
</li>
</ul>
</div>
</div>
</nav>
<!-- 主内容区 -->
<div class="container-fluid mt-4">
<div class="row">
<div class="col-md-8 mx-auto">
<!-- 欢迎卡片 -->
<div class="card shadow-lg border-0 mb-4">
<div class="card-body text-center p-5">
<h1 class="display-4 text-primary mb-3">
<i class="bi bi-cpu-fill"></i> 多任务YOLO检测系统
</h1>
<p class="lead text-muted mb-4">
基于YOLOv8/YOLOv5的多模型并行检测系统支持加密模型、实时推流和任务管理
</p>
<div class="d-grid gap-2 d-md-flex justify-content-md-center">
<a href="task-management.html" class="btn btn-primary btn-lg px-4 me-md-2">
<i class="bi bi-play-circle me-2"></i>开始管理任务
</a>
<a href="monitoring.html" class="btn btn-outline-primary btn-lg px-4">
<i class="bi bi-speedometer2 me-2"></i>查看系统状态
</a>
</div>
</div>
</div>
<!-- 功能特性 -->
<div class="row mt-5">
<div class="col-md-4 mb-4">
<div class="card h-100 border-0 shadow-sm">
<div class="card-body text-center">
<div class="feature-icon mb-3">
<i class="bi bi-shield-lock text-primary" style="font-size: 2.5rem;"></i>
</div>
<h5 class="card-title">加密模型保护</h5>
<p class="card-text text-muted">
所有模型文件强制加密存储确保AI模型安全防止未经授权的使用。
</p>
</div>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="card h-100 border-0 shadow-sm">
<div class="card-body text-center">
<div class="feature-icon mb-3">
<i class="bi bi-layers text-primary" style="font-size: 2.5rem;"></i>
</div>
<h5 class="card-title">多模型并行推理</h5>
<p class="card-text text-muted">
支持多个YOLO模型同时运行每个模型独立配置标签、置信度阈值和绘制颜色。
</p>
</div>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="card h-100 border-0 shadow-sm">
<div class="card-body text-center">
<div class="feature-icon mb-3">
<i class="bi bi-broadcast text-primary" style="font-size: 2.5rem;"></i>
</div>
<h5 class="card-title">实时推流与监控</h5>
<p class="card-text text-muted">
支持RTMP/RTSP流输入实时检测结果推流输出提供全面的系统监控。
</p>
</div>
</div>
</div>
</div>
<!-- 快速统计 -->
<div class="card border-0 shadow-sm mt-4">
<div class="card-header bg-white">
<h5 class="mb-0"><i class="bi bi-bar-chart me-2"></i>系统概览</h5>
</div>
<div class="card-body">
<div class="row text-center">
<div class="col-md-3 mb-3">
<div class="stat-card p-3 rounded bg-light">
<h2 class="text-primary" id="activeTasks">3</h2>
<p class="text-muted mb-0">运行中任务</p>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="stat-card p-3 rounded bg-light">
<h2 class="text-success" id="totalModels">8</h2>
<p class="text-muted mb-0">已加载模型</p>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="stat-card p-3 rounded bg-light">
<h2 class="text-warning" id="avgFPS">24.5</h2>
<p class="text-muted mb-0">平均FPS</p>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="stat-card p-3 rounded bg-light">
<h2 class="text-info" id="cpuUsage">42%</h2>
<p class="text-muted mb-0">CPU使用率</p>
</div>
</div>
</div>
</div>
</div>
<!-- 快速操作 -->
<div class="row mt-5">
<div class="col-12">
<h4 class="mb-3">快速操作</h4>
<div class="d-flex flex-wrap gap-2">
<button class="btn btn-outline-primary" id="simulateCreateTask">
<i class="bi bi-plus-circle me-1"></i>模拟创建任务
</button>
<button class="btn btn-outline-success" id="simulateStartAll">
<i class="bi bi-play me-1"></i>模拟启动所有任务
</button>
<button class="btn btn-outline-danger" id="simulateStopAll">
<i class="bi bi-stop-circle me-1"></i>模拟停止所有任务
</button>
<button class="btn btn-outline-info" id="refreshStats">
<i class="bi bi-arrow-clockwise me-1"></i>刷新统计数据
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 页脚 -->
<footer class="bg-dark text-white mt-5 py-4">
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<h5>多任务YOLO检测系统</h5>
<p class="text-light">基于YOLOv8/YOLOv5的实时多模型检测平台</p>
</div>
<div class="col-md-6 text-md-end">
<p class="mb-0">© 2023 多任务YOLO检测系统 | 演示版本 v1.0.0</p>
<p class="text-light small">此页面为演示版本,使用模拟数据</p>
</div>
</div>
</div>
</footer>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.8/js/bootstrap.bundle.min.js"></script>
<script>
// 模拟数据
let stats = {
activeTasks: 3,
totalModels: 8,
avgFPS: 24.5,
cpuUsage: 42
};
// 更新统计数据
function updateStats() {
document.getElementById('activeTasks').textContent = stats.activeTasks;
document.getElementById('totalModels').textContent = stats.totalModels;
document.getElementById('avgFPS').textContent = stats.avgFPS;
document.getElementById('cpuUsage').textContent = stats.cpuUsage + '%';
}
// 模拟创建任务
document.getElementById('simulateCreateTask').addEventListener('click', function() {
stats.activeTasks++;
stats.totalModels += 2;
updateStats();
// 显示成功消息
showNotification('任务创建成功', '成功创建了一个新的检测任务添加了2个模型', 'success');
});
// 模拟启动所有任务
document.getElementById('simulateStartAll').addEventListener('click', function() {
if (stats.activeTasks < 5) {
stats.activeTasks = 5;
updateStats();
showNotification('任务启动成功', '所有任务已成功启动', 'success');
} else {
showNotification('任务已在运行', '所有任务已经在运行中', 'info');
}
});
// 模拟停止所有任务
document.getElementById('simulateStopAll').addEventListener('click', function() {
if (stats.activeTasks > 0) {
stats.activeTasks = 0;
updateStats();
showNotification('任务停止成功', '所有任务已停止', 'warning');
} else {
showNotification('没有运行中的任务', '当前没有运行中的任务', 'info');
}
});
// 刷新统计数据
document.getElementById('refreshStats').addEventListener('click', function() {
// 模拟数据变化
stats.cpuUsage = Math.floor(Math.random() * 30) + 30;
stats.avgFPS = (Math.random() * 10 + 20).toFixed(1);
updateStats();
showNotification('数据已刷新', '系统统计数据已更新', 'info');
});
// 显示通知
function showNotification(title, message, type) {
// 创建通知元素
const notification = document.createElement('div');
notification.className = `alert alert-${type} alert-dismissible fade show position-fixed`;
notification.style.cssText = 'top: 20px; right: 20px; z-index: 1050; min-width: 300px;';
notification.innerHTML = `
<strong>${title}</strong> ${message}
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
`;
document.body.appendChild(notification);
// 3秒后自动移除
setTimeout(() => {
if (notification.parentNode) {
notification.remove();
}
}, 3000);
}
// 初始化
updateStats();
</script>
</body>
</html>