如何运营垂直网站永久免费的个人oa办公软件
- 作者: 五速梦信息网
- 时间: 2026年03月21日 09:49
当前位置: 首页 > news >正文
如何运营垂直网站,永久免费的个人oa办公软件,wordpress代码实现头像,浙江致居软装设计有限公司之前复现的yolov3算法采用的是传统的coco数据集#xff0c;这里我需要在新的数据集上跑#xff0c;也就是船舶检测方向的SeaShips数据集#xff0c;这里给出教程。 Seaships论文链接#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tparnumber8438999 一、…之前复现的yolov3算法采用的是传统的coco数据集这里我需要在新的数据集上跑也就是船舶检测方向的SeaShips数据集这里给出教程。 Seaships论文链接https://ieeexplore.ieee.org/stamp/stamp.jsp?tparnumber8438999 一、数据集下载 可以去官网下载或者直接点击链接下载 Seaships官网https://github.com/jiaming-wang/SeaShips 下载链接http://www.lmars.whu.edu.cn/prof_web/shaozhenfeng/datasets/SeaShips(7000).zip Seaships原数据集有3万张图像但给出的数据集一共只有7000张应该是经过筛选后的高质量图像。 这是论文给出的数据集中各类型的船只图像数量。 这是论文《AnenhancedCNN-enabledlearningmethodforpromotingshipdetectionin maritimesurveillance system》采用Seaships数据集进行实验的图像数量一共是7000张。 下载完后的数据集文件夹结构应该是这样的 一共是三个文件夹JPEGImages里面保存的是7000张图像文件 ImageSets保存的是四个txt文件 里面分别是四种集的图像编号如test.txt文件内容如下部分 Annotations里面存放的是7000张图像的标注文件 二、数据集格式转换 YOLO系列算法采用的是coco数据集coco数据集的标注文件格式如下 我们可以使用下面的代码直接将Seaships数据集转换成coco数据集文件夹架构的文件 import os import cv2 import json import shutil import xml.etree.ElementTree as ET from tqdm import tqdm# Seaships 数据集的类别 SEASHIPS_CLASSES (ship, ore carrier, bulk cargo carrier, general cargo ship, container ship, fishing boat )# 将类别名称映射为 COCO 格式的 category_id label_ids {name: i 1 for i, name in enumerate(SEASHIPS_CLASSES)}def parse_xml(xml_path):解析 XML 文件提取标注信息。tree ET.parse(xml_path)root tree.getroot()objects []for obj in root.findall(object):# 解析类别名称name obj.find(name).textif name not in label_ids:print(f警告: 未知类别 {name}跳过该对象。)continue# 解析 difficult 标签difficult_tag obj.find(difficult)difficult int(difficult_tag.text) if difficult_tag is not None else 0# 解析边界框bnd_box obj.find(bndbox)if bnd_box is not None:bbox [int(bnd_box.find(xmin).text),int(bnd_box.find(ymin).text),int(bnd_box.find(xmax).text),int(bnd_box.find(ymax).text)]else:print(f警告: 在文件 {xml_path} 中未找到 bndbox 标签跳过该对象。)continue# 添加到对象列表objects.append({name: name,label_id: label_ids[name],difficult: difficult,bbox: bbox})return objectsdef load_split_files(split_dir):加载划分文件train.txt, val.txt, test.txt。split_files {}for split_name in [train, val, test]:split_path os.path.join(split_dir, f{split_name}.txt)if os.path.exists(split_path):with open(split_path, r) as f:split_files[split_name] [line.strip() for line in f.readlines()]else:print(f警告: 未找到 {split_name}.txt 文件跳过该划分。)split_files[split_name] []return split_filesdef convert_to_coco(image_dir, xml_dir, split_dir, output_dir):将 Seaships 数据集转换为 COCO 格式并根据划分文件划分数据集。# 创建输出目录os.makedirs(os.path.join(output_dir, annotations), exist_okTrue)os.makedirs(os.path.join(output_dir, train), exist_okTrue)os.makedirs(os.path.join(output_dir, val), exist_okTrue)os.makedirs(os.path.join(output_dir, test), exist_okTrue)# 加载划分文件split_files load_split_files(split_dir)# 定义 COCO 格式的基本结构def create_coco_structure():return {info: {description: Seaships Dataset,version: 1.0,year: 2023,contributor: Your Name,date_created: 2023-10-01},licenses: [],images: [],annotations: [],categories: [{id: i 1, name: name, supercategory: none}for i, name in enumerate(SEASHIPS_CLASSES)]}# 处理每个数据集for split_name, file_names in split_files.items():coco_data create_coco_structure()annotation_id 1for file_name in tqdm(file_names, descf处理 {split_name} 数据集):xml_file os.path.join(xml_dir, f{file_name}.xml)image_name f{file_name}.jpgimage_path os.path.join(image_dir, image_name)# 检查图像文件和 XML 文件是否存在if not os.path.exists(image_path):print(f警告: 图像文件 {image_name} 不存在跳过该标注文件。)continueif not os.path.exists(xml_file):print(f警告: 标注文件 {xml_file} 不存在跳过该图像文件。)continue# 读取图像尺寸image cv2.imread(image_path)height, width, _ image.shape# 添加图像信息image_id len(coco_data[images]) 1coco_data[images].append({id: image_id,file_name: image_name,width: width,height: height})# 解析 XML 文件objects parse_xml(xml_file)for obj in objects:xmin, ymin, xmax, ymax obj[bbox]bbox [xmin, ymin, xmax - xmin, ymax - ymin] # COCO 格式的 bbox 是 [x, y, width, height]area (xmax - xmin) * (ymax - ymin)coco_data[annotations].append({id: annotation_id,image_id: image_id,category_id: obj[label_id],bbox: bbox,area: area,iscrowd: 0,difficult: obj[difficult]})annotation_id 1# 复制图像文件到对应的文件夹shutil.copy(image_path, os.path.join(output_dir, split_name, image_name))# 保存 COCO 格式的标注文件with open(os.path.join(outputdir, annotations, finstances{split_name}.json), w) as f:json.dump(coco_data, f, indent4)print(f转换完成结果已保存到 {output_dir})# 设置路径 image_dir your path to images # 图像文件目录 xml_dir your path to annotations # XML 标注文件目录 split_dir your path to txt directory # 划分文件目录包含 train.txt, val.txt, test.txt output_dir your path to output directory # 输出的 COCO 格式文件夹# 执行转换 convert_to_coco(image_dir, xml_dir, split_dir, output_dir) 将代码保存为Seaships_to_coco.py文件。 运行以下代码进行转换 python seaships_to_coco.py 运行完成以后生成Seaships_coco文件夹下面包含和coco数据集相同格式的文件 这样我们就得到了coco格式的Seaships数据集了。 三、修改配置文件 3.1 修改coco.py 将classes修改为Seaships数据集的类 Seaships类如下六种 ship, ore carrier, bulk cargo carrier, general cargo ship, container ship, fishing boat 3.2 修改class_names.py 同样将coco_class修改为seaships的类别 3.3 修改需要运行的配置的文件 比如我跑的这个py文件需要把里面所有的路径都修改成自己coco格式的seaships数据集。 把所有coco的路径都改成自己seaships数据集的路径包括测试集、训练集等。 完整代码如下 auto_scale_lr dict(base_batch_size64, enableFalse) backend_args None data_preprocessor dict(bgr_to_rgbTrue,mean[0,0,0,],pad_size_divisor32,std[255.0,255.0,255.0,],typeDetDataPreprocessor) data_root data/SeaShips_coco/ dataset_type CocoDataset default_hooks dict(checkpointdict(interval7, typeCheckpointHook),loggerdict(interval50, typeLoggerHook),param_schedulerdict(typeParamSchedulerHook),sampler_seeddict(typeDistSamplerSeedHook),timerdict(typeIterTimerHook),visualizationdict(typeDetVisualizationHook)) default_scope mmdet env_cfg dict(cudnn_benchmarkFalse,dist_cfgdict(backendnccl),mp_cfgdict(mp_start_methodfork, opencv_num_threads0)) input_size (320,320, ) launcher none load_from None log_level INFO log_processor dict(by_epochTrue, typeLogProcessor, window_size50) model dict(backbonedict(depth53,init_cfgdict(checkpointopen-mmlab://darknet53, typePretrained),out_indices(3,4,5,),typeDarknet),bbox_headdict(anchor_generatordict(base_sizes[[(116,90,),(156,198,),(373,326,),],[(30,61,),(62,45,),(59,119,),],[(10,13,),(16,30,),(33,23,),],],strides[32,16,8,],typeYOLOAnchorGenerator),bbox_coderdict(typeYOLOBBoxCoder),featmap_strides[32,16,8,],in_channels[512,256,128,],loss_clsdict(loss_weight1.0,reductionsum,typeCrossEntropyLoss,use_sigmoidTrue),loss_confdict(loss_weight1.0,reductionsum,typeCrossEntropyLoss,use_sigmoidTrue),loss_whdict(loss_weight2.0, reductionsum, typeMSELoss),loss_xydict(loss_weight2.0,reductionsum,typeCrossEntropyLoss,use_sigmoidTrue),num_classes80,out_channels[1024,512,256,],typeYOLOV3Head),data_preprocessordict(bgr_to_rgbTrue,mean[0,0,0,],pad_size_divisor32,std[255.0,255.0,255.0,],typeDetDataPreprocessor),neckdict(in_channels[1024,512,256,],num_scales3,out_channels[512,256,128,],typeYOLOV3Neck),test_cfgdict(conf_thr0.005,max_per_img100,min_bbox_size0,nmsdict(iou_threshold0.45, typenms),nms_pre1000,score_thr0.05),train_cfgdict(assignerdict(min_pos_iou0,neg_iou_thr0.5,pos_iou_thr0.5,typeGridAssigner)),typeYOLOV3) optim_wrapper dict(clip_graddict(max_norm35, norm_type2),optimizerdict(lr0.001, momentum0.9, typeSGD, weight_decay0.0005),typeOptimWrapper) param_scheduler [dict(begin0, by_epochFalse, end2000, start_factor0.1, typeLinearLR),dict(by_epochTrue, gamma0.1, milestones[218,246,], typeMultiStepLR), ] resume False test_cfg dict(typeTestLoop) test_dataloader dict(batch_size1,datasetdict(ann_fileannotations/instances_test.json,backend_argsNone,data_prefixdict(imgtest/),data_rootdata/SeaShips_coco/,pipeline[dict(backend_argsNone, typeLoadImageFromFile),dict(keep_ratioTrue, scale(320,320,), typeResize),dict(typeLoadAnnotations, with_bboxTrue),dict(meta_keys(img_id,img_path,ori_shape,img_shape,scale_factor,),typePackDetInputs),],test_modeTrue,typeCocoDataset),drop_lastFalse,num_workers2,persistent_workersTrue,samplerdict(shuffleFalse, typeDefaultSampler)) test_evaluator dict(ann_filedata/SeaShips_coco/annotations/instances_test.json,backend_argsNone,metricbbox,typeCocoMetric) test_pipeline [dict(backend_argsNone, typeLoadImageFromFile),dict(keep_ratioTrue, scale(320,320,), typeResize),dict(typeLoadAnnotations, with_bboxTrue),dict(meta_keys(img_id,img_path,ori_shape,img_shape,scale_factor,),typePackDetInputs), ] train_cfg dict(max_epochs273, typeEpochBasedTrainLoop, val_interval7) train_dataloader dict(batch_samplerdict(typeAspectRatioBatchSampler),batch_size8,datasetdict(ann_fileannotations/instances_train.json,backend_argsNone,data_prefixdict(imgtrain/),data_rootdata/SeaShips_coco/,filter_cfgdict(filter_empty_gtTrue, min_size32),pipeline[dict(backend_argsNone, typeLoadImageFromFile),dict(typeLoadAnnotations, with_bboxTrue),dict(mean[0,0,0,],ratio_range(1,2,),to_rgbTrue,typeExpand),dict(min_crop_size0.3,min_ious(0.4,0.5,0.6,0.7,0.8,0.9,),typeMinIoURandomCrop),dict(keep_ratioTrue, scale(320,320,), typeResize),dict(prob0.5, typeRandomFlip),dict(typePhotoMetricDistortion),dict(typePackDetInputs),],typeCocoDataset),num_workers4,persistent_workersTrue,samplerdict(shuffleTrue, typeDefaultSampler)) train_pipeline [dict(backend_argsNone, typeLoadImageFromFile),dict(typeLoadAnnotations, with_bboxTrue),dict(mean[0,0,0,], ratio_range(1,2,), to_rgbTrue, typeExpand),dict(min_crop_size0.3,min_ious(0.4,0.5,0.6,0.7,0.8,0.9,),typeMinIoURandomCrop),dict(keep_ratioTrue, scale(320,320,), typeResize),dict(prob0.5, typeRandomFlip),dict(typePhotoMetricDistortion),dict(typePackDetInputs), ] val_cfg dict(typeValLoop) val_dataloader dict(batch_size1,datasetdict(ann_fileannotations/instances_val.json,backend_argsNone,data_prefixdict(imgval/),data_rootdata/SeaShips_coco/,pipeline[dict(backend_argsNone, typeLoadImageFromFile),dict(keep_ratioTrue, scale(320,320,), typeResize),dict(typeLoadAnnotations, with_bboxTrue),dict(meta_keys(img_id,img_path,ori_shape,img_shape,scale_factor,),typePackDetInputs),],test_modeTrue,typeCocoDataset),drop_lastFalse,num_workers2,persistent_workersTrue,samplerdict(shuffleFalse, typeDefaultSampler)) val_evaluator dict(ann_filedata/SeaShips_coco/annotations/instances_val.json,backend_argsNone,metricbbox,typeCocoMetric) vis_backends [dict(typeLocalVisBackend), ] visualizer dict(namevisualizer,typeDetLocalVisualizer,vis_backends[dict(typeLocalVisBackend),]) work_dir /home/21021110287/wxz/mmdetection/work_dirs/yolo_seaships路径里面包含seaships的就是我自己修改过后的大家在用的时候记得改成自己的路径即可。将该文件保存为 yolov3_seaships.py。 运行以下代码开始训练算法验证集上跑 python the path to train.py the path to yolov3_seaships.py –work-dir the path to your output dirctory 第一个路径是train.py文件的路径 第二个是刚刚保存的运行配置文件的路径最后一个路径是自定义的输出日志保存结果的路径如果不设置则会自动生成work_dir文件夹保存结果命令如下 python the path to train.py the path to yolov3_seaships.py 如果需要在测试集上跑的话还需要添加检查点文件路径 python the path to your test.py the path to yolov3_seaships.py the path to your pth file –work-dir the path to the output dirctory 四、运行结果 运行上述命令后 我们的算法就开始跑起来了 最终运行结果的日志文件如下 五、Faster-RCNN 如果还想在faster-rcnn或者ssd上运行直接选择configs文件夹下不同的配置文件修改运行命令即可 faster-rcnn可能会出现service not available的错误则需要把运行配置文件中加载与训练模型的代码注释掉否则没有预训练模型无法运行 如果不想注释掉就可以按照下面的方法去下载预训练模型即权重文件 在python环境下输入下面命令下载模型即可 之后找到模型文件.pth文件复制路径添加到加载预训练模型的那行代码中”checkpoint“的后面即可重新运行这样会发现运行速度远超未加载权重的时候。
相关文章
-
如何与导航网站做友情链接wordpress如何修改logo
如何与导航网站做友情链接wordpress如何修改logo
- 技术栈
- 2026年03月21日
-
如何优化网站快速排名网销网站建设流程
如何优化网站快速排名网销网站建设流程
- 技术栈
- 2026年03月21日
-
如何优化关键词提升相关度上海优化公司
如何优化关键词提升相关度上海优化公司
- 技术栈
- 2026年03月21日
-
如何运营网站网站开发综合实训心得
如何运营网站网站开发综合实训心得
- 技术栈
- 2026年03月21日
-
如何在360网页上做公司网站舞蹈学校网站模板
如何在360网页上做公司网站舞蹈学校网站模板
- 技术栈
- 2026年03月21日
-
如何在12366网站上做实名认证自己做个网站要多少钱
如何在12366网站上做实名认证自己做个网站要多少钱
- 技术栈
- 2026年03月21日






