笑话网站php程序,网页设计基础课心得体会2000字,网站建设服务中企动力推荐,企业微网站哪家好本篇博客是由本人亲自调试成功后的学习笔记。使用了mmdetection项目包进行fast-rcnn模型的训练#xff0c;数据集是自制图像数据。废话不多说#xff0c;下面进入训练步骤教程。
注#xff1a;本人使用linux服务器进行展示#xff0c;Windows环境大差不差。另外#xff0…本篇博客是由本人亲自调试成功后的学习笔记。使用了mmdetection项目包进行fast-rcnn模型的训练数据集是自制图像数据。废话不多说下面进入训练步骤教程。
注本人使用linux服务器进行展示Windows环境大差不差。另外每个人的训练环境不同目前我只展示自己所使用的环境和配置条件允许的情况下请尽可能地根据我的版本进行安装和训练以防出错。
一、conda环境及torch、mmcv等包的安装
1.1 linux服务器上的conda环境及torch包
linux服务器上的conda环境及torch包等可以根据下面这位博主发的教程进行安装
Linux服务器安装anaconda并安装pytorch_如何利用pycharm在linux服务器上安装anaconda-CSDN博客
1.2 mmdetection中的必须包安装
在安装mmdetection之前先进行下面三个包的安装
pip install -U openmim
mim install mmengine
mim install mmcv2.0.0在安装完上面三个包后到github官网上把mmdetection的项目包拉下来下载网址如下
GitHub - open-mmlab/mmdetection: OpenMMLab Detection Toolbox and Benchmark
dowm下来后使用xshell等软件打开该项目包确保路径在该项目的主文件上。然后使用以下命令安装必备的包
pip install -v -e .
经过上述步骤mmdetection项目的运行环境就已经安装结束下面进入mmdetection的配置和测试环节。
注意请在该环节结束前检查自己安装torch版本是否是显卡cuda版本不然无法使用显卡进行训练。可以在命令行中使用下面命令进行测试
python # 进入python
import torch # 导入torch库
torch.cuda.is_available() # 返回True则是cuda版本返回False则是cpu版本
exit() # 退出python二、mmdetection配置及调试
2.1 mmdetection测试
根据官网给出的测试步骤进行测试官网给出的是cpu的推理版本这里给出的是cuda推理版本。调试命令如下
mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .进行以上步骤后会在mmdetection主目录下下载一个权重文件.pth和模型配置文件.py。下载速度视自身网速而定耐心等待~
在主目录中出现上述两个文件后使用以下命令进行推理测试
python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cuda运行结束后mmdetection主目录中会自动生成一个新的文件夹output保存刚刚推理的结果。
注意1推理的路径使用了相对路径如果你在运行后提示文件路径的报错可以使用绝对路径进行运行。如果还是报错的话请仔细检查是否是文件没有下载在正确的路径中。2运行后出现mmcv版本的报错该报错的解决请看下面的步骤~
2.2 mmcv版本报错的解决方法
在运行推理测试后弹出“AssertionError: MMCV2.2.0 is used but incompatible. Please install mmcv2.0.0rc4, 2.2.0”的报错可以找到并打开/mmdetection-main/mmdet文件夹下的init.py文件然后注释掉下面的这四行代码
# assert (mmcv_version digit_version(mmcv_minimum_version)
# and mmcv_version digit_version(mmcv_maximum_version)), \
# fMMCV{mmcv.__version__} is used but incompatible. \
# fPlease install mmcv{mmcv_minimum_version}, {mmcv_maximum_version}.在执行完上述操作后基本可以解决mmcv版本的问题。重新运行推理测试命令即可生成output结果文件夹。
至此mmdetection项目的调试到此就结束了可以进入正题开始fast-rcnn的训练准备工作
三、自制数据集的准备
3.1 数据集的标注工作
这部分我就不详细展开标准的教程了csdn中有很多这方面的教程自己去找一下。
步骤首先使用labelme工具进行数据标注我使用voc格式进行标注.xml。然后在获得图片和标签文件后将之分别存放在images和labels文件夹中。在这两个文件夹中请自行划分好train、val和test数据集。最终的数据集文件夹如下所示。
dataset
-images
--train
--val
--test
-labels
--train
--val
--test
3.2 制作fast-rcnn能训练的标签格式
利用以下代码分别对train、val和test的标签进行xml到coco标签的转换
注意为了后续训练的方便输出的json文件命名方式请遵循instances_train2017.json、instances_val2017.json、instances_test2017.json
import xml.etree.ElementTree as ET
import json
import os# 预定义类别
PRE_DEFINE_CATEGORIES {A1: 1, B1: 2, B2: 3, A2: 4}# 初始化 COCO 格式的字典
coco_dict {images: [],annotations: [],categories: []
}# 处理类别信息
for category_name, category_id in PRE_DEFINE_CATEGORIES.items():category_info {id: category_id,name: category_name,supercategory: object}coco_dict[categories].append(category_info)# 指定 XML 文件所在的文件夹
xml_dir rE:\BaiduSyncdisk\WALNUT-DATESET\split_dataset\test\labels\voc_label # 请替换为实际的 XML 文件所在文件夹路径annotation_id 1
image_id 1# 遍历文件夹下的所有 XML 文件
for filename in os.listdir(xml_dir):if filename.endswith(.xml):xml_file_path os.path.join(xml_dir, filename)try:# 解析 XML 文件tree ET.parse(xml_file_path)root tree.getroot()# 处理图像信息image_info {id: image_id,file_name: root.find(filename).text,width: int(root.find(size/width).text),height: int(root.find(size/height).text)}coco_dict[images].append(image_info)# 处理标注信息for obj in root.findall(object):category_name obj.find(name).textcategory_id PRE_DEFINE_CATEGORIES[category_name]bbox obj.find(bndbox)xmin int(bbox.find(xmin).text)ymin int(bbox.find(ymin).text)xmax int(bbox.find(xmax).text)ymax int(bbox.find(ymax).text)width xmax - xminheight ymax - yminannotation_info {id: annotation_id,image_id: image_id,category_id: category_id,bbox: [xmin, ymin, width, height],area: width * height,iscrowd: 0}coco_dict[annotations].append(annotation_info)annotation_id 1image_id 1except Exception as e:print(fError processing {xml_file_path}: {e})# 保存为 JSON 文件
output_json_file rE:\BaiduSyncdisk\WALNUT-DATESET\tools\1.数据集制作\annotations\instances_test2017.json
with open(output_json_file, w) as f:json.dump(coco_dict, f, indent4)
在对训练集、验证集和测试集都运行了以上代码后会生成三个josn文件随后将这三个文件保存到一个annotation文件夹中。
3.3 fast-rcnn数据文件保存格式
在进行了上述操作后现在可以在mmdetection主文件夹中按照以下格式新建文件夹
mmdetection # 主目录
-... # 主目录的其他文件
-data
--coco
---annotations
---train2017
---val2017
---test2017
-... # 主目录的其他文件
在新建完成后将图片数据按照分类分别上传到train2017、val2017和test2017文件夹中刚刚生成的json文件上传到annotations文件夹中。
3.4 数据集配置文件的准备
在执行完上述操作后进入/mmdetection/mmdet/datasets文件夹中复制coco.py粘贴新建一个自己数据集的配置文件本教程用ABC.py做例子进行讲解。
1将复制的文件打开后修改原来coco数据集的classes和palette信息按照自己的来。
修改前 修改后这是我的例子请按照自己的情况设定
class的名字也要改一下ABCDataset 2然后打开/mmdet/datasets/init.py导入自己的数据集
....from .walnut import ABCDataset....__all__ [XMLDataset, CocoDataset, ABCDataset, DeepFashionDataset, VOCDataset,CityscapesDataset, LVISDataset, LVISV05Dataset, LVISV1Dataset,WIDERFaceDataset, get_loading_pipeline, CocoPanopticDataset,MultiImageMixDataset, OpenImagesDataset, OpenImagesChallengeDataset,AspectRatioBatchSampler, ClassAwareSampler, MultiSourceSampler,GroupMultiSourceSampler, BaseDetDataset, CrowdHumanDataset,Objects365V1Dataset, Objects365V2Dataset, DSDLDetDataset,BaseVideoDataset, MOTChallengeDataset, TrackImgSampler,ReIDDataset, YouTubeVISDataset, TrackAspectRatioBatchSampler,ADE20KPanopticDataset, CocoCaptionDataset, RefCocoDataset,BaseSegDataset, ADE20KSegDataset, CocoSegDataset,ADE20KInstanceDataset, iSAIDDataset, V3DetDataset, ConcatDataset,ODVGDataset, MDETRStyleRefCocoDataset, DODDataset,CustomSampleSizeSampler, Flickr30kDataset
]
至此fast-rcnn模型能接受的数据集格式已经已经布置完成。接下来进入fast-rcnn模型训练的配置环节。
四、模型配置文件的准备
在训练fast-rcnn模型前需要先进行rpn的训练因为rpn有fast-rcnn模型训练所需要的前置文件.pkl。
4.1 rpn模型的训练
1选择模型
进入到/mmdetection/configs文件夹中找到rpn文件夹进入后找到rpn_r50_fpn_1x_coco.py本博客将使用这个例子进行教学。 2rpn模型训练
在命令行中使用以下模型进行训练
python tools/train.py /root/autodl-tmp/model/mmdetection-main/configs/rpn/rpn_r50_fpn_1x_coco.py
修改rpn_r50_fpn_1x_coco.py文件中的相应代码获得train和val的.pkl文件这两个文件会自动生成在数据集/mmdetection/data/coco/路径下的proposals文件夹中。
注本例子只做训练集和验证集的pkl没有test。各位根据自身的需要进行生成。 在获得这两个文件后就可以进行fast-rcnn模型的训练啦~
4.2 fast-rcnn模型的训练
1类别设置
打开mmdetection-main/configs/_base_/models找到并打开fast-rcnn_r50_fpn.py搜索num_classes把coco的80个类别修改成自己的类别本博客例子有4个类别所以我将num_classes设置成4。
2配置dataset、batch、workers
打开mmdetection-main/configs/_base_/datasets找到并打开coco_detection.py。
修改一下部位请CtrlF进行分别搜索关键字 dataset_type train_dataloader val_dataloader test_dataloader 将dataset_type设置成ABCDatasettrain_dataloader、val_dataloader、test_dataloader中的 batch_size16, num_workers16
根据自己的设备配置来设置这里我将batch和worker都设置成了16。
以上就完成了fast-rcnn的环境、数据集和训练文件的全部配置。接下来开始进行fast-rcnn模型的训练步骤。
五、开始训练
在命令行中cd进到mmdetection的项目主目录中使用以下命令进行fast-rcnn模型的训练文件路径请根据自己的来改
python tools/train.py /root/autodl-tmp/model/mmdetection-main/configs/fast_rcnn/fast-rcnn_r50_fpn_2x_coco.py
训练过程截图如下
如果不报错并且出现和截图相似的界面就说明训练开始了 —————————— 今天不学习明天变垃圾 ——————————