news 2026/2/3 0:26:45

采用 **PyTorch + Detectron2** 框架(实例分割任务常用工具) 无人机智慧交通车辆分割数据集 无人机道路车辆分割数据集 无人机车辆行人分割数据集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
采用 **PyTorch + Detectron2** 框架(实例分割任务常用工具) 无人机智慧交通车辆分割数据集 无人机道路车辆分割数据集 无人机车辆行人分割数据集

1

交通数据集核心信息总结表

总结维度具体内容
数据类别包含9类目标,分别为自行车、公共汽车、汽车、绿化带、发动机、人、道路、三轮车、卡车
数据数量图像数量共1.7k张(1671张)
图像分辨率未在数据集信息中明确标注
数据格式未在数据集信息中明确标注(推测为计算机视觉任务常用格式,如JPG、PNG等,适配实例分割任务需求)

数据集应用领域

  1. 智能交通系统开发:可用于训练车辆检测、行人识别、道路区域划分等模型,支撑交通流量统计、交通违规识别(如非机动车占用机动车道)、道路状况监测等功能,提升交通管理的智能化水平。
  2. 自动驾驶技术研发:为自动驾驶车辆的环境感知模块提供训练数据,帮助车辆精准识别道路上的各类目标(如其他车辆、行人、自行车)及道路基础设施(如绿化带、道路边界),增强自动驾驶的安全性与可靠性。
  3. 交通场景分析与规划:基于数据集中的目标分布信息,可分析不同交通场景下的车辆、行人密度及流动规律,为城市交通路网规划、交通设施优化(如增设行人通道、调整绿化带位置)提供数据支撑。
  4. 计算机视觉算法优化:作为实例分割任务的训练数据,可用于优化实例分割算法在交通场景下的性能,提升算法对小目标(如行人)、相似目标(如不同类型车辆)的识别精度,推动计算机视觉技术在交通领域的落地应用。

数据集价值

  1. 降低开发成本:为从事交通领域计算机视觉相关项目的团队或个人提供现成的标注数据集,避免从零开始采集、标注数据所耗费的大量时间与人力成本,加速项目开发进程。
  2. 保障数据适用性:数据专门针对交通场景设计,涵盖交通领域常见的核心目标类别,能够满足多数交通相关计算机视觉任务的训练需求,确保数据与实际应用场景的匹配度。
  3. 推动技术普及:降低交通领域计算机视觉技术的入门门槛,使更多开发者(尤其是缺乏数据资源的中小团队或个人开发者)能够基于该数据集开展技术研究与应用开发,促进相关技术的普及与创新。
  4. 支撑多场景落地:数据的通用性使其可应用于智能交通、自动驾驶、交通规划等多个细分场景,为不同领域的技术落地提供基础数据支持,助力交通行业数字化、智能化转型。
    1

    1

    1

    以下是基于该交通实例分割数据集的训练代码示例,采用PyTorch + Detectron2框架(实例分割任务常用工具),代码包含数据加载、模型配置、训练与验证流程,适配数据集的9类目标(自行车、公共汽车、汽车、绿化带、发动机、人、道路、三轮车、卡车):

一、环境准备

首先安装依赖包:

# 安装PyTorch(根据CUDA版本调整,此处以CUDA 11.8为例)pip3installtorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 安装Detectron2(Facebook开源实例分割框架)python -m pipinstall'git+https://github.com/facebookresearch/detectron2.git'# 安装其他依赖pipinstallpillow opencv-python pycocotools matplotlib

二、数据集格式转换(关键步骤)

该数据集标注格式需转换为Detectron2支持的COCO格式(或Detectron2自定义格式),假设原始标注为JSON格式(含多边形坐标),转换逻辑如下(示例代码):

