news 2026/6/6 0:48:34

基于遥感小目标XView数据集来实现一个目标检测任务—— 遥感小目标Xview原始目标检测数据集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于遥感小目标XView数据集来实现一个目标检测任务—— 遥感小目标Xview原始目标检测数据集

基于遥感小目标XView数据集来实现一个目标检测任务——
遥感小目标Xview原始目标检测数据集

数据集已经包括60个类别
数据集是txt和json格式
数据集已划分为训练集/验证集
yolo可用
相关Faster RCNN/Cascade RCNN/SSD/Retinant模型也可

以下文章代码仅供参考:

基于遥感小目标XView数据集来实现一个目标检测任务。为了简化流程,选择YOLOv5作为目标检测模型,并使用PyTorch框架进行实现。以下是详细的步骤:

环境准备

确保您已经安装了以下软件和库:

  • Python 3.8 或更高版本
  • PyTorch 1.9 或更高版本
  • torchvision 0.10 或更高版本
  • OpenCV
  • numpy
  • pandas
  • matplotlib
  • albumentations(用于数据增强)

您可以使用以下命令安装所需的Python库:

pipinstalltorch torchvision opencv-python numpy pandas matplotlib albumentations

数据集准备

假设您的数据集已经按照YOLO格式组织好,并且包含训练集和验证集。如果还没有转换为YOLO格式,我们需要先进行数据转换。

数据集结构
datasets/ ├── xview/ │ ├── images/ │ │ ├── train/ │ │ └── val/ │ └── labels/ │ ├── train/ │ └── val/ └── xview_classes.txt

xview_classes.txt文件包含60个类别的名称,每行一个类别名称。

数据转换脚本

如果您的数据集是JSON格式,可以使用以下脚本来将其转换为YOLO格式的TXT文件。假设JSON文件中包含边界框信息和类别标签。

[<title="Convert JSON to YOLO Format">]importjsonimportosfrompathlibimportPathimportcv2defconvert_json_to_yolo(json_file,output_dir,image_dir):withopen(json_file,'r')asf:data=json.load(f)categories={category['id']:category['name']forcategoryindata['categories']}class_names=sorted(categories.values())class_dict={class_name:idxforidx,class_nameinenumerate(class_names)}withopen(output_dir/'classes.txt','w')asf:forclass_nameinclass_names:f.write(f'{class_name}\n')forannotationindata['annotations']:img_id=annotation['image_id']bbox=annotation['bbox']category_id=annotation['category_id']image_info=next(itemforitemindata['images']ifitem['id']==img_id)image_path=image_dir/image_info['file_name']width,height=image_info['width'],image_info['height']label_path=output_dir/'labels'/(Path(image_info['file_name']).stem+'.txt')withopen(label_path,'a')asf:class_idx=class_dict[categories[category_id]]x_center=(bbox[0]+bbox[2]/2)/width y_center=(bbox[1]+bbox[3]/2)/height w=bbox[2]/width h=bbox[3]/height f.write(f'{class_idx}{x_center}{y_center}{w}{h}\n')# Example usagejson_file='path/to/xview/annotations.json'output_dir=Path('datasets/xview/')image_dir=Path('path/to/xview/images/train/')# Change to 'val/' for validation setconvert_json_to_yolo(json_file,output_dir,image_dir)

模型训练

我们将使用YOLOv5进行训练。首先,克隆YOLOv5仓库并设置环境。

gitclone https://github.com/ultralytics/yolov5.gitcdyolov5 pipinstall-rrequirements.txt
准备配置文件

创建一个hyp.scratch.yaml文件来定义超参数:

# Hyperparameters for YOLOv5 training from scratchlr0:0.01# initial learning rate (SGD=1E-2, Adam=1E-3)lrf:0.1# final OneCycleLR learning rate (lr0 * lrf)momentum:0.937# SGD momentum/Adam beta1weight_decay:0.0005# optimizer weight decay 5e-4warmup_epochs:3.0# warmup epochs (fractions ok)warmup_momentum:0.8# warmup initial momentumwarmup_bias_lr:0.1# warmup initial bias lrbox:0.05# box loss gaincls:0.5# cls loss gaincls_pw:1.0# cls BCELoss positive_weightobj:1.0# obj loss gain (scale with pixels)obj_pw:1.0# obj BCELoss positive_weightiou_t:0.20# IoU training thresholdanchor_t:4.0# anchor-multiple thresholdfl_gamma:0.0# focal loss gamma (efficientDet default gamma=1.5)hsv_h:0.015# image HSV-Hue augmentation (fraction)hsv_s:0.7# image HSV-Saturation augmentation (fraction)hsv_v:0.4# image HSV-Value augmentation (fraction)degrees:0.0# image rotation (+/- deg)translate:0.1# image translation (+/- fraction)scale:0.5# image scale (+/- gain)shear:0.0# image shear (+/- deg)perspective:0.0# image perspective (+/- fraction), range 0-0.001flipud:0.0# image flip up-down (probability)fliplr:0.5# image flip left-right (probability)mosaic:1.0# image mosaic (probability)mixup:0.0# image mixup (probability)copy_paste:0.0# segment copy-paste (probability)paste_in:0.0# segment paste-in (probability)rect:0# rectangular trainingresume:false# resume training from last checkpointnosave:false# only save final checkpointnoval:false# only validate final epochnoautoanchor:true# disable AutoAnchorevolve:false# evolve hyperparametersbucket:''# gsutil bucketcache_images:false# cache images for faster trainingimage_weights:false# use weighted image selection for trainingsingle_cls:false# train multi-class data as single-classoptimizer:SGD# optimizer: SGD or AdamWsync_bn:false# use SyncBatchNorm, only available in DDP modeworkers:8# dataloader workers (max is number of CPU cores)freeze:0# freeze first n layersv5_metric:true# assume maximum recall as 1.0 in AP calculationmulti_scale:true# vary input size between 320 and 640 pixelsrect_training:false# rectangular trainingcos_lr:false# cosine LR schedulerclose_mosaic:1000# close mosaic borderscales:[0.5,1.5]# image size scalesaugment:true# augment dataverbose:false# verbose printseed:0# random seed for reproducibilitylocal_rank:-1# ddp device id (-1 for single gpu train)entity:null# W&B entityupload_dataset:False# upload dataset as W&B artifact tablebbox_interval:-1# W&B bounding box logging intervalartifact_alias:latest# version of dataset artifact to useproject:runs/train# save results to project/nameexist_ok:false# existing project/name ok, do not incrementquad:false# quadrilateral anchorslinear_assignment:false# use linear assignment for NMS

