目录

  • mmdetection传到OBS中
  • 写启动代码
  • 修改config

mmdetection传到OBS中

我们需要在训练作业中安装mmdetection。有两种方法,一种是存在OBS中,然后传入训练作业中,另外一种使用代码从github上下载。这里,我们使用第一种方法,因为这样子,我门还可以对mmdetection进行修改。所以,我们先下载mmdetection,然后上传到OBS中。并将此目录作为代码目录。

写启动代码

mmdetection内包括train.py和test.py的启动代码。这里我们不选择修改这两个py,而是新写一个main.py,作为启动代码,将其放在mmdetection的目录下。

import moxing as mox
import os# 接受训练作业传入的两个参数
import argparse
parser = argparse.ArgumentParser(description='training process')
parser.add_argument('--train_url', type=str, default='')  # 训练作业的输出位置
parser.add_argument('--data_url', type=str, default='')  # data在obs上的地址
args, _ = parser.parse_known_args()# 检查目前的路径
print('check dirs')
dirs = os.listdir('.')
print(dirs)  # 输出为mmdetection,说明目前的路径在整个训练的文件夹之外
print(os.path.abspath(__file__))os.system('pip install torch==1.1.0')
os.system('pip install torchvision==0.3.0')
os.system('pip install mmcv')
os.system('pip install -r baseline/pip-requirements.txt')  # 其实这一步可以省略,因为训练作业会自动安装pip-requirements中的依赖
os.system('pip install pillow==6.2.2')# 编译mmedetection,因为当前路径在mmdetection的上层目录,所以得先cd进去
os.system('cd mmdetection \n python setup.py develop')
print('setup done')# 载入数据,因为数据与代码存在不同的位置,所以需要复制进去
os.makedirs('mmdetection/data/coco')
mox.file.copy_parallel(args.data_url, 'mmdetection/data/coco')
print('data done')# # checkpoint for eval
# os.makedirs('mmdetection/checkpoints')
# mox.file.copy_parallel('obs://wq-notebook-test/mmdetection/checkpoints/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth', 'mmdetection/checkpoints/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth')
# # print('eval start')
# # os.system('cd mmdetection \n python tools/test.py configs/faster_rcnn_r50_fpn_1x.py checkpoints/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth --out result.pkl --eval bbox')
# # print('eval end')# 将主干网络的权重复制
print('copy the weights of backbone')
os.makedirs('mmdetection/download_checkpoints')
mox.file.copy_parallel('obs://chongqi-competition/download-checkpoints/resnet50-19c8e357.pth','mmdetection/download_checkpoints/resnet.pth')# 使用分布式进行训练,直接调用./tools/dist_train.sh 而不是./tools/train.py
print('train start')
os.system('chmod 777 mmdetection/tools/dist_train.sh')
os.system('cd mmdetection \n ./tools/dist_train.sh configs/faster_rcnn_r50_fpn_1x.py 1 --validate')
print('train end')# 将训练代码和储存在work_dir下的权重复制回OBS
os.system('rm -r mmdetection/data')
os.system('rm -r mmdetection/download_checkpoints')
mox.file.copy_parallel('mmdetection', args.train_url)
print('copy back to obs')

修改config

由于我们已经将backbone的权重传入,所以就不不需要再下载,这里修改faster_rcnn_r50_fpn_1x.py