importjsonimportosfromPILimportImagefrompycocotools.cocoimportCOCOfrompycocotools.cocoevalimportCOCOeval# 1. 定义类别映射(数据集9类目标,对应COCO格式的category_id)CATEGORY_MAPPING={"bicycle":1,"bus":2,"car":3,"greenbelt":4,"motor":5,"people":6,"roadway":7,"tricycle":8,"truck":9}CATEGORIES=[{"id":v,"name":k,"supercategory":"traffic"}fork,vinCATEGORY_MAPPING.items()]# 2. 转换函数:将原始标注转为COCO格式defconvert_to_coco(raw_annot_dir,img_dir,save_json_path):coco_data={"images":[],"annotations":[],"categories":CATEGORIES}img_id=1ann_id=1# 遍历所有原始标注文件(假设每个图像对应一个标注JSON)forraw_ann_fileinos.listdir(raw_annot_dir):ifnotraw_ann_file.endswith(".json"):continueraw_ann_path=os.path.join(raw_annot_dir,raw_ann_file)img_name=raw_ann_file.replace(".json",".jpg")# 假设图像与标注文件名对应img_path=os.path.join(img_dir,img_name)# 读取图像尺寸(需确保图像存在)ifnotos.path.exists(img_path):print(f"跳过不存在的图像:{img_path}")continuewithImage.open(img_path)asimg:width,height=img.size# 添加图像信息到COCO数据coco_data["images"].append({"id":img_id,"file_name":img_name,"width":width,"height":height})# 读取原始标注(参考网页中"Annotation Data"的多边形格式)withopen(raw_ann_path,"r",encoding="utf-8")asf:raw_ann=json.load(f)# 解析每个多边形标注(对应一个实例)forboxinraw_ann.get("boxes",[]):label=box["label"]iflabelnotinCATEGORY_MAPPING:print(f"跳过未知类别:{label}")continue# 处理多边形坐标(原始坐标为[x,y]列表,需转为COCO格式的flatten列表)points=box["points"]# 格式:[[x1,y1], [x2,y2], ..., [xn,yn]]segmentation=[coordforpointinpointsforcoordinpoint]# 展平为一维列表area=box["width"]*box["height"]# 简化计算面积(或用多边形面积公式)bbox=[box["x"],# xmin(原始标注的x坐标)box["y"],# ymin(原始标注的y坐标)box["width"],# widthbox["height"]# height]# 添加标注信息到COCO数据coco_data["annotations"].append({"id":ann_id,"image_id":img_id,"category_id":CATEGORY_MAPPING[label],"segmentation":[segmentation],"area":area,"bbox":bbox,"iscrowd":0# 0表示单个实例,1表示人群/密集目标})ann_id+=1img_id+=1# 保存COCO格式标注文件withopen(save_json_path,"w",encoding="utf-8")asf:json.dump(coco_data,f,indent=2)print(f"COCO格式标注已保存到:{save_json_path}")# 3. 执行转换(需替换为你的数据集路径)RAW_ANNOT_DIR="path/to/raw/annotations"# 原始标注文件目录IMG_DIR="path/to/images"# 图像文件目录TRAIN_COCO_JSON="path/to/train_coco.json"# 训练集COCO标注保存路径VAL_COCO_JSON="path/to/val_coco.json"# 验证集COCO标注保存路径(需拆分数据集)# (可选)拆分训练集/验证集(按8:2比例)# 此处省略拆分逻辑,建议先手动拆分图像和标注,再分别执行转换convert_to_coco(RAW_ANNOT_DIR+"/train",IMG_DIR+"/train",TRAIN_COCO_JSON)convert_to_coco(RAW_ANNOT_DIR+"/val",IMG_DIR+"/val",VAL_COCO_JSON)

三、模型训练代码(Detectron2)

