当前位置: 首页 > news >正文

基于YOLO的x光安检危险物品检测 数据集介绍:类别为8类,包括:刀(knife)、剪刀(sc...

基于YOLO的x光安检危险物品检测 数据集介绍:类别为8类,包括:刀(knife)、剪刀(scissors)、打火(lighter)、优盘(USBFlashDisk)、压力容器(pressure)、带喷嘴塑料瓶(plasticBottleWithaNozzle)、公章(seal)、电池(battery)。

安检机前的长队总让人焦虑,尤其当X光图像里混着各种奇形怪状的物品时。我们团队最近尝试用YOLOv5解决这个问题时发现,最刺激的不是调参,而是看着模型把公章认成电池的瞬间——这要是真在机场,怕是得引发全员手检了。

基于YOLO的x光安检危险物品检测 数据集介绍:类别为8类,包括:刀(knife)、剪刀(scissors)、打火(lighter)、优盘(USBFlashDisk)、压力容器(pressure)、带喷嘴塑料瓶(plasticBottleWithaNozzle)、公章(seal)、电池(battery)。

先看这个奇葩数据集:8类物品里既有锋利的刀剪,又有看似无害的优盘。特别是带喷嘴的塑料瓶,在X光下会呈现类似手枪握把的轮廓。我们给数据增强上了点狠活:

train_transforms = A.Compose([ A.Rotate(limit=15, p=0.6), # X光包裹经常歪着放 A.GaussianBlur((3,7), p=0.2), # 模拟低分辨率设备 A.RandomBrightnessContrast(0.1, 0.2, p=0.5), A.HueSaturationValue(10,15,10,p=0.3), ], bbox_params=A.BboxParams(format='yolo'))

特别注意旋转角度不能超过20度,否则压力容器上的螺纹特征会被扭曲。数据分布也很有意思——打火机的样本量是压力容器的3倍,这逼得我们在损失函数里玩起了平衡术:

class WeightedLoss(ComputeLoss): def __init__(self, model, class_weights): super().__init__(model) self.class_weights = torch.tensor(class_weights) def __call__(self, preds, targets): loss = super().__call__(preds, targets) cls_loss = loss[1] * self.class_weights.mean() return loss[0], cls_loss, loss[2]

模型结构选用了YOLOv5s的魔改版,在Backbone里塞了个SPD-Conv模块。这玩意儿特别适合处理X光图像中的锯齿状边缘,原理简单说就是把步幅卷积换成空间到深度的转换:

backbone: [[-1, 1, SPDConv, [64, 3]], # 替换原本的Conv [-1, 1, nn.BatchNorm2d, [64]], [-1, 1, nn.SiLU, []]]

训练时发现个诡异现象:模型总把横放的剪刀识别为压力容器。最后发现是锚框尺寸不合适,用k-means重新聚类后得到的新锚点:

新锚框尺寸: [12,16, 19,35, 33,23] # 适合细长物品 [45,36, 48,65, 79,55] # 中型容器 [123,96, 158,183, 324,269] # 大件物品

推理阶段的骚操作才叫精彩。X光图像往往有金属伪影,我们给NMS加了空间约束——两个重叠框如果出现在图像不同区域(比如包裹的两端),就算IOU超标也保留:

def nms_with_region(boxes, scores, iou_thresh=0.5, region_thresh=0.3): # 根据中心点坐标划分区域 centers = (boxes[:, :2] + boxes[:, 2:])/2 region_map = (centers // region_thresh).int() # 只在同区域做NMS ...

实测发现这个改进让公章和电池的误检率直降15%。现在模型已经能实时处理双视角X光视频流,不过偶尔还是会把卷起来的充电线认成刀具——看来要彻底取代安检员,还得再喂几吨奇葩样本。

http://www.jsqmd.com/news/537938/

相关文章:

  • 《元创力》纪实录·外篇·烛影追光者,与不灭的星轨
  • Facebook BM账号如何投流?从入门到精通的完整指南
  • LVQ神经网络在人脸朝向识别中的应用实战
  • 抖音无水印下载器终极指南:3分钟快速保存高清视频
  • 【超详细教程:VMware Workstation Pro 中创建虚拟机(附配图指南)】
  • 伴热带生产厂家选购指南:5大核心标准帮你选对合作伙伴 - 速递信息
  • string(2)
  • Wan2.2-I2V-A14B快速上手:WebUI界面Prompt输入技巧与风格控制指南
  • 2026广州纹绣择校指南:为何艺丽是“双证”合规首选? - 梅1梅
  • Langchain原理综述
  • GanttProject完整指南:如何用免费开源工具实现专业项目管理
  • legged_control足式机器人控制框架及代码解析(五):状态估计与MPC策略融合
  • 杭州高端腕表检测服务全解析:从百达翡丽到欧米茄,京沪深杭宁锡六地检测标准与故障诊断深度报告 - 时光修表匠
  • 2026年草坪胶行业趋势报告:绿色化与专业化的未来 - 速递信息
  • Grafana 8.x实战:用ClickHouse数据打造炫酷监控仪表盘(附避坑指南)
  • 机械键盘连击问题深度解决方案:从原理到实战的全面指南
  • LightOnOCR-2-1B惊艳效果展示:复杂表格结构还原与跨语言数学公式识别
  • 杭州腕表检测|高端奢华腕表精准检测指南,六大核心城市专业维修全解析 - 时光修表匠
  • PyTorch 2.8镜像快速上手:RTX 4090D下huggingface_hub离线模型加载
  • 手把手教你配置BMI270的FIFO中断与水位线,实现低功耗数据采集(附ESP32代码)
  • 天虹购物卡回收攻略:线上方式更靠谱? - 团团收购物卡回收
  • 基于容积卡尔曼滤波的轮胎侧向力与非线性修正技术研究:MPC路径跟踪控制优化实践
  • 大润发购物卡如何回收?2026年精简指南在此 - 京回收小程序
  • 永辉超市购物卡回收技巧 - 团团收购物卡回收
  • 宴会预订流程及标准复杂?酒店哥哥满意宴会指南
  • 线上回收百联OK卡,哪些技巧能帮你省时省力? - 团团收购物卡回收
  • 免费降AI率和付费降AI率差距有多大?降论文ai率效果实测对比
  • 华为eNSP模拟器实战:5分钟搞定Telnet远程登录(附AAA认证避坑指南)
  • 页游党必看!传奇、篮球、策略全都有,点击即玩
  • 杭州高端腕表检测全解析:从百达翡丽到理查德米勒的精准评估与科学养护 - 时光修表匠