上一篇博文我们搭建好了超算平台对MMYOLO编译环境,并通过单张图片加载训练好的模型进行推理。本篇文章参考MMYOLO官方发布的自定义数据集 标注+训练+测试+部署 全流程文档,进一步在超算平台中实现yolo v5网络的训练。

1.数据集的构建和可视化分析

1.1 MIDOG公开数据集介绍

本次实验采用的是病理图像有丝分裂检测数据集,边界框标注了两个类别: mitosis figure表示该细胞为有丝分裂细胞,not mitosis figure为比较容易与有丝分裂状态混淆的其他阶段的细胞。关于该数据集的详细介绍可以参考之前的两篇文章。

  • 有丝分裂检测竞赛,MICCAI举办。

  • 200张训练图像,每张图片大小为组织切片感兴趣区域,尺寸大约为5k*5k pix

  • 染色标准相同:UMC Utrecht病理实验室制备得到

  • 扫描设备不同:50 each from Hamamatsu XR nanozoomer 2.0 (HXR), Hamamatsu S360 0.5 NA (HS360), Aperio ScanScope CS2 (ACS), and Leica GT450

1.2 数据格式的转换

  • 解析MIDOG的标注文件.json → df = get_bbox_df()

  • 训练集和测试集划分 → train_test_split(df)

  • 图像块生成:不重叠裁剪成512*512尺寸的patch → mask_segmentor()

from PatchSeg_functions import mask_segmentor
from Data_functions import get_bbox_df, train_test_split
############ Preparation ################## Get dataset and generate 512x512 crops from the original WSIs
df = get_bbox_df()
df_train, df_test = train_test_split(df)
image_ids=list(df['file_name'].unique())
mask_segmentor(image_ids,df,512,512,categories=['mitotic figure'],image_folder="I:/Pathology/Dataset/MIDOG2021/image_crops/")
  • 解析json文件

  • 主要是两个列表元素:images和annotations

  • images列表中包含200张图像信息:file_name,id,width和height

  • annotation中包含了4435个标注信息:bbox坐标,category_id,image_id,id(第几个标注)

  • 最终得到df,shape = {tuple: 2}(4435, 8),如下图所示

1.3 训练集和测试集划分

  • A、B、C三个中心分别有50张图片,每个中心以8:2的比例划分训练集和测试集【前40个为训练集,后10个为测试集】

  • 分别训练三个模型,并在另外1个中心进行外部测试。eg:A训练模型,B和C外部测试

  • 只对外部测试集进行校正,参与模型训练的数据集不进行颜色校正

  • 划分好的数据集文件夹如下图,和coco格式保持一致

1.4 检查数据集的标签(重要)

数据格式准备好之后,可以使用tools中的分析工具browse_coco_json.py验证一下自己的数据集标签是否有问题。具体命令如下:

python tools/analysis_tools/browse_coco_json.py --img-dir ${图片文件夹路径} \--ann-file ${COCO label json 路径}

另外MMYOLO还提供了数据集分布可视化的工具,非常好用。该脚本使用方式如下:

python tools/analysis_tools/dataset_analysis.py ${CONFIG} \[--val-dataset ${TYPE}] \[--class-name ${CLASS_NAME}] \[--area-rule ${AREA_RULE}] \[--func ${FUNC}] \[--out-dir ${OUT_DIR}]

2.修改config文件

接下来可以为自己的数据集和网络建立一个新的config文件,放置在config文件夹下面。以下是我为该数据集创建的配置文件。主要修改了这些内容:

  • data_root数据路径:在超算平台中数据集都放置在data里(这里提供了300G空间,并且放在这个路径下数据读取速度也快),可根据具体位置设置

  • load_from预训练模型的下载路径:这里注意不能放置下载链接,因为超算平台中的计算节点是无法链接互联网的,需要把模型下载好,改成存放路径

  • class_name类别信息、数据集中的路径信息需要修改成自己的

  • anchors尺寸需要修改,MMYOLO也提供了很多生成anchor的脚本,这里采用v5-k-means聚类的方式进行锚框的优化。命令如下:

python tools/analysis_tools/optimize_anchors.py configs/custom_dataset/yolov5_s-v61_syncbn_fast_1xb32-100e_cat.py \--algorithm v5-k-means \--input-shape 640 640 \--prior-match-thr 4.0 \--out-dir work_dirs/dataset_analysis_cat

3.编写sh脚本启动训练

3.1 运行前注意事项

修改好配置文件之后,就可以使用tools中的train,因为超算平台无法在登录节点运行含有GPU内容的脚本,所以train.py无法在登录节点运行

  • 我尝试运行过,它会提示mmengine库不存在等问题,实际上已经安装了,只有在计算节点才可以识别配置的第三方库。

3.2 sh脚本

  • 首先,我把.sh文件写在了与mmyolo文件夹并列的目录中,具体内容如下:

#!/bin/sh
# 加载 anaconda
module load anaconda/2020.11
# 加载 cuda 11.3
module load cuda/11.3
# 激活 python 虚拟环境
source activate openmmlab
cd mmyolo
export PYTHONUNBUFFERED=1
# yolov5 python 训练的的命令
python tools/train.py configs/custom_dataset/yolov5_s-v61_syncbn_fast_1xb32-100e_cat.py 
  • 接下来在登录节点输入命令: sbatch --gpus=1 sub.sh启动训练过程,这时候本应该在终端显示我们的配置文件、编译环境、网络结构、训练epoch等内容,超算平台将这些内容全部输出到slurm-276560.out文件中,我们可以通过查看该文件的内容对代码进行调试。

  • 至此,网络就正常跑通了,接下来等训练结束,可以进行测试。后续开始学习yolo v5的网络结构,看如何加入自己的修改内容。

