X光安检图像检测挑战赛3.0(上)

简介: X光安检图像检测挑战赛3.0(上)

一、X光安检图像检测挑战赛3.0


地址:challenge.xfyun.cn/topic/info?…


1.赛事背景


X光安检是目前在城市轨交、铁路、机场、物流业广泛使用的物检手段。使用人工智能技术,辅助一线安检员进行X光安检判图,可以有效降低因为安检员经验、能力或工作状态造成的错漏检问题。在实际场景中,因待检测物品的多样性、成像角度、重叠遮挡等问题,X光安检图像检测算法研究存在一定挑战。


2.赛事任务


本赛事的任务是:基于科大讯飞提供的真实X光安检图像集构建检测模型,对X光安检图像中的指定类别的物品进行检测。


3.评审规则


3.1 数据说明


此次比赛提供带标注的训练数据,即待检测物品在包裹中的X光图像及其标注文件。

本次比赛标注文件中的类别为8类,包括:

刀(knife)、剪刀(scissors)、打火机(lighter)、优盘(USBFlashDisk)、压力容器(pressure)、带喷嘴塑料瓶(plasticBottleWithaNozzle)、公章(seal)、电池(battery)。

image.png

待识别物品的X光成像示意图如图所示。


比赛提供的X光图像及其矩形框标注的文件按照数据来源存放在不同的文件夹中,图像文件采用jpg格式,标注文件采用xml格式,各字段含义参照voc数据集。voc各字段含义对应表为:


  • filename 文件名
  • size 图像尺寸
  • width 图像宽度
  • height 图像高度
  • depth 图像深度,一般为3表示是彩色图像
  • object 图像中的目标,可能有多个
  • name 该目标的标签名称
  • bndbox 该目标的标注框
  • xmin 该目标的左上角宽度方向坐标
  • ymin 该目标的左上角高度方向坐标
  • xmax 该目标的右下角宽度方向坐标
  • ymax 该目标的右下角高度方向坐标


3.2 评估指标


评测方式采用计算mAP(IoU = 0.5)的方式。

首先计算每个类的AP:


(1)根据预测框和标注框的IoU是否达到阈值0.5判断该预测框是真阳性还是假阳性;

(2)根据每个预测框的置信度进行从高到低排序;

(3)在不同置信度阈值下计算精确率和召回率,得到若干组PR值;

(4)绘制PR曲线并计算AP值。


然后计算mAP:把所有类的AP值求平均得到mAP。


3.3 作品提交要求


作品必须健康、合法、无任何不良信息及商业宣传行为,不违反任何中华人民共和国有关法律。须保证原创性,不侵犯任何第三方知识产权或其他权利;一经发现或经权利人指出,主办方将直接取消其参赛资格,科大讯飞保留赛事解释权。


选手需要提交json格式文件,详情见示例。其中,坐标值必须为大于0的正数且不能超过图像的宽高。


按照赛题数据页面2022gamedatasettest1.txt里面的顺序组织json

提交文件需按序排列,首先按图片顺序排列,然后按类别顺序排列,置信度顺序随意。

  • (a) 图片顺序,请按照图片编号顺序。

image.png

  • (b) 类别顺序,请参照下列顺序: {'knife': 1, 'scissors': 2, 'lighter': 3, 'USBFlashDisk': 4, 'pressure': 5, 'plasticBottleWithaNozzle': 6, 'seal': 7, 'battery': 8}


二、数据集处理


image.png


1.标注文件整理


# 解压缩数据集
!unzip -qoa data/data165820/round1.zip -d data/
!unzip -qoa data/data165820/round2_test.zip -d data/
!mv data/讯飞研究院-X光安检图像检测挑战赛2022公开数据 data/round1
!mkdir data/round1/train/XML
import glob
import shutil
import os
def move_xml(domain_name):
    xml_dir=f"data/round1/train/{domain_name}/XML"
    filenames=glob.glob(f'{xml_dir}/*.xml')
    print(f"{xml_dir}移动的XML共有{len(filenames)}个。")
    if len(filenames)==0:
        return 
    for filename  in filenames:
        file_path, shortname=os.path.split(filename)
        new_name=domain_name+'_'+shortname
        new_name=os.path.join("data/round1/train/XML", new_name)
        shutil.move(filename, new_name)
    shutil.rmtree(xml_dir)
    print("重命名并移动文件完成。")
