效果展示
登录界面

主界面

基于 YOLO11 的目标检测系统,支持图片、视频和实时摄像头检测,集成 DeepSeek AI 分析功能。
功能特性
- 图片目标检测
- 视频文件检测
- 实时摄像头检测
- DeepSeek AI 智能分析
- 可调节的检测参数(置信度、IoU)
- 美观的用户界面
【测试环境】
windows10
anaconda3+python3.10
torch2.3.1
ultralytics8.4.7
Django5.2.11
onnxruntime1.17.0
【模型可以检测出45类别】
"i2","i2r","i4","i4l","i5","il60","il80","il100","ip","p3","p5","p6","p10","p11","p12","p13","p19","p23","p26","p27","pg","ph4","ph4.5","ph5","pl5","pl20","pl30","pl40","pl50","pl60","pl70","pl80","pl100","pl120","pm20","pm30","pm55","pn","pne","pr40","w13","w32","w55","w57","w59"
【训练数据集介绍】
数据集格式:YOLO格式(仅仅包含jpg图片以及对应的yolo格式txt文件,已划分好训练验证测试集)
图片数量(jpg文件个数):9720
标注数量(xml文件个数):9720
标注数量(txt文件个数):9720
标注类别数:45
标注类别名称(注意yolo格式类别顺序不和这个对应,而以提供data.yaml类别顺序为准):["i2","i2r","i4","i4l","i5","il60","il80","il100","ip","p3","p5","p6","p10","p11","p12","p13","p19","p23","p26","p27","pg","ph4","ph4.5","ph5","pl5","pl20","pl30","pl40","pl50","pl60","pl70","pl80","pl100","pl120","pm20","pm30","pm55","pn","pne","pr40","w13","w32","w55","w57","w59"]
每个类别标注的框数:
i2 框数 = 471
i2r 框数 = 429
i4 框数 = 812
i4l 框数 = 335
i5 框数 = 1734
il60 框数 = 132
il80 框数 = 488
il100 框数 = 296
ip 框数 = 354
p3 框数 = 374
p5 框数 = 1580
p6 框数 = 189
p10 框数 = 379
p11 框数 = 128
p12 框数 = 296
p13 框数 = 839
p19 框数 = 134
p23 框数 = 173
p26 框数 = 421
p27 框数 = 116
pg 框数 = 157
ph4 框数 = 121
ph4.5 框数 = 186
ph5 框数 = 121
pl5 框数 = 670
pl20 框数 = 298
pl30 框数 = 164
pl40 框数 = 639
pl50 框数 = 1409
pl60 框数 = 537
pl70 框数 = 1071
pl80 框数 = 834
pl100 框数 = 148
pl120 框数 = 901
pm20 框数 = 156
pm30 框数 = 106
pm55 框数 = 139
pn 框数 = 3172
pne 框数 = 2383
pr40 框数 = 201
w13 框数 = 130
w32 框数 = 123
w55 框数 = 179
w57 框数 = 418
w59 框数 = 231
总框数:24174
使用标注工具:labelImg
标注规则:对类别进行画矩形框
重要说明:暂无
特别声明:本数据集不对训练的模型或者权重文件精度作任何保证,数据集只提供准确且合理标注
图片预览:

