卡车倾倒建筑垃圾检测数据集:从视频流到行为识别的落地拆解

发布时间:2026/9/24 19:31:53

卡车倾倒建筑垃圾检测数据集:从视频流到行为识别的落地拆解 简介这是一份面向计算机视觉与深度学习方向的目标检测数据集聚焦卡车倾倒建筑垃圾这一特定行为识别任务适合训练和评估YOLOv7等实时检测模型可服务于城市监控、建筑工地管理与环保监测等场景。压缩包共1023个文件约115.49MB其中569张jpg与39张jpeg为原始图像106张png补充样本309个xml文件提供边界框与类别标注覆盖不同角度、光照与倾倒阶段便于直接投入训练与验证。据描述模型在该数据集上训练后mAP可达0.85说明标注质量与场景多样性具备较高实用价值。目前已有240人学习下载。读者可据此完成从图像预处理、标注解析到模型训练与评估的完整流程并借助验证集与测试集监控过拟合为非法倾倒行为的自动化检测提供可复用的数据基础。1. 卡车倾倒建筑垃圾检测数据集从“看见”到“举证”的落地拆解工地出入口、消纳场通道、城乡结合部空地渣土车停三秒、斗一抬、哗啦一倒人还没跑到跟前车已经挂挡走了。环保督查、城管执法、智慧工地项目里这类“卡车倾倒建筑垃圾”行为的取证一直是个老大难靠人盯监控一个屏幕几十路漏检是常态靠地磅和审批数据只能管住正规消纳场管不住半路乱倒。卡车倾倒建筑垃圾检测数据集要解决的就是让算法从视频流里自动认出“这辆车正在倒建筑垃圾”这个动作而不是只认出“这里有一辆车”。它适合三类人做智慧城管/环保 AI 落地的算法工程师、需要给现有监控加行为识别能力的集成商、以及想用开源数据先跑通 demo 再决定要不要自采数据的团队。这一章先把“检测什么、为什么难、数据长什么样”讲清楚后面几章再动手。2. 拆解“倾倒”这个动作目标框、时序与场景定义2.1 为什么普通车辆检测模型在这里会翻车常规 YOLO 检测“卡车”输出的是一个把整辆车框住的矩形。但“倾倒建筑垃圾”的关键信息不在车本身而在车厢举升状态 车尾抛洒物 车辆静止/低速这三者的组合。一辆正常行驶的渣土车和一辆正在倾倒的渣土车在单帧图像里可能只差一个举升角。如果数据集只标“卡车”模型学到的就是“有卡车有事件”误报率会高到没法用。所以这个数据集的核心标注对象通常分两层一层是车辆目标框卡车/渣土车另一层是行为状态标签是否处于倾倒姿态。有些方案还会加第三层抛洒物区域车尾扬尘、落料堆。这三层决定了你后面是走“单帧分类”还是“时序动作识别”。我一般会先明确一件事你的业务是要实时告警还是事后取证。实时告警对延迟敏感倾向单帧轻量模型事后取证可以拉 3~5 秒片段做时序判断准确率更高但算力翻倍。这个选择直接决定数据集怎么切、标签怎么打。2.2 数据集应该包含哪些场景维度一个能落地的卡车倾倒建筑垃圾检测数据集不能只拍晴天正午的干净画面。按我的经验至少要覆盖下面这些维度否则模型上线后遇到真实监控就“玄学”失灵维度建议覆盖原因光照白天、黄昏、夜间补光、逆光夜间车灯和扬尘会让车尾特征糊掉天气晴、阴、雨、扬尘扬尘本身既是线索也是干扰拍摄角度正对车尾、侧后方 45°、高位俯视举升角在不同视角下差异大车辆类型后八轮、前四后八、小型自卸车厢结构不同举升特征不同背景工地口、空地、路边、消纳场背景决定误报来源行为行驶、静止未举升、举升中、倾倒中、倾倒后负样本和过渡态必须要有这里有个血泪经验“举升中”和“倾倒中”一定要分开标。很多团队图省事只标“倾倒”结果模型把刚抬斗还没倒的也算进去告警提前几秒执法时被质疑“人家还没倒”。过渡态样本是这类行为数据集的灵魂。2.3 标注规范框怎么画、标签怎么定标注规范不统一后面训练全是坑。我一般会写一份内部规范核心几条车辆框框住车身可见部分车厢举升时框要包含举升后的车厢不要只框底盘。抛洒物只标从车尾落下的料堆或明显扬尘区域路面已有的旧垃圾不标。状态标签按帧打dumping表示正在落料lifting表示斗已抬但未见落料normal表示正常行驶或静止未举升。遮挡处理车厢被遮挡超过 50% 的帧直接丢弃不硬标。标注工具用 LabelImg、CVAT 或 Label Studio 都行关键是导出格式统一。我倾向 COCO 格式因为后面转 YOLO 或做时序切片都方便。3. 从原始视频到可训练数据集切片、清洗与格式转换3.1 视频抽帧与片段切分的最小脚本拿到原始监控视频后第一步不是急着标而是抽帧和切片。全帧标注太浪费行为识别只需要关键片段。下面这个脚本按“每 N 帧抽一帧 按时间切 3 秒片段”处理import cv2 import os def extract_clips(video_path, out_dir, fps_sample5, clip_sec3): 从视频中按间隔抽帧并按 clip_sec 秒切分片段 fps_sample: 每秒抽几帧监控一般 25fps抽 5 帧足够 clip_sec: 每个片段时长倾倒动作通常 2-5 秒 cap cv2.VideoCapture(video_path) fps cap.get(cv2.CAP_PROP_FPS) if fps 0: fps 25 # 兜底部分监控流读不到 fps step max(1, int(fps / fps_sample)) frame_idx 0 clip_idx 0 buffer [] frames_per_clip int(fps * clip_sec) while True: ret, frame cap.read() if not ret: break if frame_idx % step 0: buffer.append(frame) if len(buffer) frames_per_clip // step: clip_dir os.path.join(out_dir, fclip_{clip_idx:05d}) os.makedirs(clip_dir, exist_okTrue) for i, f in enumerate(buffer): cv2.imwrite(os.path.join(clip_dir, f{i:03d}.jpg), f) buffer [] clip_idx 1 frame_idx 1 cap.release() print(fdone, {clip_idx} clips saved) extract_clips(site_gate.mp4, ./clips, fps_sample5, clip_sec3)逻辑说明fps_sample控制抽帧密度监控场景 5 帧/秒足够捕捉举升过程太高会让标注量爆炸。clip_sec是片段长度倾倒动作从抬斗到落完一般 2~5 秒取 3 秒是折中。step是抽帧间隔用fps/fps_sample算出来避免不同摄像头帧率不一致导致切片错位。参数怎么改如果目标是实时告警fps_sample可以降到 2~3减少数据量如果要做精细时序提到 10。clip_sec遇到慢速倾倒的大车可以放到 5 秒。3.2 清洗三类必须删掉的脏数据抽完帧别直接标先过一遍清洗。我踩过的坑里下面三类数据不删后面训练 loss 会莫名其妙震荡纯背景帧片段里车已经开走只剩空场地。这类帧如果混进正样本模型会学“空场地倾倒”。重复帧监控卡顿导致连续多帧完全一样标注时容易漏标或重复标。极端模糊帧夜间噪点、雨滴糊住镜头人眼都看不清举升角标了也是噪声。清洗可以用简单的帧差法筛掉静止片段再用拉普拉斯方差筛模糊帧import cv2 import numpy as np def is_blurry(img_path, threshold80): 拉普拉斯方差低于阈值判为模糊阈值按分辨率调 img cv2.imread(img_path, cv2.IMREAD_GRAYSCALE) if img is None: return True return cv2.Laplacian(img, cv2.CV_64F).var() threshold def frame_diff_ratio(f1, f2): 两帧差异比例用于筛重复帧 g1 cv2.cvtColor(f1, cv2.COLOR_BGR2GRAY) g2 cv2.cvtColor(f2, cv2.COLOR_BGR2GRAY) diff cv2.absdiff(g1, g2) return np.count_nonzero(diff 20) / diff.sizethreshold这个参数没有万能值1080P 监控我一般从 80 起调模糊就往上加。frame_diff_ratio低于 0.01 基本可判为重复帧。清洗这一步偷懒后面标注和训练要加倍还回来。3.3 转成 YOLO 格式转换脚本与四个边界坑标注导出 COCO 后训练常用 YOLO需要转格式。转换本身不难坑在边界import json import os def coco_to_yolo(coco_json, img_dir, out_label_dir, class_map): class_map: {truck:0, dumping:1, lifting:2} 注意行为标签如果按帧打需要单独处理这里只转目标框 with open(coco_json, r, encodingutf-8) as f: data json.load(f) img_info {img[id]: img for img in data[images]} os.makedirs(out_label_dir, exist_okTrue) for ann in data[annotations]: img img_info[ann[image_id]] w, h img[width], img[height] x, y, bw, bh ann[bbox] # COCO 是左上角宽高YOLO 是中心点宽高且要归一化 cx (x bw / 2) / w cy (y bh / 2) / h nw bw / w nh bh / h # 边界裁剪防止浮点误差越界 cx min(max(cx, 0), 1) cy min(max(cy, 0), 1) nw min(max(nw, 0), 1) nh min(max(nh, 0), 1) cls class_map[ann[category_id]] label_path os.path.join(out_label_dir, img[file_name].replace(.jpg, .txt)) with open(label_path, a) as lf: lf.write(f{cls} {cx:.6f} {cy:.6f} {nw:.6f} {nh:.6f}\n)四个边界坑一是bbox 越界标注时手抖框出图像外不裁剪训练会报错二是宽高为 0极小目标归一化后接近 0YOLO 会忽略需要设最小阈值三是类别 id 不连续COCO 的 category_id 可能从 1 开始YOLO 要求从 0 连续必须用class_map映射四是文件名对不上图片和标签必须同名同目录结构否则训练时找不到标签loss 直接是 nan。4. 训练与验证让模型真的认出“正在倒”4.1 单帧检测 时序投票的混合方案纯单帧检测对“举升中”和“倾倒中”区分弱纯时序模型又重。我常用的是单帧检测出车辆和状态再用滑动窗口投票连续 5 帧里如果有 3 帧以上判为dumping才触发告警。这样既压误报又不用上 3D 卷积。训练单帧模型时把dumping、lifting、normal当成三个类别和车辆框一起训或者分两个头一个头出车辆框一个头出状态分类。数据量小于 5000 张时我倾向用 YOLOv8n 这种轻量模型先跑通别一上来就上大模型。# 常见做法是用 ultralytics 训练配置文件写好路径和类别 yolo detect train datadataset.yaml modelyolov8n.pt epochs100 imgsz640 batch16imgsz设 640 是速度和精度的折中监控画面里车尾细节小可以提到 960但显存和推理时间会涨。epochs100 起步看验证集 mAP 曲线早停 patience 设 20。4.2 验证指标别只看 mAP行为检测的验证不能只看 mAP。mAP 高不代表告警准。我一般会额外看三个指标事件级召回一段真实倾倒视频模型是否至少触发一次告警。这个比帧级召回更贴近业务。误报/小时每路摄像头每小时误报几次。超过 2 次值班人员就会关掉告警。提前/延迟帧数告警发生在倾倒开始后第几帧。太晚车都走了太早可能只是抬斗。验证集要按摄像头划分不能按帧随机分。同一摄像头相邻帧高度相似随机分会导致验证集“作弊”指标虚高。按摄像头分才能看出模型换场景后的真实泛化。4.3 数据增强哪些能用哪些会帮倒忙增强不是越多越好。对卡车倾倒场景马赛克增强要慎用它会把两辆车的车厢拼在一起举升角变得不真实。我一般开这几类亮度/对比度扰动模拟昼夜和逆光。随机裁剪模拟不同安装角度。轻微旋转 ±5°监控支架会有小倾斜。扬尘模拟叠加半透明噪声层增强抗扬尘能力。翻转要小心水平翻转后某些车型的举升方向反了如果业务里方向重要就别开。5. 避坑与排查五条上线前必须过的坎5.1 现象训练 loss 正常但验证集 mAP 一直 0.2 上不去原因大概率是标签格式或路径错了。YOLO 找不到标签时不会报错只会把背景当负样本学。解决先跑一遍yolo detect val看labels数量是否为 0再抽查几个.txt确认类别 id 从 0 开始、坐标归一化在 0~1。5.2 现象白天准夜间全是误报原因夜间车灯高光让车尾特征过曝模型把“亮斑”当成了倾倒线索。解决训练集里补夜间负样本正常行驶的夜间车并在预处理里加 CLAHE 或 gamma 校正。别指望模型自己学会它没见过就是不会。5.3 现象模型把“举升中”误判成“倾倒中”原因过渡态样本太少或者标注时把两者混为一类。解决单独统计lifting帧数如果不到dumping的 30%就要补采或重标。也可以在时序投票里加状态机先lifting再dumping才算完整事件。5.4 现象同一段视频换台机器推理结果不一样原因预处理不一致。训练时用了归一化、resize 方式推理时没对齐。解决把预处理写成一个函数训练和推理共用别一边用 OpenCV 一边用 PIL插值方式不同结果就会飘。5.5 现象告警太频繁值班员直接关掉原因阈值定太松或者没做事件去重。解决加滑动窗口投票 冷却时间同一辆车 30 秒内只报一次。阈值用验证集上的误报/小时曲线来定别拍脑袋。6. 进阶技巧用半自动标注把数据量翻三倍数据量是这类行为检测的天花板。纯手工标 1 万帧一个人要标一周。我的习惯是先用小样本训一版粗模型再用它预标注人工只做修正。具体做法先标 500~1000 帧训一个 YOLOv8n置信度阈值调低到 0.25让它把剩余视频全跑一遍输出预标注框人工在 CVAT 里只改错的、补漏的。实测能把标注速度提 2~3 倍。预标注有个注意点别用预标注结果直接训练一定要人工过一遍。模型自己的错误会被当成真值越训越偏这就是典型的“模型自嗨”。我一般要求预标注修正率低于 10% 才允许进入下一轮。另一个技巧是难例挖掘把验证集里误报和漏报的片段单独存一个文件夹每轮训练后把新难例加进去迭代 3~4 轮事件级召回通常能从 70% 提到 85% 以上。这个循环比换更大模型划算得多。最后说个我自己的教训早期我总想一步到位搞个“全能模型”结果数据没标够、场景没覆盖上线后天天救火。后来改成“先跑通一个摄像头、一个场景再横向复制”反而稳。卡车倾倒建筑垃圾检测数据集这件事数据质量比模型结构重要十倍标注规范比标注数量重要。希望帮到你。本文还有配套的精品资源点击获取
延伸阅读