move_xml('domain1') 
move_xml('domain2')    
move_xml('domain3')
data/round1/train/domain1/XML移动的XML共有1323个。
重命名并移动文件完成。
data/round1/train/domain2/XML移动的XML共有1383个。
重命名并移动文件完成。
data/round1/train/domain3/XML移动的XML共有1308个。
重命名并移动文件完成。
print(len(glob.glob('data/round1/train/XML/*.xml')))
4014
!mv data/round1/train/XML data/round1/train/Annotations


2.图片文件整理


import glob
import shutil
import os
def move_xml(domain_name):
    jpg_dir=f"data/round1/train/{domain_name}/"
    filenames=glob.glob(f'{jpg_dir}/*.jpg')
    print(f"{jpg_dir}移动的XML共有{len(filenames)}个。")
    if len(filenames)==0:
        return 
    for filename  in filenames:
        file_path, shortname=os.path.split(filename)
        new_name=domain_name+'_'+shortname
        new_name=os.path.join("data/round1/train/JPEGImages", new_name)
        shutil.move(filename, new_name)
    shutil.rmtree(jpg_dir)
    print("重命名并移动文件完成。")
!mkdir data/round1/train/JPEGImages
move_xml('domain1')
move_xml('domain2')
move_xml('domain3')
data/round1/train/domain1/移动的XML共有1323个。
重命名并移动文件完成。
data/round1/train/domain2/移动的XML共有1383个。
重命名并移动文件完成。
data/round1/train/domain3/移动的XML共有1308个。
重命名并移动文件完成。
print(len(glob.glob('data/round1/train/JPEGImages/*.jpg')))
4014


3.PaddleX 安装


!python -m pip install --upgrade -q pip --user
!pip install -q -U paddlex


4.数据集划分


!paddlex --split_dataset --format VOC --dataset_dir data/round1/train/ --val_value 0.2
[08-21 13:52:20 MainThread @logger.py:242] Argv: /opt/conda/envs/python35-paddle120-env/bin/paddlex --split_dataset --format VOC --dataset_dir data/round1/train/ --val_value 0.2
[08-21 13:52:20 MainThread @utils.py:79] WRN paddlepaddle version: 2.3.1. The dynamic graph version of PARL is under development, not fully tested and supported
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/parl/remote/communication.py:38: DeprecationWarning: 'pyarrow.default_serialization_context' is deprecated as of 2.0.0 and will be removed in a future version. Use pickle or the pyarrow IPC functionality instead.
  context = pyarrow.default_serialization_context()
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import MutableMapping
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import Iterable, Mapping
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import Sized
2022-08-21 13:52:21,696-WARNING: type object 'QuantizationTransformPass' has no attribute '_supported_quantizable_op_type'
2022-08-21 13:52:21,696-WARNING: If you want to use training-aware and post-training quantization, please use Paddle >= 1.8.4 or develop version
2022-08-21 13:52:23 [INFO]  Dataset split starts...
2022-08-21 13:52:23 [INFO]  Dataset split done.
2022-08-21 13:52:23 [INFO]  Train samples: 3212
2022-08-21 13:52:23 [INFO]  Eval samples: 802
2022-08-21 13:52:23 [INFO]  Test samples: 0
2022-08-21 13:52:23 [INFO]  Split files saved in data/round1/train/

!ls data/round1/train/
Annotations  JPEGImages  labels.txt  train_list.txt  val_list.txt


5.图片查看


image.pngimage.pngimage.png


