MindSpore之Faster_rcnn

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

前一阵子参加了华为的多目标检测比赛 link,尝试通过 faster_rcnn 算法定位和分类病理图像中的癌细胞。MindSpore 是华为的 AI 框架,支持华为自研的Ascend芯片。MindSpore目前不支持macOS,不过组织方提供了华为云作为训练平台。以下将分享使用mindspore及华为云的经验。

Notebook

  1. 首先可以从mindspore官方的 gitee 上下载faster_rcnn模型, 注意原先的model_zoo已经被移至model 仓库,同时还可以这里 link 下载在imageNeth上预训练的模型,我选择的是resnet_50。

  2. 接下来使用华为云的model_art新建notebook。有多种设置可以进行选择,我使用的是mindspore1.2.1-cuda10.1和Ascend. 这个笔记本跟google colab类似但功能更加强大,你可以在上面新建jupyter notebook,打开ternimal, 查看json,csv文件(文件查看器的功能很棒)等等。 将需要用的文件保存在work文件夹下,包括先前下载的faster_rcnn和预训练模型。

  3. 按照faster_rcnn下的readme文件执行代码,首先应该修改default_config.yaml, 根据你使用的数据集更改coco_classes和num_classes。这一步在readme文件中省略了,但是会影响模型的结构和训练的效率。接下来对预训练的模型进行处理

    python convert_checkpoint.py --ckpt_file=[BACKBONE_MODEL]
    

    ckpt_file为到预训练的模型的路径。这步之后会得到所需要的backbone.ckpt。

  4. 下一步是处理自己的数据集,新建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]格式的框

  5. 继续修改default_config.yaml,save_checkpoint_epochs修改成10(notebook上的空间有限,设为1可能在几十个epoch后出现disk存储空间不够用),更改anno_path和image_dir。

  6. 执行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涉及图的生成会比较慢

  7. 执行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]保持不变。

  8. 下载生成的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
<think> 我们正在处理一个关于代码中`create_simple_faster_rcnn`函数出现爆红(即代码编辑器中标记为错误,通常指未定义或无法解析的符号)的问题。由于没有提供具体的代码上下文,我将基于常见原因提供解决方案。 常见原因及解决方案: 1. **未导入相关模块**:确保已经正确导入了定义`create_simple_faster_rcnn`的模块。 2. **函数名拼写错误**:检查函数名是否拼写正确(注意大小写和下划线)。 3. **依赖库未安装**:如果该函数来自某个第三方库,请确保已经安装了该库,并且版本正确。 4. **环境问题**:检查当前Python环境是否安装了所需的库,以及IDE是否使用了正确的解释器。 步骤: 1. 确认函数来源:通常`create_simple_faster_rcnn`可能来自一些目标检测库,比如`keras-frcnn`或`simple-faster-rcnn-pytorch`等。根据您使用的框架(PyTorch或TensorFlow/Keras),安装对应的库。 2. 安装库:例如,如果是基于PyTorch的一个实现,您可能需要安装对应的包。但请注意,这个函数名可能是一个自定义函数,因此需要查看您的代码库中是否有定义。 假设您使用的是公开的`simple-faster-rcnn-pytorch`库,您可以尝试以下步骤: ```bash pip install simple-faster-rcnn-pytorch ``` 然后在代码中导入: ```python from simple_faster_rcnn import create_simple_faster_rcnn ``` 如果这个库中没有这个函数,那么可能是您自己实现的,您需要检查您的代码文件中是否定义了该函数。 3. 如果函数是自定义的,请确保在调用之前已经定义了该函数,或者从定义它的模块中导入。 例如,在一个名为`model.py`的文件中定义了`create_simple_faster_rcnn`,那么您需要: ```python from model import create_simple_faster_rcnn ``` 4. 如果以上步骤都无效,请检查您的IDE(如PyCharm)是否正确地索引了项目。有时重启IDE或重新构建索引可以解决问题(在PyCharm中,选择File -> Invalidate Caches / Restart)。 5. 如果是在Jupyter Notebook中,请确保已经运行了包含函数定义的单元格。 如果问题仍然存在,请提供更多上下文信息,例如: - 代码片段(调用`create_simple_faster_rcnn`的部分以及导入部分) - 错误信息的具体内容 - 项目结构(特别是自定义函数的位置) 这样我们可以更准确地定位问题。 §§相关问题§§ 1. 如何正确安装和使用`simple-faster-rcnn-pytorch`库? 2. 在PyCharm中如何解决未解析的引用错误? 3. 如何自定义实现一个简单的Faster R-CNN模型? </think> 针对代码中`create_simple_faster_rcnn`函数出现"爆红"(通常指IDE中标记为错误)的问题,以下是系统性的解决方案: ### 1. **检查函数来源与导入** - **确认函数定义位置**: ```python # 正确导入示例(根据实际库调整) from some_frcnn_module import create_simple_faster_rcnn # 或 from models.faster_rcnn import create_simple_faster_rcnn ``` - **常见来源库**: - `keras-frcnn`:需安装 `pip install keras-frcnn` - 自定义实现:检查项目内是否有 `faster_rcnn.py` 等文件 ### 2. **依赖库安装** ```bash # 安装可能相关的库 pip install keras tensorflow torch torchvision pip install keras-frcnn # 或指定版本 pip install keras-frcnn==0.1.0 ``` ### 3. **环境问题排查** - **虚拟环境**: ```bash python -m venv frcnn_env # 创建新环境 source frcnn_env/bin/activate # Linux/Mac frcnn_env\Scripts\activate # Windows pip install -r requirements.txt ``` - **版本冲突**: ```python import tensorflow as tf print(tf.__version__) # 确认版本兼容性(推荐 TF>=2.4) ``` ### 4. **替代实现方案** 若函数不存在于当前环境,可手动实现基础版本: ```python import torch import torchvision def create_simple_faster_rcnn(num_classes): model = torchvision.models.detection.fasterrcnn_resnet50_fpn( pretrained=True, num_classes=num_classes+1 # +1 for background ) return model # 调用示例 model = create_simple_faster_rcnn(num_classes=10) ``` ### 5. **IDE配置检查** - **PyCharm**:`File > Invalidate Caches / Restart` - **VSCode**:重载窗口(`Ctrl+Shift+P` > `Reload Window`) - 确保项目目录已标记为源代码根目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值