【新手教程】mmselfsup训练教程及常见报错处理

mmselfsup教程

    • 1.安装mmselfsup
    • 2.了解文件结构与配置
    • 3.训练
    • 常见报错
      • 1.报错:FileNotFoundError: [Errno 2] No such file or directory:'data/imagenet/train/./train/n04311004/images/n04311004_194.JPEG'
      • 2.报错:报错ImportError: /mmcv/_ext.cpython-38-x86_64-linux-gnu.so: undefined symbol:_ZN2at4_ops7resize_4callERKNS_6TensorEN3c108ArrayRefIlEENS5_8optionalINS5_12MemoryFormatEEE

1.安装mmselfsup

本人使用 Ubuntu20.04.6系统,下面是我的配置
image-20240324175541054
image-20240324182617364

pip install torch==1.13.0+cu116 torchvision==0.14.0+cu116 -f https://download.pytorch.org/whl/torch_stable.html

步骤 0. 从官方网站下载并安装 Miniconda。

步骤 1. 创建一个 conda 环境并激活它。

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

步骤 2. 按照官方说明安装 PyTorch,例如:

  • 在 GPU 平台上:
conda install pytorch torchvision -c pytorch

不过还是推荐自己找对应版本文件后安装
pytorch下载:https://download.pytorch.org/whl/torch_stable.html

pip install 文件名
  • 在 CPU 平台上:
conda install pytorch torchvision cpuonly -c pytorch

步骤 3. 使用 MIM 安装 MMEngine 和 MMCV。

pip install -U openmim
mim install mmengine
mim install 'mmcv>=2.0.0rc4'

建议mmcv版本尽量安装2.0.1的
(Please install mmcv>=2.0.0rc4, <2.1.0.)
(1)将自己的版本对应修改下面链接后,打开链接下载mmcv
https://download.openmmlab.com/mmcv/dist/cu116/torch1.13.0/index.html
(2)将下载好的文件放入mmselfsup文件夹,

pip install 文件名

步骤 4. 安装 MMSelfSup。
https://github.com/open-mmlab/mmselfsup
下载zip文件或者

git clone https://github.com/open-mmlab/mmselfsup.git

之后进入环境

cd mmselfsup
pip install -v -e .
# "-v" 表示详细,或更多输出
# "-e" 表示以可编辑模式安装项目,
# 因此,对代码所做的任何本地修改都将生效,无需重新安装。

安装部分结束
在这里插入图片描述

2.了解文件结构与配置

  1. 模型的配置文件在
    \mmselfsup-main\configs\selfsup\里,这些文件夹都是对应的自监督模型
    在这里插入图片描述
    比如打开MAE
    在这里插入图片描述
    py文件里是初始的模型信息,命名规则是