目录
相关文章
|
8月前
|
机器学习/深度学习 监控 安全
Jailbreak 36计————向天再借500分
本内容由IT老兵“老李”倾情奉献,结合《三十六计》智慧,深入剖析大语言模型越狱攻击的36种策略。每计包含思路、详解、案例、防御与点评,内容详实,实战性强,助你在“大模型安全挑战者计划”中脱颖而出。
1349 8
|
人工智能 安全
大模型安全撬壳计划(一) 手把手教你参加大模型安全撬壳计划
“大模型安全撬壳计划”由阿里巴巴集团安全部主办,旨在通过真实环境攻防实战,探索大模型安全边界,培养顶尖AI安全人才。大赛提供场景、技术、数据与奖金支持,赛程包括报名(7月9日-8月14日)、初赛与复赛。参赛者可通过大赛官网报名并提交攻击方法代码,挑战模型安全极限。更多信息请访问大赛网址。
623 0
|
人工智能 自然语言处理 vr&ar
一句话爆改三维场景!斯坦福吴佳俊团队新作:场景语言,智能补全文本到3D的场景理解
斯坦福大学吴佳俊团队提出“场景语言”,通过程序、自然语言单词和嵌入三个组件,实现文本到3D场景的智能生成与理解。该方法能高效生成复杂逼真的三维场景,广泛应用于虚拟现实、游戏、电影等领域,具有更高的保真度和精确控制优势。文章地址:https://arxiv.org/abs/2410.16770
476 95
|
机器学习/深度学习 计算机视觉
YOLOv11改进策略【Head】| AFPN渐进式自适应特征金字塔,增加针对小目标的检测头(附模块详解和完整配置步骤)
YOLOv11改进策略【Head】| AFPN渐进式自适应特征金字塔,增加针对小目标的检测头(附模块详解和完整配置步骤)
1990 12
YOLOv11改进策略【Head】| AFPN渐进式自适应特征金字塔,增加针对小目标的检测头(附模块详解和完整配置步骤)
免费HTTP代理IP对业务稳定性的影响关键因素分析
随着互联网发展,使用代理IP的需求增加。免费代理IP虽便捷,但对业务稳定性有负面影响:1. 网络连接不稳定,易中断;2. 频繁更换IP影响业务连续性;3. 性能差,速度慢、响应延迟高;4. 服务质量低,缺乏技术支持且存在不受控的限制。因此,选择代理服务时需谨慎评估其对业务的影响。
511 13
|
存储 安全 生物认证
《严守权限之门:ArkTS中模型访问权限的管理之道》
在鸿蒙Next的ArkTS开发中,管理模型访问权限至关重要。通过系统权限管理机制,在config.json中声明权限并使用AbilityAccessCtrl模块进行检查和申请;基于用户身份认证,确保只有授权用户能访问模型;实现细粒度权限控制,按角色分配不同权限级别;实时监测权限变化,动态调整访问权限。这些措施共同保障数据安全、隐私及应用稳定性。
521 29
|
机器学习/深度学习 人工智能 文字识别
ultralytics YOLO11 全新发布!(原理介绍+代码详见+结构框图)
本文详细介绍YOLO11,包括其全新特性、代码实现及结构框图,并提供如何使用NEU-DET数据集进行训练的指南。YOLO11在前代基础上引入了新功能和改进,如C3k2、C2PSA模块和更轻量级的分类检测头,显著提升了模型的性能和灵活性。文中还对比了YOLO11与YOLOv8的区别,并展示了训练过程和结果的可视化
24932 0
|
机器学习/深度学习 数据采集 数据可视化
探索性数据分析(EDA)
探索性数据分析(EDA)
510 0
|
机器学习/深度学习 Ubuntu Shell
深度学习环境配置(Ubuntu+Anaconda)
深度学习环境配置(Ubuntu+Anaconda)
651 3
|
机器学习/深度学习 计算机视觉
YOLOv8改进 | 主干篇 | 低照度图像增强网络SCINet改进黑暗目标检测(全网独家首发)
YOLOv8改进 | 主干篇 | 低照度图像增强网络SCINet改进黑暗目标检测(全网独家首发)
856 2

热门文章

最新文章