【训练信息】
参数=值
训练集图片数=6793
验证集图片数=1931
训练map=64.3%
训练精度(Precision)=68.4%
训练召回率(Recall)=58.5%
【验证集精度统计】
| Class | Images | Instances | P | R | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|
| all | 1931 | 4797 | 0.684 | 0.585 | 0.643 | 0.459 |
| i2 | 87 | 87 | 0.72 | 0.649 | 0.756 | 0.472 |
| i2r | 91 | 91 | 0.781 | 0.681 | 0.754 | 0.513 |
| i4 | 154 | 164 | 0.833 | 0.67 | 0.788 | 0.493 |
| i4l | 73 | 74 | 0.82 | 0.676 | 0.774 | 0.537 |
| i5 | 325 | 346 | 0.91 | 0.761 | 0.879 | 0.558 |
| il60 | 69 | 91 | 0.819 | 0.894 | 0.919 | 0.7 |
| il80 | 53 | 59 | 0.707 | 0.859 | 0.872 | 0.663 |
| il100 | 28 | 28 | 0.831 | 0.703 | 0.88 | 0.664 |
| ip | 60 | 70 | 0.731 | 0.543 | 0.65 | 0.318 |
| p3 | 30 | 30 | 0.82 | 0.6 | 0.697 | 0.522 |
| p5 | 76 | 79 | 0.765 | 0.646 | 0.703 | 0.523 |
| p6 | 23 | 23 | 0.563 | 0.392 | 0.513 | 0.447 |
| p10 | 69 | 71 | 0.579 | 0.577 | 0.574 | 0.44 |
| p11 | 313 | 315 | 0.749 | 0.622 | 0.713 | 0.459 |
| p12 | 36 | 36 | 0.489 | 0.389 | 0.331 | 0.255 |
| p13 | 52 | 82 | 0.664 | 0.598 | 0.634 | 0.379 |
| p19 | 24 | 24 | 0.539 | 0.487 | 0.508 | 0.409 |
| p23 | 60 | 61 | 0.734 | 0.574 | 0.668 | 0.493 |
| p26 | 163 | 172 | 0.685 | 0.616 | 0.692 | 0.499 |
| p27 | 29 | 29 | 0.425 | 0.379 | 0.368 | 0.282 |
| pg | 29 | 29 | 0.954 | 0.621 | 0.756 | 0.523 |
| ph4 | 22 | 23 | 0.67 | 0.529 | 0.584 | 0.454 |
| ph4.5 | 31 | 35 | 0.694 | 0.713 | 0.693 | 0.542 |
| ph5 | 21 | 24 | 0.439 | 0.208 | 0.294 | 0.198 |
| pl5 | 75 | 110 | 0.657 | 0.473 | 0.533 | 0.336 |
| pl20 | 31 | 33 | 0.598 | 0.0904 | 0.202 | 0.138 |
| pl30 | 122 | 124 | 0.606 | 0.5 | 0.55 | 0.413 |
| pl40 | 277 | 286 | 0.69 | 0.476 | 0.611 | 0.421 |
| pl50 | 209 | 210 | 0.579 | 0.471 | 0.527 | 0.377 |
| pl60 | 170 | 174 | 0.526 | 0.575 | 0.564 | 0.441 |
| pl70 | 28 | 28 | 0.696 | 0.573 | 0.597 | 0.478 |
| pl80 | 158 | 165 | 0.713 | 0.661 | 0.713 | 0.52 |
| pl100 | 76 | 131 | 0.813 | 0.797 | 0.883 | 0.689 |
| pl120 | 47 | 59 | 0.679 | 0.79 | 0.781 | 0.607 |
| pm20 | 26 | 26 | 0.629 | 0.538 | 0.66 | 0.498 |
| pm30 | 17 | 17 | 0.251 | 0.412 | 0.252 | 0.217 |
| pm55 | 31 | 32 | 0.662 | 0.675 | 0.72 | 0.583 |
| pn | 603 | 633 | 0.901 | 0.736 | 0.829 | 0.526 |
| pne | 429 | 471 | 0.92 | 0.779 | 0.876 | 0.537 |
| pr40 | 37 | 37 | 0.82 | 0.892 | 0.945 | 0.785 |
| w13 | 27 | 27 | 0.455 | 0.333 | 0.354 | 0.242 |
| w32 | 23 | 23 | 0.678 | 0.261 | 0.349 | 0.175 |
| w55 | 43 | 43 | 0.531 | 0.512 | 0.513 | 0.364 |
| w57 | 77 | 82 | 0.648 | 0.718 | 0.737 | 0.514 |
| w59 | 43 | 43 | 0.803 | 0.663 | 0.742 | 0.455 |
安装依赖
bash
pip install -r requirements.txt
数据库迁移
bash
python manage.py makemigrations
python manage.py migrate
运行项目
bash
python manage.py runserver
默认登录信息
- 用户名: admin
- 密码: admin
项目主要文件结构
yolo11-django-deepseek-det-system/
├── manage.py # Django 管理脚本
├── yolo_detection/ # 项目配置目录
│ ├── __init__.py
│ ├── settings.py # 项目设置
│ ├── urls.py # 主 URL 配置
│ └── wsgi.py # WSGI 配置
├── detection/ # 检测应用
│ ├── __init__.py
│ ├── apps.py # 应用配置
│ ├── forms.py # 表单定义
│ ├── models.py # 数据模型
│ ├── urls.py # 应用 URL 配置
│ └── views.py # 视图函数
├── templates/ # 模板目录
├── test_img/ # 测试图片目录
│ ├── index.html # 主页面
│ └── login.html # 登录页面
├── static/ # 静态文件目录
├── media/ # 媒体文件目录
│ └── uploads/ # 上传文件目录
├── requirements.txt # 依赖列表
├── weights/ # 模板目录
│ ├── yolov11n.onnx # 模型文件
│ └── results.png # 训练日志图片
│ ├── class_names # 模型类别文件
│ └── 模型说明.txt # 训练简单介绍和训练过程map0.5参数
技术栈
- Django 4.2+
- YOLO11 (Ultralytics)
- OpenCV
- DeepSeek API
- Chart.js
- HTML5/CSS3/JavaScript
注意事项
- 确保
yolov11n.onnx模型文件在项目weights目录 - DeepSeek API 密钥需要在
settings.py中配置 - 建议使用 Python 3.8+
常用评估参数介绍
在目标检测任务中,评估模型的性能是至关重要的。你提到的几个术语是评估模型性能的常用指标。下面是对这些术语的详细解释:
Class:
这通常指的是模型被设计用来检测的目标类别。例如,一个模型可能被训练来检测车辆、行人或动物等不同类别的对象。
Images:
表示验证集中的图片数量。验证集是用来评估模型性能的数据集,与训练集分开,以确保评估结果的公正性。
Instances:
在所有图片中目标对象的总数。这包括了所有类别对象的总和,例如,如果验证集包含100张图片,每张图片平均有5个目标对象,则Instances为500。
P(精确度Precision):
精确度是模型预测为正样本的实例中,真正为正样本的比例。计算公式为:Precision = TP / (TP + FP),其中TP表示真正例(True Positives),FP表示假正例(False Positives)。
R(召回率Recall):
召回率是所有真正的正样本中被模型正确预测为正样本的比例。计算公式为:Recall = TP / (TP + FN),其中FN表示假负例(False Negatives)。
mAP50:
表示在IoU(交并比)阈值为0.5时的平均精度(mean Average Precision)。IoU是衡量预测框和真实框重叠程度的指标。mAP是一个综合指标,考虑了精确度和召回率,用于评估模型在不同召回率水平上的性能。在IoU=0.5时,如果预测框与真实框的重叠程度达到或超过50%,则认为该预测是正确的。
mAP50-95:
表示在IoU从0.5到0.95(间隔0.05)的范围内,模型的平均精度。这是一个更严格的评估标准,要求预测框与真实框的重叠程度更高。在目标检测任务中,更高的IoU阈值意味着模型需要更准确地定位目标对象。mAP50-95的计算考虑了从宽松到严格的多个IoU阈值,因此能够更全面地评估模型的性能。
这些指标共同构成了评估目标检测模型性能的重要框架。通过比较不同模型在这些指标上的表现,可以判断哪个模型在实际应用中可能更有效。
常见问题
目标检测训练中,Mean Average Precision(MAP)偏低可能有以下原因:
原因一:欠拟合:如果训练数据量过小,模型可能无法学习到足够的特征,从而影响预测效果,导致欠拟合,进而使MAP偏低。因此可以加大数据集数量
原因二:小目标:如果数据集包含大部分小目标则一般会有可能产生map偏低情况,因为小目标特征不明显,模型很难学到特征。
原因三:模型调参不对:比如学习率调整过大可能会导致学习能力过快,模型参数调节出现紊乱
原因四:过拟合(现在模型基本不存在这种情况):如果模型在训练数据上表现非常好,但在验证或测试数据上表现较差,可能是出现了过拟合。这通常是因为模型参数过多,而训练数据量相对较小,导致模型学习到了训练数据中的噪声或特定模式,而无法泛化到新的数据。如今现在目标检测模型都对这个情况做的很好,很少有这种情况发生。
原因五:场景不一样:验证集验证精度高,测试集不行,则有可能是与训练模型场景图片不一致导致测试map过低
针对以上原因,可以采取以下措施来提高MAP:
(1)优化模型结构:根据任务和数据集的特点选择合适的模型,并尝试使用不同的网络架构和构件来改进模型性能。
(2)增强数据预处理:对数据进行适当的预处理和增强,如数据归一化、缺失值填充、数据扩增等,以提高模型的泛化能力。
(3)调整损失函数:尝试使用不同的损失函数或组合多种损失函数来优化模型性能。
(4)优化训练策略:调整学习率、批次大小、训练轮数等超参数,以及使用学习率衰减、动量等优化算法来改善模型训练效果。
(5)使用预训练模型:利用在大规模数据集上预训练的模型进行迁移学习,可以加速模型收敛并提高性能。
(6)增加数据集数量
提供的文件
python源码
yolo11n.onnx模型(提供pytorch模型)
训练的map,P,R曲线图(在weights\results.png)
测试图片(在test_img文件夹下面)
注意提供数据集在数据集地址.xlsx文件中