model = dict(type='FasterRCNN',pretrained='download_checkpoints/resnet.pth',  # 这里与backbone权重的路径对应backbone=dict(type='ResNet',depth=50,num_stages=4,out_indices=(0, 1, 2, 3),frozen_stages=1,style='pytorch'),

【mmdetection实践】(三)使用华为云安装训练mmdetection相关推荐

  1. 动手实践丨使用华为云IoT边缘体验“边云协同”

    摘要:"边云协同",即云端与边缘的协同.通过边云通道,部署在边缘节点上,并实现在云端远程管理应用,保障部署在边缘的应用能够正常运行,并通过与云端的连线,将业务执行结果在云端呈现. ...

  2. 云上武功秘籍(三)华为云上部署金蝶EAS Cloud

    每天琐事缠身,查错.维护.开接口?--不,你可以更加富有创造力! 假期千里迢迢飞回公司机房处理一个小故障?--不,你可以更加自由高效! 如果这就是你的写照,那为什么不选择上云呢? 如果要上云,那为什么 ...

  3. VMware导出vmdk在华为云安装报错dracut

    安装过程,使用centos7.9打包导出vmdk,然后通过qemu-img命令转为qcow2格式,然后上传到华为云上安装,报错如上图. 根据报错信息,是因为磁盘分区找不到,经过与华为人员沟通,他们解释 ...

  4. 树莓派4b连接WiFi或者热点 + 换源——华为云 + 安装conda

    开启树莓派后无界面(如安装了Ubuntu server18)之后,可以通过 sudo nano /etc/netplan/*.yaml #桌面Ubuntu为0开头的yaml文件,server版本的则是 ...

  5. 华为云安装docker遇到的坑

    1.yum报错 Errors during downloading metadata for repository 'epel': - Status code: 404 for http://arch ...

  6. 华为云安装Docker

    step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 Step 2: 添加软件源信息 ...

  7. 年度发布|华为云2021应用构建技术实践精选集,免费下载

    摘要:围绕极简工具和技术使能,精心遴选云原生.大数据.数据库.AI.物联网等领域的典型云上场景化开发实践,跑通云上开发. 本文分享自华为云社区<年度重磅!华为云2021应用构建技术实践精选集,免 ...

  8. 安防视频上云的趋势、痛点及华为云视频接入服务探索及实践

    随着视频资源与内容在互联网所占比重不断提升,相应的在视频资源利用水平以及不断提高的业务和产品需求之间的矛盾也会愈加突出.本文来自华为云视频接入服务产品经理齐彦昆在线上分享中的演讲,结合在视频接入服务的 ...

  9. 华为云FusionInsight连续三次获得第一,加速释放数据要素价值

    摘要:近日,IDC发布<中国大数据平台市场研究报告,2021 H1>,华为云FusionInsight智能数据湖已连续三次获得大数据平台市场份额第一. 本文分享自华为云社区<华为云F ...

最新文章

  1. package.json字段全解
  2. [小猫学NA]CCNA学习指南第二章笔记
  3. 基于Nanopi NEO开发板的套接字编程!
  4. 2019年Q3:全球超大规模数据中心数量增至504个
  5. 一些软件设计的原则【转】——本来想自己总结,结果发现个更全的,
  6. 【第一季】CH07_FPGA_RunLED创建VIVADO工程实验
  7. oracle is null效率,Oracle查询优化之is null和is not null优化
  8. [数据结构-严蔚敏版]P95矩阵压缩-特殊矩阵的存储(对称矩阵,三角矩阵)
  9. 服务器用户设置备份,用户配置文件状态变成“备份”
  10. linux下查看usb插拔日志,Linux:如何检测usb键盘是否已插入和拔出
  11. C++ Primer Plus 读书笔记(第8、9章)
  12. C++ vector 内存分配与回收机制
  13. underscore.js依赖库函数分析一(遍历)
  14. [转载] 简单工厂模式和工厂方法模式在Python中的实现
  15. C#连接SQL Server数据库
  16. 详细设计的工具——程序流程图
  17. Layui treeTable相关
  18. 虚幻4 游戏引擎(二):蓝图教学
  19. day073 项目_IT橘子爬虫
  20. 国家自然科学基金查阅

热门文章

  1. 人工智能下的智慧运维实践—运维可视化
  2. 如何关闭360的各种弹窗
  3. 【精品】Redis在项目中的应用场景
  4. 模型量化-对称量化和非对称量化
  5. 【Windows使用笔记】Windows日常使用软件
  6. ThinkPHP5 如何介入阿里云反文本垃圾敏感词过滤【附源码】
  7. 服务器IP地址改变后SVN重新定位失败问题的解决
  8. Fortran pgplot安装
  9. 联想笔记本电脑开机后一直转圈无法启动怎么办?
  10. Visual Studio 2019 Python 环境配置