文档
注册

运行目标检测样例

yolov3模型对输入图片进行预测推理,并将结果打印到输出图片上。本章节以在“/home”目录下获取sample仓代码为例。

样例输入:原始图片jpg文件。

样例输出:带推理结果的jpg文件。

获取样例

操作步骤如下:

  1. root用户登录服务器。
  2. 选择相应的安装包命令安装依赖(以CentOS和Ubuntu系统为例)。
    • Ubuntu执行如下命令安装。
      apt-get install git  
    • CentOS执行如下命令安装。
      yum install git  
  3. 在服务器任意目录下(如“/home”)执行如下命令获取sample仓代码。
    git clone https://gitee.com/ascend/samples.git

    如果返回类似以下回显信息:

    fatal: unable to access 'https://gitee.com/ascend/samples.git/': server certificate verification failed. CAfile: none CRLfile: none

    则执行git config --global http.sslVerify "false"命令关闭证书检验,再执行git clone https://gitee.com/ascend/samples.git命令获取sample仓代码。

准备模型

  1. 执行如下命令安装Python依赖。
    pip3 install attrs psutil
  2. 在sample仓代码所在目录下,执行如下命令进入“样例目录”
    cd samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture

    下文中的“样例目录”均指“samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture”目录

  3. 进入“样例目录/model”目录,获取yolov3原始模型。
    cd model     
    wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/Yolov3/yolov3.caffemodel --no-check-certificate
    wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/Yolov3/yolov3.prototxt --no-check-certificate
    wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/YOLOV3_coco_detection_picture/aipp_nv12.cfg --no-check-certificate
  4. 配置环境变量。
    source /usr/local/Ascend/ascend-toolkit/set_env.sh 
  5. 模型转换。

    执行npu-smi info命令查看芯片名称,如下图所示,则该设备芯片名为Ascend310P3。

    “样例目录/model”目录下,执行如下命令转换模型。其中“--soc_version”参数值(如下加粗内容所示)根据查询的实际芯片名称(以“Ascend310P3”为例)填写:

    atc --model=yolov3.prototxt --weight=yolov3.caffemodel --framework=0 --output=yolov3 --soc_version=Ascend310P3 --insert_op_conf=aipp_nv12.cfg
    • --model:原始模型文件路径。
    • --weight:权重文件路径。
    • --framework:原始框架类型。0:表示Caffe;1:表示MindSpore;3:表示TensorFlow;5:表示ONNX。
    • --output:生成的yolov3.om文件存放在“样例目录/model”目录下。建议使用命令中的默认设置。
    • --soc_version:昇腾AI处理器的版本。
    • --insert_op_conf:cfg文件路径。

安装依赖

请用户参见安装opencv安装。

部署和运行样例

  1. “样例目录/src”目录下,执行如下命令打开CMakeLists.txt文件。
    vi CMakeLists.txt

    “include_directories”参数中加入头文件路径,在“link_directories”参数中加入库文件路径(以“/usr/local/lib”为例,请用户以实际路径替换),如下加粗内容所示:

    # Header path
    include_directories(
        $ENV{INSTALL_DIR}/runtime/include/
        ../inc/
        /usr/local/include/opencv4
    )
    
    if(target STREQUAL "Simulator_Function")
        add_compile_options(-DFUNC_SIM)
    endif()
    
    # add host lib path
    link_directories(
        $ENV{INSTALL_DIR}/runtime/lib64/stub
        /usr/local/lib
    )
  2. “样例目录/src”目录下,执行如下命令,修改“object_detect.cpp”文件。
    vi object_detect.cpp

    将参数“CV_LOAD_IMAGE_UNCHANGED”移除或注释,如下加粗内容所示(修改位置可执行:333命令查找):

    void ObjectDetect::DrawBoundBoxToImage(vector<BBox>& detectionResults,
                                           const string& origImagePath)
    {
        cv::Mat image = cv::imread(origImagePath); // , CV_LOAD_IMAGE_UNCHANGED
        for (int i = 0; i < detectionResults.size(); ++i) {
            cv::Point p1, p2;
            p1.x = detectionResults[i].rect.ltX;
            p1.y = detectionResults[i].rect.ltY;
            p2.x = detectionResults[i].rect.rbX;
            p2.y = detectionResults[i].rect.rbY;
            cv::rectangle(image, p1, p2, g_colors[i % g_colors.size()], g_lineSolid);
            cv::putText(image, detectionResults[i].text, cv::Point(p1.x, p1.y + g_labelOffset),
                        cv::FONT_HERSHEY_COMPLEX, g_fountScale, g_fontColor);
        }
    
        string folderPath = "./output";
        if (NULL == opendir(folderPath.c_str())) {
            mkdir(folderPath.c_str(), 0775);
        }
        int pos = origImagePath.find_last_of("/");
        string filename(origImagePath.substr(pos + 1));
        stringstream sstream;
        sstream.str("");
        sstream << "./output/out_" << filename;
        cv::imwrite(sstream.str(), image);
    }
  3. 配置环境变量。
    1. 以运行用户在任意目录下执行vi ~/.bashrc命令,打开.bashrc文件,在文件最后一行后面添加如下内容。
      以CANN的默认安装路径“/usr/local/Ascend”为例,用户请根据CANN的实际安装路径配置。
      export CPU_ARCH=`arch` 
      export THIRDPART_PATH=/usr/local/Ascend/thirdpart/${CPU_ARCH}  #代码编译时链接samples所依赖的相关库文件
      export INSTALL_DIR=/usr/local/Ascend/ascend-toolkit/latest
    2. 执行:wq!命令保存文件并退出。
    3. 执行source ~/.bashrc命令使其立即生效。
  4. “样例目录”下创建样例相关依赖文件夹。
    mkdir -p ${THIRDPART_PATH}
  5. 拷贝common文件到样例相关依赖路径中。
    # ${samples}表示样例所在目录(如“/home”)
    cp -r ${samples}/samples/common ${THIRDPART_PATH}
    # 命令示例
    cp -r /home/samples/common ${THIRDPART_PATH}
  6. “样例目录/scripts”目录下,执行以下命令,执行编译脚本,开始样例编译。
    bash sample_build.sh
  7. “样例目录/scripts”目录下,执行运行脚本,开始运行样例。
    bash sample_run.sh
  8. 运行完成后,会在“样例目录/out/output”目录下生成推理后的图片,用户可将图片下载至本地,显示对比结果如下所示。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词