创建一个data.yaml文件来定义数据集路径和类别:

train:../datasets/xview/images/train/val:../datasets/xview/images/val/nc:60# number of classesnames:['class1','class2',...,'class60']# list of class names

names字段替换为实际的类别名称。

训练模型

使用以下命令开始训练:

python train.py--img640--batch16--epochs50--datadata.yaml--cfgyolov5s.yaml--weightsyolov5s.pt--hyphyp.scratch.yaml

结果评估

训练完成后,可以使用以下命令评估模型性能:

python val.py--datadata.yaml--weightsruns/train/exp/weights/best.pt--tasktest

使用说明

  1. 配置路径

    • 确保datasets/xview/目录结构正确。
    • 确保data.yaml中的路径和类别名称正确。
  2. 运行脚本

    • 在终端中依次运行数据转换脚本、训练脚本和评估脚本。
  3. 注意事项

    • 根据需要调整超参数和训练设置。
    • 可以通过修改data.yaml中的cfg参数来选择不同的YOLOv5模型架构(如yolov5m.yaml,yolov5l.yaml,yolov5x.yaml)。

示例

假设您的数据集文件夹结构如下:

datasets/ └── xview/ ├── annotations.json ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/

并且annotations.json包含所有必要的注释信息。运行上述脚本后,您可以查看训练日志和最终的模型权重文件。

总结

通过上述步骤,我们可以构建一个全面的目标检测系统,包括数据集准备、数据转换、模型训练和结果评估。以下是所有相关的代码文件:

  1. 数据转换脚本(convert_json_to_yolo.py)
  2. YOLOv5超参数配置文件(hyp.scratch.yaml)
  3. YOLOv5数据集配置文件(data.yaml)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 0:48:33

工业冷水机怎么选?冷量、精度、能效等级缺一不可

工业冷水机选型,最常见的错误是只看制冷量标称值——标称值通常是在标准工况(进出水 12/7C、环境 35C)下测得的,一旦实际工况偏离,实际制冷量可能比标称值低 15%-30%。把核心参数拉齐再选型,能避免装上线才发现冷量不足的问题。 一、冷水机类型先确认 主流工业冷水机分三类,适…

作者头像 李华
网站建设 2026/6/6 0:40:05

12901黄大年茶思屋榜文第129期 第1题:二进制稳定的高性能语言互操作机理

黄大年茶思屋榜文第129期 第1题&#xff1a;二进制稳定的高性能语言互操作机理摘要 本文面向华为2012实验室OS内核实验室提出的世界级工程难题——“二进制稳定的高性能语言互操作机理”&#xff0c;提出一套基于系统科学方法论的工程解决方案。该方案以动态平衡、逐步演进、协…

作者头像 李华
网站建设 2026/6/6 0:38:42

3分钟搞定Axure RP中文界面:免费汉化包全版本支持指南

3分钟搞定Axure RP中文界面&#xff1a;免费汉化包全版本支持指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure R…

作者头像 李华
网站建设 2026/6/6 0:31:52

AI辅助开发:让智能算法驱动你的kt5555页面升级访问策略优化

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请生成一个AI辅助的kt5555页面升级访问智能推荐系统&#xff0c;核心功能&#xff1a;1、集成AI分析模块&#xff0c;输入现有页面URL或代码&#xff0c;自动分析可升级点并提供具…

作者头像 李华
网站建设 2026/6/6 0:30:49

2026年十大国产婴幼儿奶粉品牌榜:太子乐领跑,哪些品牌值得关注?

国产婴幼儿奶粉市场在过去十年经历了从信任危机到品质重塑的蜕变。随着国家监管标准持续收紧、行业集中度提升&#xff0c;消费者在选购时不再盲目追随外资品牌&#xff0c;而是更关注奶源、配方、品控等硬核指标。然而&#xff0c;面对琳琅满目的品牌和层出不穷的营销话术&…

作者头像 李华