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

文章目录

  • 第一步:安装anaconda
  • 第二步:安装虚拟环境
  • 第三步:安装torch和torchvision
  • 第四步: 安装mmcv-full
  • 第五步: 安装mmdetection
  • 第六步:测试环境
  • 第七步:训练-目标检测
    • 7.1 准备数据集
    • 7.2 检查数据集
    • 7.3 训练网络

第一步:安装anaconda

参考教程:点击

第二步:安装虚拟环境

conda create --name openmmlab python=3.8
conda activate openmmlab

第三步:安装torch和torchvision

conda install pytorch torchvision torchaudio cpuonly -c pytorch

安装的版本为
在这里插入图片描述

第四步: 安装mmcv-full

下载地址:点击
如果是2.*以上的版本,则为mmcv。

pip install mmcv-2.0.1-cp38-cp38-win_amd64.whl

第五步: 安装mmdetection

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

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

第六步:测试环境

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 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 检查数据集

检查标签是否有问题

修改 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

_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 = 4load_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'  # noqamodel = 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_gpuval_evaluator = dict(ann_file=data_root + 'annotations/test.json')
test_evaluator = val_evaluatordefault_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就行了

    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
安装完运行后成功训练:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/68506.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计 社区买菜系统 Vue+SpringBoot+MySQL

作者主页:Designer 小郑 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲师,全栈领域优质创作者。 项目内容…

electron win系统通知修改通知标题栏

标题栏的 electron.app.Electron 如何修改: var package require("../package.json"); app.setAppUserModelId(package.description); app.setAppUserModelId 在主进程的app这里修改

R语言Meta分析核心技术

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…

SpringBoot2.0(Spring读取配置文件常用方法,打war包在Tomcat中启动)

目录 一,SpringBoot中读取配置文件的常用方法1.1,使用Value读取1.2,使用ConfigurationProperties1.3,使用Environment1.4,自定义配置文件读取 二,SpringBoot部署war项目到tomcat9和启动原理 一,…

详解4种类型的爬虫技术

聚焦网络爬虫是“面向特定主题需求”的一种爬虫程序,而通用网络爬虫则是捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分,主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。 增量抓取意…

【vue】vuex持久化插件vuex-persistedstate:

文章目录 一、说明:二、手动利用HTML5的本地存储:三、利用vuex-persistedstate插件【1】安装【2】配置使用【3】存储sessionStorage的情况【4】存储cookie的情况【5】默认持久化所有state,指定需要持久化的state,配置如下【6】vuex引用多个插…

公园气象站——观测实时气象,保障游客安全

公园气象站是一种用于监测和记录气象数据的系统。在公园内设置公园气象站可以帮助我们了解公园内的气候状况,包括空气湿度、空气温度、风速和风向等参数。这些数据是公园管理、游客安全和环境保护等方面重要的辅助依据。 负氧离子监测:负氧离子是指空气…

数学建模--非多项式拟合法的Python实现

目录 1.算法异同区别 2.算法核心步骤 3.算法核心代码 4.算法效果展示 1.算法异同区别 #*************************************************************************************************************# 方法区别探究 1.对于多项式拟合你需要大致知道这些点的分布&#xf…

Dubbo 接口测试原理及多种方法实践总结

1、什么是 Dubbo? Dubbo 最开始是应用于淘宝网,由阿里巴巴开源的一款优秀的高性能服务框架,由 Java 开发,后来贡献给了 Apache 开源基金会组织。 下面以官网的一个说明来了解一下架构的演变过程,从而了解 Dubbo 的诞…

开了抖店后就可以直播带货了吗?想在抖音带货的,建议认真看完!

我是王路飞。 关于抖店和直播带货的关系,其实很多人经常搞不清楚。 不然的话,也不会有这个问题的出现了:开了抖店后就可以直播带货了吗? 在我看来,这个问题很简单,但在不了解抖音电商和直播带货其中门道…

The WebSocket session [x] has been closed and no method (apart from close())

在向客户端发送消息时,session关闭了。 不管是单客户端发送消息还是多客户端发送消息,在发送消息之前判断session 是否关闭 使用 isOpen() 方法

Elasticsearch 8.X 可以按照数组下标取数据吗?

1、线上环境问题 老师、同学们,有人遇到过这个问题么,索引中有一个 integer 数组字段,然后通过脚本获取数组下标为1的值作为运行时字段,发现返回的值是乱的,并不是下标为1的值, 具体如下: DELETE my_index …

sql:SQL优化知识点记录(六)

(1)索引优化1 查看一下有没有建立索引: 用到索引中的一个:type中的ref决定访问性能 用到索引中的两个:通过key_len的长度可以看出来,比第一个大一点。或者通过ref:中用到了两个常量const 用到了…

【Android Framework系列】第14章 Fragment核心原理(AndroidX版本)

1 简介 Fragment是一个历史悠久的组件,从API 11引入至今,已经成为Android开发中最常用的组件之一。 Fragment表示应用界面中可重复使用的一部分。Fragment定义和管理自己的布局,具有自己的生命周期,并且可以处理自己的输入事件。…

如何合并为pdf文件?合并为pdf文件的方法

在数字化时代,人们越来越依赖电子文档进行信息交流和存储。合并为PDF成为一种常见需求,它能将多个文档合而为一,方便共享和管理。无论是合并多个单页文档,还是将多页文档合并,操作都变得简单高效。那么。如何合并为pdf…

移除链表元素_每日一题

“路虽远,行则将至” ❤️主页:小赛毛 ☕今日份刷题:移除链表元素 题目描述: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例1&…

真香:Alibaba开源GitHub星标100K微服务架构全彩进阶手册

前言: 微服务架构作为一种高效灵活的应用架构,正在成为企业级应用开发的主流选择。在众多的微服务架构指南中,阿里巴巴开源的GitHub微服务架构全彩进阶手册备受瞩目,其100star更是证明了其在开发者社区中的重要地位。 这本手册汇…

【Yolov5+Deepsort】训练自己的数据集(3)| 目标检测追踪 | 轨迹绘制 | 报错分析解决

📢前言:本篇是关于如何使用YoloV5Deepsort训练自己的数据集,从而实现目标检测与目标追踪,并绘制出物体的运动轨迹。本章讲解的为第三部分内容:数据集的制作、Deepsort模型的训练以及动物运动轨迹的绘制。本文中用到的数…

PHP旅游管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP 旅游管理系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 PHP 旅游管理系统 源码下载地址: https://download.csdn.net/download/qq_41…

LeetCode 46题:全排列

题目 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 输入:…