importdetectron2fromdetectron2.utils.loggerimportsetup_loggerfromdetectron2importmodel_zoofromdetectron2.engineimportDefaultTrainer,DefaultPredictorfromdetectron2.configimportget_cfgfromdetectron2.dataimportMetadataCatalog,DatasetCatalogfromdetectron2.data.datasetsimportregister_coco_instancesfromdetectron2.evaluationimportCOCOEvaluator,inference_on_datasetfromdetectron2.dataimportbuild_detection_test_loaderimportos# 1. 配置日志setup_logger()# 2. 注册COCO格式数据集到Detectron2# 训练集register_coco_instances(name="traffic_train",# 数据集名称(自定义)metadata={},json_file=TRAIN_COCO_JSON,# 训练集COCO标注路径(需与上文一致)image_root=IMG_DIR+"/train"# 训练集图像路径)# 验证集register_coco_instances(name="traffic_val",metadata={},json_file=VAL_COCO_JSON,image_root=IMG_DIR+"/val")# 3. 获取数据集元数据(用于类别映射)traffic_metadata=MetadataCatalog.get("traffic_train")dataset_dicts=DatasetCatalog.get("traffic_train")# 可查看数据集加载是否正常# 4. 配置模型参数cfg=get_cfg()# 加载预训练模型(选择实例分割模型,此处用Mask R-CNN,基于ResNet-50-FPN)cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))# 替换为自定义数据集cfg.DATASETS.TRAIN=("traffic_train",)cfg.DATASETS.TEST=("traffic_val",)# 训练中同时验证cfg.DATALOADER.NUM_WORKERS=4# 数据加载线程数(根据CPU核心调整)# 预训练权重(使用COCO预训练权重,加速收敛)cfg.MODEL.WEIGHTS=model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")# 训练参数配置cfg.SOLVER.IMS_PER_BATCH=2# 每批次图像数(根据GPU显存调整,12GB显存建议2-4)cfg.SOLVER.BASE_LR=0.001# 基础学习率(默认0.002,小批次建议减小)cfg.SOLVER.MAX_ITER=10000# 最大迭代次数(根据数据集大小调整,1.7k图像建议10k-20k)cfg.SOLVER.STEPS=(6000,8000)# 学习率衰减步骤(60%、80%迭代次数时衰减)cfg.SOLVER.GAMMA=0.1# 学习率衰减系数# 模型输出配置(类别数=9,需与CATEGORY_MAPPING一致)cfg.MODEL.ROI_HEADS.NUM_CLASSES=9# 交通数据集共9类目标cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE=128# 每个图像的ROI批次大小(默认128)# 验证配置cfg.TEST.EVAL_PERIOD=1000# 每1000次迭代执行一次验证# 输出目录(保存模型权重、日志等)os.makedirs(cfg.OUTPUT_DIR,exist_ok=True)# 5. 定义训练器(集成验证逻辑)classCustomTrainer(DefaultTrainer):@classmethoddefbuild_evaluator(cls,cfg,dataset_name,output_folder=None):ifoutput_folderisNone:output_folder=os.path.join(cfg.OUTPUT_DIR,"inference")returnCOCOEvaluator(dataset_name,output_dir=output_folder)# 6. 启动训练trainer=CustomTrainer(cfg)trainer.resume_or_load(resume=False)# resume=False表示从头训练,True表示加载上次权重trainer.train()# 7. 训练后验证(输出mAP等指标)print("="*50)print("开始训练后验证...")cfg.MODEL.WEIGHTS=os.path.join(cfg.OUTPUT_DIR,"model_final.pth")# 加载训练好的最终权重cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST=0.5# 测试时的置信度阈值(仅保留>0.5的预测结果)predictor=DefaultPredictor(cfg)# 构建验证集加载器并执行验证evaluator=COCOEvaluator("traffic_val",output_dir=os.path.join(cfg.OUTPUT_DIR,"inference"))val_loader=build_detection_test_loader(cfg,"traffic_val")inference_on_dataset(trainer.model,val_loader,evaluator)

