• 【CANN训练营】新手班结业考核


    CANN训练营第二季官网链接,可以报名和申请资源,申请完资源,开通弹性云服务器,使用华为给准备好的环境,就可以上手实验和完成考核了

    作业一:Caffe ResNet-50网络实现图片分类

    题目:下载基于Caffe ResNet-50网络实现图片分类(仅推理)样例应用的源码,并参考Readme成功编译、运行应用,体验基础推理过程。
    评分细则:

    1. 下载样例源码并成功编译、运行,结果正确,上传运行结果截图至附件。【20分】
    2. 数据替换成自己的图片并重新编译运行成功,上传运行结果截图以及修改后的源码至附件。【20 分】

    评分一步骤

    1. 使用SSH客户端连接弹性云服务器
    2. 克隆samples代码库
    git clone https://gitee.com/ascend/samples.git
    
    • 1
    1. 切换用户及目录
    su - HwHiAiUser
    source ~/Ascend/ascend-toolkit/set_env.sh
    cd samples/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification
    
    • 1
    • 2
    • 3
    1. 准备ResNet-50模型
      可以从以下链接中获取ResNet-50网络的模型文件(resnet50.prototxt)、预训练模型文件(resnet50.caffemodel),并以HwHiAiUser用户将获取的文件上传至开发环境的“resnet50_imagenet_classification/caffe_model“目录下。如果目录不存在,需要自行创建。所有操作均使用HwHiAiUser进行,否则会出现权限问题
    2. 转换模型
      下面展示一些 内联代码片
      在resnet50_imagenet_classification目录下
    atc --model=caffe_model/resnet50.prototxt --weight=caffe_model/resnet50.caffemodel --framework=0 --output=model/resnet50 --soc_version=Ascend310 --input_format=NCHW --input_fp16_nodes=data --output_type=FP32 --out_nodes=prob:0
    
    • 1
    1. 准备数据
      将图片dog1_1024_683.jpgdog2_1024_683.jpg上传至“resnet50_imagenet_classification/data“目录下
      执行命令将*.jpg*转换为*.bin*
    python3 ../script/transferPic.py
    
    • 1
    1. 编译代码
      在resnet50_imagenet_classification目录下
    # 设置环境变量
    export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest
    export NPU_HOST_LIB=$DDK_PATH/acllib/lib64/stub
    # 创建目录用于存放编译文件
    mkdir -p build/intermediates/host
    cd build/intermediates/host
    cmake ../../../src -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUE
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    make
    
    • 1

    在这里插入图片描述

    cd ../../../out/
    ./main
    
    • 1
    • 2

    在这里插入图片描述

    评分二步骤

    1. 准备两张图片,并上传至“resnet50_imagenet_classification/data“目录下,必须是*,jpg*格式图片,可以是类似图片,这里取名为mao_1.jpg

    在这里插入图描述
    3. 执行命令将*.jpg*转换为*.bin*

    python3 ../script/transferPic.py
    
    • 1
    1. 修改代码,主要是讲原来要识别的狗的图片,变为我们自己上传的图片
      vim src/sample_process.cpp
    string testFile[] = {
            "../data/mao_1.bin",
            "../data/mao_2.bin"
        };
    
    • 1
    • 2
    • 3
    • 4
    1. 重新执行上面的第7步即可

    作业二待补充ing

    1. 使用Tensorflow1.15实现LeNet网络的minist手写数字识别。硬件平台不限,可以基于window或者linux系统,尽量给出整个过程的截图,并在最后给出Loss或者accuracy运行结果。 参考链接Gitee或Github。【15分】
      提交样式:步骤xx截图xx

    2. 采用课程中学习到的手工或自动迁移方式,将上述脚本迁移到昇腾AI处理器上,不要求执行训练,仅需提交迁移后的脚本。【15分】

    3. 将上述迁移好的LeNet网络使用minist数据集在ModelArts平台上正常跑通。
      评分明细:
      a. Pycharm控制台界面有正常训练日志打印,给出截图。【5分】
      b. 将最终训练的模型权重文件(训练步数不限)保存在OBS上,给出截图。【2分】
      c. 给出当前训练的CANN运行日志截图,给出截图。【3分】

    作业三

    基于Caffe ResNet-50网络实现图片分类(仅推理)样例,更换为ResNet-101分类模型。更换同类模型时,由于模型的输入、输出相似,所以源码基本可以复用,只需更换模型即可。
    评分细则:

    1. 模型转换成功,上传模型转换成功提示的截图至附件。【5 分】
    2. 修改代码并运行成功,上传运行结果截图以及修改后的源码至附件。【5 分】

    评分一

    1. 下载模型
      模型地址为:modelzoo resnet101,将获取的文件上传至开发环境的“resnet50_imagenet_classification/caffe_model“目录下。
    2. 转换命令为
    atc --model=caffe_model/resnet101_tf.pb --framework=3 --output=model/resnet101_tf --output_type=FP32 --soc_version=Ascend310 --input_shape="input:1,224,224,3" --log=info
    
    • 1
    1. 修改代码
      a. 主要是将原来的resnet50改为resnet101,vim src/sample_process.cpp,
    const char* omModelPath = "../model/resnet50.om";
    替换为
    const char* omModelPath = "../model/resnet101_tf.om";
    
    • 1
    • 2
    • 3

    b. 修改编码,vim script/transferPic.py

    img = img.astype("float16")
    替换为
    img = img.astype("float32")
    
    • 1
    • 2
    • 3

    然后执行作业一第一步的6,7两步

  • 相关阅读:
    OTN光层保护
    【AI视野·今日NLP 自然语言处理论文速览 第四十一期】Tue, 26 Sep 2023
    【BSP开发之uboot】uboot常用命令以及代码分析
    Apisix版本升级--虚拟机
    训练到第23个epoch中止,无法正常运行
    在代码评审中用好这7招,很容易就能建立起你的反对同盟
    GIt后悔药:还原提交的操作(谨慎操作)
    基于java的东京奥运会论坛系统
    真正“搞”懂HTTPS协议17之TLS握手
    如何支持h.265视频
  • 原文地址:https://blog.csdn.net/BurningSilence/article/details/126288115