前一阵子参加了华为的多目标检测比赛 link,尝试通过 faster_rcnn 算法定位和分类病理图像中的癌细胞。MindSpore 是华为的 AI 框架,支持华为自研的Ascend芯片。MindSpore目前不支持macOS,不过组织方提供了华为云作为训练平台。以下将分享使用mindspore及华为云的经验。
Notebook
-
首先可以从mindspore官方的 gitee 上下载faster_rcnn模型, 注意原先的model_zoo已经被移至model 仓库,同时还可以这里 link 下载在imageNeth上预训练的模型,我选择的是resnet_50。
-
接下来使用华为云的model_art新建notebook。有多种设置可以进行选择,我使用的是mindspore1.2.1-cuda10.1和Ascend. 这个笔记本跟google colab类似但功能更加强大,你可以在上面新建jupyter notebook,打开ternimal, 查看json,csv文件(文件查看器的功能很棒)等等。 将需要用的文件保存在work文件夹下,包括先前下载的faster_rcnn和预训练模型。
-
按照faster_rcnn下的readme文件执行代码,首先应该修改default_config.yaml, 根据你使用的数据集更改coco_classes和num_classes。这一步在readme文件中省略了,但是会影响模型的结构和训练的效率。接下来对预训练的模型进行处理
python convert_checkpoint.py --ckpt_file=[BACKBONE_MODEL]ckpt_file为到预训练的模型的路径。这步之后会得到所需要的backbone.ckpt。
-
下一步是处理自己的数据集,新建txt文件,每行是按空间分割的图像标注,格式如下
0000001.jpg 0,259,401,459,7,0 35,28,324,201,2,0 0,30,59,80,2,0第一列是图像的相对路径【不需要写成train2017/0000001.jpg】,其余为[xmin,ymin,xmax,ymax,class,is_crowd]格式的框
-
继续修改default_config.yaml,save_checkpoint_epochs修改成10(notebook上的空间有限,设为1可能在几十个epoch后出现disk存储空间不够用),更改anno_path和image_dir。
-
执行bash run_standalone_train_ascend.sh [PRETRAINED_MODEL] [BACKBONE] [COCO_ROOT] [MINDRECORD_DIR]。PRETRAINED_MODEL为backbone.ckpt的路径。BACKBONE=resnet_v1.5_50,COCO_ROOT不需要,MINDRECORD_DIR设成想要存放MINDRECORD的路径。MINDRECORD类似tensorflow的tfrecord。

注意:第一个epoch涉及图的生成会比较慢 -
执行bash run_eval_ascend.sh [VALIDATION_JSON_FILE] [CHECKPOINT_PATH] [BACKBONE] [COCO_ROOT] [MINDRECORD_DIR]。CHECKPOINT_PATH为训练得到的faster_rcnn-12_50.ckpt 。如果只想看在训练集上的结果,[VALIDATION_JSON_FILE]可以直接使用annotations/train.txt ,[COCO_ROOT] [MINDRECORD_DIR]保持不变。
-
下载生成的results.pkl.bbox,进行可视化

可以看到结果不是很理想,可能是训练次数不够多的问题。#可视化的代码 with open(anno_path,"r") as f: imgs=[image_dir+line.strip().split(" ")[0] for line in f.readlines()] with open(anno_path,"r") as f: annotations=get_annotation(f) with open(pred_path,"r") as fp: pred_res=json.load(fp) id2img=dict(zip(range(1,len(imgs)+1),imgs)) for

本文分享了作者在华为多目标检测比赛中使用MindSpore框架在病理图像中定位癌细胞的经历,包括下载预训练模型、配置参数、数据处理、模型训练及使用OBS和Algorithm进行云上部署的过程。
最低0.47元/天 解锁文章
695

被折叠的 条评论
为什么被折叠?