更多相关文章

2026/9/24 19:31:53

心脏病预测机器学习实战:11个脚本从数据清洗到XGBoost调参

简介:这份资源面向机器学习入门与进阶学习者,提供一套完整的心脏病数据集分析与预测实战案例,帮助读者掌握从数据清洗、特征工程到多模型对比的完整流程。包内共14个文件,以11个Python源代码为主,另含2个CSV数据集和1个…

2026/9/24 19:31:53

基于销量可视化的手机价位段智能选型平台

开头做手机选品或者门店铺货的朋友,应该都有过这种纠结:同一批预算,到底是多进几台千元机走量,还是押两三部旗舰机赚毛利?以前大家基本靠经验和感觉,但感觉这东西在行情波动面前特别不靠谱。我去年接手了一…

2026/9/24 19:31:53

东华OJ刷题复盘:从TLE到AC,避开多组输入与边界陷阱

连着刷了三个晚上,东华OJ的基础练习终于推进到了第7到第9题。说实话,这三道题单独拎出来都不算难,但它们卡我的时间和心态,比后面那些看起来更复杂的题还要狠。第7题让我第一次在OJ上感受到“Time Limit Exceeded”的分量&#xf…

2026/9/24 20:36:59

Flask+SQLite初始化避坑指南:从路径问题到迁移实战

