深度学习环境搭建笔记(二):mmdetection-CPU安装和训练

文章目录

第一步:安装anaconda

参考教程:点击

第二步:安装虚拟环境

python 复制代码
conda create --name openmmlab python=3.8
conda activate openmmlab

第三步:安装torch和torchvision

python 复制代码
conda install pytorch torchvision torchaudio cpuonly -c pytorch

安装的版本为

第四步: 安装mmcv-full

下载地址:点击

如果是2.*以上的版本,则为mmcv。

python 复制代码
pip install mmcv-2.0.1-cp38-cp38-win_amd64.whl

第五步: 安装mmdetection

python 复制代码
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e .
# "-v" 指详细说明,或更多的输出
# "-e" 表示在可编辑模式下安装项目,因此对代码所做的任何本地修改都会生效,从而无需重新安装。

到这里为止,环境的配置就完成了。

第六步:测试环境

python 复制代码
mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .

下载将需要几秒钟或更长时间,这取决于你的网络环境。完成后,你会在当前文件夹中发现两个文件 rtmdet_tiny_8xb32-300e_coco.py 和 rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth。

如果你通过源码安装的 MMDetection,那么直接运行以下命令进行验证:

python 复制代码
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 cpu

你会在当前文件夹中的 outputs/vis 文件夹中看到一个新的图像 demo.jpg,图像中包含有网络预测的检测框。

第七步:训练-目标检测

下载目标检测mmyolo:https://github.com/open-mmlab/mmyolo

这个里面的yolo系列更全

7.1 准备数据集

Cat 数据集是由 144 张图片组成的单类数据集(原始图片由 @RangeKing 提供,并由 @PeterH0323 清理),其中包含训练所需的注释信息。示例图像如下所示:
您可以通过以下命令直接下载并使用它:

python tools/misc/download_dataset.py --dataset-name cat --save-dir data/cat --unzip --delete

此数据集使用以下目录结构自动下载到 dir:data/cat

7.2 检查数据集

检查标签是否有问题

python 复制代码
修改 tools/analysis_tools/browse_coco_json.py --img-dir ../misc/data/cat/images --ann-file ../misc/data/cat/annotations/annotations_all.json

7.3 训练网络

以 YOLOv5 算法为例,考虑到用户的 GPU 内存有限,我们需要修改一些默认的训练参数,使其流畅运行。需要修改的关键参数如下:

  • YOLOv5 是一种基于锚点的算法,不同的数据集需要自适应地计算合适的锚点
  • 默认配置使用 8 个 GPU,每个 GPU 的批大小为 16 个。现在将其更改为批处理大小为 12 的单个 GPU。
  • 默认训练周期为 300。将其更改为 40 纪元
  • 鉴于数据集很小,我们选择使用固定的主干权重
  • 原则上,当批量大小发生变化时,学习率应相应地线性缩放,但实际测量发现这不是必需的

在文件夹中创建一个配置文件(我们提供了这个配置供您直接使用),并将以下内容复制到配置文件中。yolov5_s-v61_fast_1xb12-40e_cat.pyconfigs/yolov5

python 复制代码
_base_ = 'yolov5_s-v61_syncbn_fast_8xb16-300e_coco.py'

data_root = 'misc/data/cat/'
class_name = ('cat', )
num_classes = len(class_name)
metainfo = dict(classes=class_name, palette=[(20, 220, 60)])

anchors = [
    [(68, 69), (154, 91), (143, 162)],  # P3/8
    [(242, 160), (189, 287), (391, 207)],  # P4/16
    [(353, 337), (539, 341), (443, 432)]  # P5/32
]

max_epochs = 40
train_batch_size_per_gpu = 12
train_num_workers = 4

load_from = 'https://download.openmmlab.com/mmyolo/v0/yolov5/yolov5_s-v61_syncbn_fast_8xb16-300e_coco/yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth'  # noqa

model = dict(
    backbone=dict(frozen_stages=4),
    bbox_head=dict(
        head_module=dict(num_classes=num_classes),
        prior_generator=dict(base_sizes=anchors)))

train_dataloader = dict(
    batch_size=train_batch_size_per_gpu,
    num_workers=train_num_workers,
    dataset=dict(
        data_root=data_root,
        metainfo=metainfo,
        ann_file='annotations/trainval.json',
        data_prefix=dict(img='images/')))

val_dataloader = dict(
    dataset=dict(
        metainfo=metainfo,
        data_root=data_root,
        ann_file='annotations/test.json',
        data_prefix=dict(img='images/')))

test_dataloader = val_dataloader

_base_.optim_wrapper.optimizer.batch_size_per_gpu = train_batch_size_per_gpu

val_evaluator = dict(ann_file=data_root + 'annotations/test.json')
test_evaluator = val_evaluator

default_hooks = dict(
    checkpoint=dict(interval=10, max_keep_ckpts=2, save_best='auto'),
    # The warmup_mim_iter parameter is critical.
    # The default value is 1000 which is not suitable for cat datasets.
    param_scheduler=dict(max_epochs=max_epochs, warmup_mim_iter=10),
    logger=dict(type='LoggerHook', interval=5))
train_cfg = dict(max_epochs=max_epochs, val_interval=10)
# visualizer = dict(vis_backends = [dict(type='LocalVisBackend'), dict(type='WandbVisBackend')]) # noqa

然后修改tools/train.py。主要修改config就行了

python 复制代码
    parser.add_argument('--config', default="../configs/yolov5/yolov5_s-v61_fast_1xb12-40e_cat.py", help='train config file path')

报错需要安装pip install albumentations -i https://pypi.tuna.tsinghua.edu.cn/simple 和pip install prettytable -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完运行后成功训练:

相关推荐
不会编程的懒洋洋10 分钟前
Spring Cloud Eureka 服务注册与发现
java·笔记·后端·学习·spring·spring cloud·eureka
ai产品老杨25 分钟前
部署神经网络时计算图的优化方法
人工智能·深度学习·神经网络·安全·机器学习·开源
fanxbl95728 分钟前
深入探索离散 Hopfield 神经网络
人工智能·神经网络
TaoYuan__41 分钟前
深度学习概览
人工智能·深度学习
云起无垠1 小时前
第74期 | GPTSecurity周报
人工智能·安全·网络安全
垂杨有暮鸦⊙_⊙1 小时前
阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_技术趋势
笔记·学习·无人机
workflower1 小时前
AI+自动驾驶
人工智能·机器学习·自动驾驶
爱技术的小伙子1 小时前
【ChatGPT】 让ChatGPT模拟客户服务对话与应答策略
人工智能·chatgpt
OptimaAI2 小时前
【 LLM论文日更|检索增强:大型语言模型是强大的零样本检索器 】
人工智能·深度学习·语言模型·自然语言处理·nlp
Xiao Fei Xiangζั͡ޓއއ2 小时前
一觉睡醒,全世界计算机水平下降100倍,而我却精通C语言——scanf函数
c语言·开发语言·笔记·程序人生·面试·蓝桥杯·学习方法