{模型信息_{模块信息}_{训练信息}_{数据集信息}

mae_vit-base-p16_8xb512-coslr-400e_in1k.py
意思是:模型为mae,使用的模块为vit-base-p16,训练使用8GPU,batch size为512,使用cos类型的学习率变化函数,数据集为imagenet1k。

更详细内容在官网https://mmselfsup.readthedocs.io/zh-cn/dev-1.x/user_guides/1_config.html

  1. 继承的文件
    在这里插入图片描述
  2. 数据集格式
    除了VOC类型,一般的数据集文件夹结构相似:
    meta里包含train.txt

mmselfsup
├── mmselfsup
├── tools
├── configs
├── docs
├── data
│ ├── imagenet
│ │ ├── meta
│ │ ├── train
│ │ ├── val
│ ├── places205
│ │ ├── meta
│ │ ├── train
│ │ ├── val
│ ├── inaturalist2018
│ │ ├── meta
│ │ ├── train
│ │ ├── val
│ ├── VOCdevkit
│ │ ├── VOC2007
│ ├── cifar
│ │ ├── cifar-10-batches-py

3.训练

  1. 构建自己的配置文件
    在想要使用的模型文件夹 里创建mymae.py文件(configs/selfsup/mae/mymae.py),
    想要修改的部分就写入创建的配置文件里
_base_ = [
    '../_base_/models/mae_vit-base-p16.py',
    '../_base_/datasets/imagenet_mae.py',
    '../_base_/schedules/adamw_coslr-200e_in1k.py',
    '../_base_/default_runtime.py',
]


# 学习率调整器
param_scheduler = [
    dict(type='CosineAnnealingLR', T_max=800, by_epoch=True, begin=0, end=800)
]
lr = 0.05 / 8
optimizer = dict(lr=lr)

# 数据集配置
data_root = 'data/imagenet/'  # 数据集位置
data = dict(
    samples_per_gpu=2,
    worker_per_gpu=1,
    train=dict(
        data_source=dict(
            ann_file='meta/train.txt',
            data_prefix=dict(img_path='./'),
        )
    )
)
# # 设置类别数
# model = dict(
#     head=dict(num_classes=2),
#     memory_bank=dict(num_classes=2),
# )
train_dataloader = dict(
    batch_size=64,   # 调大处理会更快
    num_workers=16,
    )

# 训练次数
default_hooks = dict(
    logger=dict(interval=10),   # 每10次打印一次日志
    checkpoint=dict(interval=20, max_keep_ckpts=5)
    # 每20次保存一次训练好的权重,最多保留最近的5个checkpoint文件
)
train_cfg = dict(max_epochs=200)  # 设置训练次数为200

  1. 训练
    例如:使用8卡的例子
sh tools/dist_train.sh configs/selfsup/mae/mymae.py 8 --work_dir work_dirs/selfsup/mae/mymae/

我的语句(单卡)是

python tools/train.py configs/selfsup/mae/mymae.py

下面成功进行训练:
在这里插入图片描述

常见报错

1.报错:FileNotFoundError: [Errno 2] No such file or directory:‘data/imagenet/train/./train/n04311004/images/n04311004_194.JPEG’

修改imagenet_mae.py第27行为下
在这里插入图片描述

2.报错:报错ImportError: /mmcv/_ext.cpython-38-x86_64-linux-gnu.so: undefined symbol:_ZN2at4_ops7resize_4callERKNS_6TensorEN3c108ArrayRefIlEENS5_8optionalINS5_12MemoryFormatEEE

  1. mmcv和pytorch版本问题,首先要对应
    pytorch下载:https://download.pytorch.org/whl/torch_stable.html;

  2. 然后就是mmcv版本尽量安装2.0.1的
    (Please install mmcv>=2.0.0rc4, <2.1.0.)
    (1)将自己的版本对应修改下面链接后,打开链接下载mmcv
    https://download.openmmlab.com/mmcv/dist/cu116/torch1.13.0/index.html
    (2)将下载好的文件放入mmselfsup文件夹,

pip install 文件名

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试官:小伙子知道synchronized的优化过程吗?我:嘚吧嘚吧嘚,面试官:出去!

写在开头 面试官&#xff1a;小伙子&#xff0c;多线程中锁用过吗&#xff1f; 我&#xff1a;那是自然&#xff01; 面试官&#xff1a;那你知道synchronized的优化吗&#xff1f; 我&#xff1a;synchronized作为重锁&#xff0c;开销大&#xff0c;在早期不被推荐使用&…

蓝桥杯练习04学生成绩统计

学生成绩统计 介绍 随着大数据的发展&#xff0c;数据统计在很多应用中显得不可或缺&#xff0c;echarts作为一款基于JavaScript的数据可视化图表库&#xff0c;也成为了前端开发的必备技能&#xff0c;下面我们一起来用echarts开发一个学生数据统计的柱形图。 准备 开始答…

leetcode LCR121.寻找目标值-二维数组

目录 问题描述示例具体思路思路一思路二 代码实现 问题描述 m*n 的二维数组 plants 记录了园林景观的植物排布情况&#xff0c;具有以下特性&#xff1a; 每行中&#xff0c;每棵植物的右侧相邻植物不矮于该植物&#xff1b; 每列中&#xff0c;每棵植物的下侧相邻植物不矮于该…

狂卷java基础八股

equals和的区别 和equals都是进行一个数据的对比的。 但是如果是在进行的对象的对比的时候。 对比的就是对象的一个地址&#xff0c;但是equals是比较对方具体的值。 hashcode和equals 如何进行使用&#xff1a;靠反射。 java代理模式的实现&#xff1a; 静态代理&#xff1…

VMware Workstation Pro 17虚拟机超级详细搭建(含redis,nacos,docker, rabbitmq,sentinel,elasticsearch....)(一)

今天从零搭建一下虚拟机的环境&#xff0c;把nacos&#xff0c;redis等微服务组件还有数据库搭建到里面&#xff0c;首先看到的是我们最开始下载VMware Workstation Pro 17 之后的样子&#xff0c;总共一起应该有三部分因为篇幅太长了 下载地址 : VMware - Delivering a Digit…

面试题 之 react

1.说说对react的理解 1️⃣是什么 React是用于构建用户界面的 JavaScript 库,遵循组件设计模式、声明式编程范式和函数式编程概念&#xff0c;更高效使用虚拟 DOM 来有效地操作 DOM &#xff0c;遵循从高阶组件到低阶组件的单向数据流。 react 类组件使用一个名为 render() 的方…

【每周赠书活动第1期】Python编程 从入门到实践 第3版(图灵出品)

编辑推荐 适读人群 &#xff1a;本书适合对Python感兴趣的所有读者阅读。 编程入门就选蟒蛇书&#xff01; 【经典】Python入门经典&#xff0c;常居Amazon等编程类图书TOP榜 【畅销】热销全球&#xff0c;以12个语种发行&#xff0c;影响超过 250 万读者 【口碑】好评如潮…

QToolButton 设置图标变灰

1、目的 使用一张图片来实现QToolButton控件两种状态&#xff08;ON和OFF状态&#xff09;的图标。前提不能使用两张图片&#xff0c;也不能使用setEnable来图标变灰&#xff0c;因为当设置了false之后&#xff0c;控件将不能再切换了。 2、方法 知道可以通过QToolButton有s…

JDK安装卸载,path配置,JAVA_HOME配置

文章目录 卸载jdk安装jdk检查jdk安装后path和Java_home环境变量pathJAVA_HOME 卸载jdk 控制面板 —>卸载程序 选择对应的jdk右键卸载&#xff08;我这里还没有jdk&#xff09; 安装jdk 路径都要注意&#xff1a;不能有中文&#xff0c;不能有空格 正在安装 检查 …

亚马逊跨境电商为什么要多备几个店铺?多店铺运营技巧

在亚马逊&#xff0c;链接断货超过15天的话就会降权&#xff0c;之后想要把权重升回来是要下不少功夫的&#xff0c;如果这时候有一个备用店铺的话&#xff0c;就可以跟卖自己大号的链接&#xff0c;先保持出单&#xff0c;把权重稳住那么多店铺就需要多个信用卡进行扣店铺租金…

啥是反射???

在Java编程中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的工具&#xff0c;它允许程序在运行时检查类、接口、字段和方法的信息&#xff0c;并且可以动态地创建和操作对象。 一、反射的基本概念 反射是Java语言的一个特性&#xff0c;它允许程序在运行时对…

鸿蒙开发学习:【华为支付服务客户端案例】

简介 华为应用内支付服务&#xff08;HUAWEI In-App Purchases&#xff09;支持3种商品&#xff0c;包括消耗型商品、非消耗型商品和订阅型商品。 消耗商品&#xff1a;仅能使用一次&#xff0c;消耗使用后即刻失效&#xff0c;需再次购买。非消耗商品&#xff1a;一次性购买…

chatGPT中文在线版本(亲测可用

ChatGPT是一个先进的自然语言处理模型&#xff0c;由OpenAI开发。它通过深度学习技术训练而成&#xff0c;可以进行对话、回答问题等多种自然语言处理任务。对于学生、开发者、研究人员和任何对人工智能感兴趣的人来说&#xff0c;这是一个非常有用的工具。 最近找到一个国内可…

ChatGPT论文指南|总结7个ChatGPT学术论文润色与评价好用的口诀!【建议收藏】

点击下方▼▼▼▼链接直达AIPaperPass &#xff01; AIPaperPass - AI论文写作指导平台 公众号原文▼▼▼▼&#xff1a; ChatGPT论文指南|分享13个学术论文写作ChatGPT口诀&#xff01;【建议收藏】 目录 1.论文润色 2.论文评价 3.书籍介绍 AIPaperPass智能论文写作平…

《自动机理论、语言和计算导论》阅读笔记:p1-p4

《自动机理论、语言和计算导论》学习第1天&#xff0c;p1-p4&#xff0c;总计4页。这只是个人的学习记录&#xff0c;因为很多东西不懂&#xff0c;难免存在理解错误的地方。 一、技术总结 1.有限自动机(finite automata)示例 1.software for checking digital circuits。 …

3.24作业

基于UDP的网络聊天室 项目需求&#xff1a; 如果有用户登录&#xff0c;其他用户可以收到这个人的登录信息如果有人发送信息&#xff0c;其他用户可以收到这个人的群聊信息如果有人下线&#xff0c;其他用户可以收到这个人的下线信息服务器可以发送系统信息 服务器端代码 #in…

esp32CAM环境搭建(arduino+MicroPython+thonny+固件)

arduino ide 开发工具 arduino版本&#xff1a;1.8.19 arduino ide 中文设置&#xff1a;​ file >> preferences >> ​ arduino IDE 获取 ESP32 开发环境&#xff1a;打开 Arduino IDE &#xff0c;找到 文件>首选项 ,将 ESP32 的配置链接填入附加开发板管理网…

FOCUS-AND-DETECT: A SMALL OBJECTDETECTION FRAMEWORK FOR AERIAL IMAGES

摘要 为了解决小对象检测问题&#xff0c;提出了一个叫做 Focus-and Detect 的检测框架&#xff0c;它是一个两阶段的框架。 第 一阶段包括由高斯混合模型监督的对象检测器网络&#xff0c;生成构成聚焦区域的对象簇 。 第二阶段 也是一个物体探测器网络&#xff0c;预测聚焦…

10基于访问权限控制和细粒度控制的方式访问资源

访问权限控制 RBAC 基于角色的访问控制(Role-Based Access Control)是按角色进行授权,如主体的角色为总经理时才可以查询企业运营报表和员工工资信息等 缺点&#xff1a;查询工资所需要的角色变化为总经理和部门经理&#xff0c;此时就需要修改判断逻辑为判断用户角色是否为…

【Django开发】0到1美多商城项目md教程第3篇:用户注册业务实现,1. 用户注册页面绑定Vue数据【附代码文档】

美多商城完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;欢迎来到美多商城&#xff01;&#xff0c;项目准备。展示用户注册页面&#xff0c;创建用户模块子应用。用户注册业务实现&#xff0c;用户注册前端逻辑。图形验证码&#xff0c;图形验证码接口设…