1. 为什么Flask sqlite的初始化总是先踩坑但凡用Flask做过一点正经项目,十有八九在数据库初始化这一步卡过壳。不是no such table,就是table already exists,再或者更隐蔽的——本地跑得好好的,部署到服务器上就崩溃,…

2026/9/24 20:36:59

Element UI 表格固定表头全攻略:height、max-height 与 sticky 实战

做后台管理系统的前端,绕不开一张表格。Element UI 的el-table我用了好几年,被问得最多的问题不是“这个表格怎么渲染数据”,而是:数据一多,表格一长,表头跟着页面滚走了,根本分不清哪一列是哪一…

2026/9/24 20:36:59

SSM+JSP农场供销系统实战:从部署到交付的全链路指南

简介:本资源是一套基于Java SSM框架与JSP技术实现的农场供销一体化系统完整源码,面向Java初学者、Web开发入门者及农业信息化项目实践者,解决农产品信息管理、会员订购、分类维护与配送协同等实际业务场景问题。压缩包为ZIP格式,大…

2026/9/24 20:36:59

Element UI 表格固定表头:原理、高度策略与避坑实战

你是不是也遇到过这种问题:一个满屏数据的表格,页面一滚起来,表头跟着内容跑了。数据一多,根本分不清哪列对应哪个字段,尤其是几十个字段的后台管理页面,下拉滚动几下就直接看花眼。其实在 Element UI 里&a…

2026/9/24 20:31:59

大模型多Agent协作架构实战:核心能力与任务调度指南

看到“大模型多Agent核心能力”这个标题,我第一反应是:圈里终于开始认真讨论这个方向了。这两年大模型应用爆发,单Agent的Demo到处都是,但真到了复杂的生产级任务面前,单个Agent的上下文窗口、工具调用能力和决策深度迟…

2026/9/24 20:24:47

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/24 0:00:21

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:21

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:21

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码