【超级视客营】基于超算平台的MMYOLO实践过程记录(自定义数据集实现YOLO v5)相关推荐

  1. 信创办公–基于WPS的PPT最佳实践系列 (自定义版式)

    信创办公–基于WPS的PPT最佳实践系列 (自定义版式) 目录 应用背景 相关知识 操作步骤 应用背景 在PPT幻灯片当中,拥有11种版式,我们可以在任何一个页面当中单击鼠标右键,选中[版式]功能即可 ...

  2. 超级全能CPU+GPU异构超算平台

    异构计算主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式.常见的计算单元类别包括CPU.GPU等协处理器.DSP.ASIC.FPGA等.异构计算是一种并行和分布式计算,它或是用能同时支 ...

  3. 基于超算平台气象预警并行计算架构研究

    作者简介:武汉小牛专注于GIS大数据应用.微服务.WEBGIS [应用场景/主要解决问题] 将来气象预警的精度要求越来越高,不仅追求气象采点的密度增加,还要求预报服务产品更加细化,信息发布更加快捷.利 ...

  4. 使用微信公众平台“编辑模式”的过程记录

    研究了下微信公众平台,微信应用是从"公众号"开始.通过微信的服务号,一个组织(包含企业.单位等)可以不用任何技术力量就搭建自己的"微网站",再深入的应用就要通过 ...

  5. 千万级到10亿+的疯涨,搜狗商业平台服务化体系实践之路

    挑战 搜狗商业平台为打造搜狗一站式营销服务平台提供基础架构支撑,支持跨平台的广告主及代理商的接入.广告投放.效果评估.策略优化以及资金管理等.近年来搜狗业务飞速发展,在线广告物料实现了千万级到10亿+ ...

  6. 二十. 在ROS系统上实现基于PyTorch YOLO v5的实时物体检测

    一. 背景介绍 在我前面的博文 十八.在JetsonNano上为基于PyTorch的物体检测网络测速和选型 中,我介绍过在基于Jetson Nano硬件平台和Ubuntu 18.04 with Jet ...

  7. 云知声 Atlas 超算平台: 基于 Fluid + Alluxio 的计算加速实践

    Fluid 是云原生基金会 CNCF 下的云原生数据编排和加速项目,由南京大学.阿里云及 Alluxio 社区联合发起并开源.本文主要介绍云知声 Atlas 超算平台基于 Fluid + Alluxi ...

  8. 项目体系架构设计——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(四)

    系列文章目录 初识推荐系统--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(一) 利用用户行为数据--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二) 项目主要效果展示--基 ...

  9. 利用用户行为数据——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二)

    系列文章目录 初识推荐系统--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(一) 利用用户行为数据--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二) 项目主要效果展示--基 ...

最新文章

  1. c语言 打砖块,打砖块
  2. EBS 11i数据库升级(9i-10g)几点事项
  3. bootstrap-table真实交互数据_博思远略:基于AI交互场景数据构建用户画像的几点思考...
  4. 《斗罗大陆》引入阿里云云原生数据库 PolarDB 游戏体验更流畅
  5. android 解决getNetworkInfo过时
  6. 非vue子页面 调用vue父页面方法
  7. 排序算法:快速排序算法实现及分析(递归形式和非递归形式)
  8. WPF 使用Console.Write打印信息到控制台窗口中
  9. php extjs 教程,Exjs 入门篇_extjs
  10. gcc/g++ 编译、链接与常用命令工具(1)
  11. serve注解是加在哪个类_PHP 8新特性之Attributes(注解)
  12. 阿里云张献涛:公共云不断向外延伸,一云多态是未来趋势
  13. LightBurn(激光切割排版软件)官方中文版V1.0.04 | 激光切割排版软件哪个好
  14. NOI2014起床困难综合症
  15. PDF旋转保存居然还能如此高效的办法
  16. latex参考文献bib基本格式_在Latex中利用.bib进行参考文献管理
  17. 1300款主流单机游戏下载 大型PC电脑游戏使命14尼尔5模拟合集
  18. 东南亚跨境电商ERP怎么选?萌店长ERP,含大数据分析的免费erp系统
  19. java文档打印_java 如何读取文档中的内容 并打印
  20. SpringBoot——关于banner

热门文章

  1. SwiftUI iOS 精品完成项目之宠物展示与领养App MVVM(教程含源码)
  2. 【STM32-机智云平台】ESP8266模块,如何烧录机智云固件,参考经验贴
  3. SSM实现物流管理系统快递
  4. Mac数据恢复首选easyrecovery
  5. multisim中轻触开关在哪_proteus中这个开关在哪
  6. 成长杂志成长杂志社成长编辑部2022年第7期目录
  7. ignore在mysql中什么意思_INSERTIGNORE与INSERTINTO的区别_MySQL
  8. golang slice map扩容
  9. 网页从输入url到呈现页面流程
  10. Android USB开发小结:host模式与accessory模式