四、关键说明

  1. 数据集路径适配:需将代码中RAW_ANNOT_DIRIMG_DIR等路径替换为你的实际数据集路径,确保图像与标注文件一一对应。
  2. GPU显存适配:若GPU显存不足(如<8GB),可减小cfg.SOLVER.IMS_PER_BATCH(设为1)、降低模型复杂度(如用mask_rcnn_R_18_FPN.yaml轻量模型)。
  3. 训练参数调整
    • MAX_ITER:1.7k图像建议10k-20k次迭代,若验证集mAP不再提升可提前停止(需添加早停逻辑)。
    • BASE_LR:若批次大小为1,建议设为0.0005;批次大小为4,可设为0.002。
  4. 结果查看:训练过程中日志、模型权重(model_final.pth)会保存在cfg.OUTPUT_DIR(默认./output),验证后会输出mAP(实例分割任务核心指标)。
  5. 预测演示:训练完成后,可使用predictor对新图像进行预测,示例代码:
    importcv2importmatplotlib.pyplotasplt img_path="path/to/test_image.jpg"img=cv2.imread(img_path)outputs=predictor(img)# 执行预测# 可视化预测结果(Detectron2自带工具)fromdetectron2.utils.visualizerimportVisualizer v=Visualizer(img[:,:,::-1],metadata=traffic_metadata,scale=1.2)out=v.draw_instance_predictions(outputs["instances"].to("cpu"))plt.imshow(out.get_image()[:,:,::-1])plt.axis("off")plt.show()

五、其他框架支持

若需使用TensorFlow/PyTorch Lightning,可参考:

  • TensorFlow:使用TensorFlow Object Detection API,需将数据集转为TFRecord格式,模型选择mask_rcnn_inception_resnet_v2_atrous_coco
  • PyTorch Lightning:基于上述Detectron2代码封装为LightningModule,便于分布式训练和日志管理。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/1 22:43:10

springboot校园二手交易平台系统设计实现

背景分析校园二手交易平台的设计与实现源于大学生对便捷、环保、低成本交易方式的迫切需求。传统线下二手交易存在信息不对称、交易效率低、地域限制等问题&#xff0c;而线上平台能有效解决这些痛点。资源浪费问题&#xff1a;学生每年产生大量闲置物品&#xff08;教材、电子…

作者头像 李华
网站建设 2026/2/2 12:13:35

百考通AI:引领智能学习新纪元,打造个性化备考全能助手

在信息爆炸的时代&#xff0c;每一位考生都面临着海量知识筛选、高效复习规划与精准应试训练的多重挑战。如何从繁杂的学习资料中快速提取重点&#xff1f;如何在有限时间内实现系统化知识掌握&#xff1f;如何借助科技力量实现高效、个性化、科学化的备考&#xff1f;百考通AI…

作者头像 李华
网站建设 2026/2/2 20:51:55

百考通AI:您的智能文献研究伙伴,从标题到参考文献一站智成

在学术研究和论文写作的道路上&#xff0c;文献工作往往是最耗时却又最关键的环节。选题初期如何快速建立知识图谱&#xff1f;文献综述怎样才能既全面又有深度&#xff1f;参考文献格式整理为何总是繁琐易错&#xff1f;百考通AI&#xff08;https://www.baikaotongai.com&…

作者头像 李华
网站建设 2026/2/2 12:56:01

百考通AI:您的智能问卷设计专家,让调研从“耗时耗力”到“一键生成”

在市场研究、用户洞察、学术调查乃至内部管理的每一个环节&#xff0c;一份设计精良的问卷都是获取有效数据、驱动决策的关键起点。然而&#xff0c;设计一份既能精准捕捉信息、又能保证用户体验的问卷&#xff0c;往往需要耗费大量的时间与专业技巧。从确定目标、筛选受众、构…

作者头像 李华
网站建设 2026/2/1 19:19:08

HoRain云--高效管理多版本开发环境全攻略

&#x1f3ac; HoRain 云小助手&#xff1a;个人主页 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …

作者头像 李华
网站建设 2026/2/2 2:22:01

U+0000 – U+007F的庖丁解牛

U0000 – U007F 是 Unicode 标准中定义的“基本拉丁文”区块&#xff08;Basic Latin&#xff09;&#xff0c;也是 ASCII 字符集的完整映射范围。它不仅是现代文本编码的基石&#xff0c;更是 UTF-8 兼容性的核心设计依据。 一、历史与标准&#xff1a;ASCII 的数字化遗产 ▶…

作者头像 李华