文件最后提交记录最后更新时间
!880 [重庆邮电大学][高校贡献][PyTorch离线推理][FaceBoxes]-初次提交 * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * add ACL_PyTorch/contrib/cv/face/FaceBoxes/dlt_cuda.patch. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/dlt_cuda.patch * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * add ACL_PyTorch/contrib/cv/face/FaceBoxes/dlt_cuda.patch. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/requirements.txt * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/modelzoo_level.txt * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/act.sh * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/test * update ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/evaluate.py. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/evaluate.py. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/convert.py * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/evaluate.py * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/split.py * update ACL_PyTorch/contrib/cv/face/FaceBoxes/aipp.config. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/aipp.config * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/utils * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/layers * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/models * update ACL_PyTorch/contrib/cv/face/FaceBoxes/layers/modules/multibox_loss.py. * 新建 layers * 添加faceboxes 710修改 * 添加faceboxes 310P修改 * 添加faceboxes 310P修改 * 添加faceboxes 310P修改 * 添加faceboxes 310P修改 3 年前
init 4 年前
fix link validity Co-authored-by: frozenleaves<914814442@qq.com> # message auto-generated for no-merge-commit merge: !7517 merge master into master fix link validity Created-by: frozenn Commit-by: frozenleaves Merged-by: ascend-robot Description: ## Motivation Please describe the motivation of this PR and the goal you want to achieve through this PR. ## Modification Please briefly describe what modification is made in this PR. ## Self-test (Optional) If modifications to this PR may cause/fix function/accuracy/performance DTSs/issues, a self-inspection record needs to be attached. ## BC-breaking (Optional) If there are compatibility issues, such as dependencies on cann/torch_npu versions, they need to be explained in the PR. ## Checklist **Before PR**: - [ ] The new code needs to comply with the Clean Code specification. - [ ] The PR content is self-checked, and the expression can be clear and the writing standardized **After PR**: - [ ] CLA has been signed and all committers have signed the CLA in this PR. - [ ] The ci-pipeline is passed, Code Check is passed. See merge request: Ascend/ModelZoo-PyTorch!75171 个月前
!880 [重庆邮电大学][高校贡献][PyTorch离线推理][FaceBoxes]-初次提交 * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * add ACL_PyTorch/contrib/cv/face/FaceBoxes/dlt_cuda.patch. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/dlt_cuda.patch * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * add ACL_PyTorch/contrib/cv/face/FaceBoxes/dlt_cuda.patch. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/requirements.txt * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/modelzoo_level.txt * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/act.sh * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/test * update ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/evaluate.py. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/evaluate.py. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/convert.py * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/evaluate.py * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/split.py * update ACL_PyTorch/contrib/cv/face/FaceBoxes/aipp.config. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/aipp.config * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/utils * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/layers * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/models * update ACL_PyTorch/contrib/cv/face/FaceBoxes/layers/modules/multibox_loss.py. * 新建 layers * 添加faceboxes 710修改 * 添加faceboxes 310P修改 * 添加faceboxes 310P修改 * 添加faceboxes 310P修改 * 添加faceboxes 310P修改 3 年前
!880 [重庆邮电大学][高校贡献][PyTorch离线推理][FaceBoxes]-初次提交 * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * add ACL_PyTorch/contrib/cv/face/FaceBoxes/dlt_cuda.patch. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/dlt_cuda.patch * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * add ACL_PyTorch/contrib/cv/face/FaceBoxes/dlt_cuda.patch. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/requirements.txt * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/modelzoo_level.txt * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/act.sh * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/test * update ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/evaluate.py. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/evaluate.py. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/convert.py * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/evaluate.py * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/split.py * update ACL_PyTorch/contrib/cv/face/FaceBoxes/aipp.config. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/aipp.config * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/utils * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/layers * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/models * update ACL_PyTorch/contrib/cv/face/FaceBoxes/layers/modules/multibox_loss.py. * 新建 layers * 添加faceboxes 710修改 * 添加faceboxes 310P修改 * 添加faceboxes 310P修改 * 添加faceboxes 310P修改 * 添加faceboxes 310P修改 3 年前
init 4 年前
!3034 【众智】【PyTorch离线推理】【cv】FaceBoxes 模型代码与资料整改 * . * . * . * . 3 年前
!880 [重庆邮电大学][高校贡献][PyTorch离线推理][FaceBoxes]-初次提交 * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * add ACL_PyTorch/contrib/cv/face/FaceBoxes/dlt_cuda.patch. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/dlt_cuda.patch * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * add ACL_PyTorch/contrib/cv/face/FaceBoxes/dlt_cuda.patch. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/requirements.txt * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/modelzoo_level.txt * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/act.sh * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/test * update ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/evaluate.py. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/evaluate.py. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/convert.py * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/evaluate.py * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/FDDB_Evaluation/split.py * update ACL_PyTorch/contrib/cv/face/FaceBoxes/aipp.config. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/aipp.config * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/utils * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * update ACL_PyTorch/contrib/cv/face/FaceBoxes/README.md. * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/layers * 删除文件 ACL_PyTorch/contrib/cv/face/FaceBoxes/models * update ACL_PyTorch/contrib/cv/face/FaceBoxes/layers/modules/multibox_loss.py. * 新建 layers * 添加faceboxes 710修改 * 添加faceboxes 310P修改 * 添加faceboxes 310P修改 * 添加faceboxes 310P修改 * 添加faceboxes 310P修改 3 年前
!3034 【众智】【PyTorch离线推理】【cv】FaceBoxes 模型代码与资料整改 * . * . * . * . 3 年前
README.md

FaceBoxes模型-推理指导

概述

FaceBoxes的新型人脸检测器,它在速度和准确性方面都有卓越的性能。具体来说,我们的方法拥有一个轻量级但功能强大的网络结构,它由快速消化卷积层(RDCL)和多尺度卷积层(MSCL)组成。RDCL的设计目的是让facebox在CPU上实现实时速度

输入输出数据

  • 输入数据

    输入数据 大小 数据类型 数据排布格式
    input batchsize x 3 x 224 x 224 RGB_FP32 NCHW
  • 输出数据

    输出数据 大小 数据类型 数据排布格式
    output1 batchsize x 1024 FLOAT32 ND

推理环境准备

  • 该模型需要以下插件与驱动

    表 1 版本配套表

    配套 版本 环境准备指导
    固件与驱动 1.0.16(NPU驱动固件版本为5.1.RC2) Pytorch框架推理环境准备
    CANN 5.1.RC2 -
    Python 3.7.5 -

快速上手

获取源码

  1. 获取源码。

    源码目录结构:

    ├── faceboxes_pth2onnx.py             //用于转换pth文件到onnx文件 
    ├── faceboxes_pth_preprocess.py       //数据集预处理脚本
    ├── faceboxes_pth_preprocess.py       //数据集后处理脚本 
    ├── FDDB_Evaluation                   //精度评估文件夹
    ├── aipp.config                       //aipp配置文件
    ├── dlt_cuda.patch                    //patch文件
    
  2. 获取开源代码仓。 在源码目录下,执行如下命令。

    git clone https://github.com/zisianw/FaceBoxes.PyTorch.git
    mv faceboxes_pth2onnx.py faceboxes_pth_postprocess.py faceboxes_pth_preprocess.py FDDB_Evaluation/ dlt_cuda.patch aipp.config FaceBoxes.PyTorch/ 
    
  3. 安装依赖。

    pip install -r requirements.txt
    
  4. 切换到主目录。

    cd FaceBoxes.PyTorch/
    git reset --hard 9bc5811fe8c409a50c9f23c6a770674d609a2c3a
    

准备数据集

  1. 获取原始数据集。(解压命令参考tar –xvf *.tar与 unzip *.zip)

    该模型使用FDDB 2845张验证集进行测试,图片与标签分别存放在datasets/FDDB/images(请按下图中的目录放置)与datasets/FDDB/img_list.txt,将ground_truth文件夹放在FDDB_Evaluation目录下。 数据目录结构请参考:

    ├── FDDB
       ├──img_list.txt
       ├──images           
           ├── 2002
           ├── 2003   
    
  2. 数据预处理。

    数据预处理将原始数据集转换为模型输入的数据。 执行faceboxes_pth_preprocess.py脚本,完成预处理。

    python faceboxes_pth_preprocess.py --dataset datasets/FDDB --save-folder prep
    
    • 参数说明:
      • --dataset:原始数据验证集所在路径。
      • --save-folder:bin文件保存路径。

    运行成功后,在当前目录下生成 prep 二进制文件夹。

模型推理

  1. 模型转换。

    使用PyTorch将模型权重文件.pth转换为.onnx文件,再使用ATC工具将.onnx文件转为离线推理模型文件.om文件。

  2. 获取权重文件 FaceBoxesProd.pth。

  3. 导出onnx文件。

    使用 FaceBoxesProd.pth 导出onnx文件。 运行 faceboxes_pth2onnx.py 脚本。

    python faceboxes_pth2onnx.py  --trained_model FaceBoxesProd.pth --save_folder faceboxes-b0.onnx 
    
    • 参数说明:
      • --trained_model:pth权重文件所在路径。
      • --save-folder:onnx文件保存路径。

    获得 faceboxes-b0.onnx 文件。

  4. 使用ATC工具将ONNX模型转OM模型。

    1. 配置环境变量。

      source /usr/local/Ascend/ascend-toolkit/set_env.sh
      
    2. 执行命令查看芯片名称(${chip_name})。

      npu-smi info
      #该设备芯片名为Ascend310P3
      回显如下:
      +-------------------+-----------------+------------------------------------------------------+
      | NPU     Name      | Health          | Power(W)     Temp(C)           Hugepages-Usage(page) |
      | Chip    Device    | Bus-Id          | AICore(%)    Memory-Usage(MB)                        |
      +===================+=================+======================================================+
      | 0       310P3     | OK              | 17.6         57                0    / 0              |
      | 0       0         | 0000:3B:00.0    | 0            936 / 21534                            |
      +===================+=================+======================================================+
      
    3. 执行ATC命令。

      通过 netron 查看onnx的输出节点名称,对应的进行更改--out_nodes里的参数

      atc --framework=5 --model=faceboxes-b0.onnx --output=faceboxes-b0_bs1 --input_format=NCHW --input_shape="image:1,3,1024,1024" --log=debug --soc_version=Ascend${chip_name} --out_nodes="Reshape_134:0;Softmax_141:0" --enable_small_channel=1 --insert_op_conf=aipp.config
      
      • 参数说明:

        • --model:为ONNX模型文件。
        • --framework:5代表ONNX模型。
        • --output:输出的OM模型。
        • --input_format:输入数据的格式。
        • --input_shape:输入数据的shape。
        • --log:日志级别。
        • --soc_version:处理器型号。
        • --enable_small_channel:是否使能small channel的优化,使能后在channel<=4的首层卷积会有性能收益。
        • --insert_op_conf=aipp_resnet34.config: AIPP插入节点,通过config文件配置算子信息。

    运行成功后生成 faceboxes-b0_bs1.om 模型文件。

  5. 开始推理验证。

    1. 安装ais_bench推理工具。请访问ais_bench推理工具代码仓,根据readme文档进行工具安装。

    2. 创建推理结果保存的文件夹。

      mkdir result
      
    3. 执行推理。

      python -m ais_bench --model faceboxes-b0_bs1.om --input prep/ --output result --output_dir dumpout_bs1 --batchsize 1
      
      • 参数说明:

        • --model :输入的om文件。
        • --input:输入的bin数据文件。
        • --device:NPU设备编号。
        • --output: 模型推理结果。
        • --batchsize : 批大小。

      推理结果保存在result/dumpout_bs1下面,并且也会输出性能数据。

    4. 精度验证。

      1. 在当前目录下,执行以下命令。

        dos2unix dlt_cuda.patch
        git apply dlt_cuda.patch
        ./make.sh
        
      2. 运行后处理脚本faceboxes_pth_postprocess.py。

        python faceboxes_pth_postprocess.py --save_folder FDDB_Evaluation/ --prep_info prep/ --prep_folder result/dumpout_bs1/
        
        • 参数说明:
          • --save_folder:推理结果处理之后的文件保存路径。
          • --prep_info:前处理数据(.bin)文件保存路径。
          • --prep_folder:模型推理结果保存路径。

        运行成功后在FDDB_Evaluation路径下生成FDDB_dets.txt文件。

      3. 执行evaluate.py脚本获得精度数据。

        cd FDDB_Evaluation
        python setup.py install
        python evaluate.py -g ./ground_truth
        
        • 参数说明:
          • --g:ground_truth文件夹的路径。

        执行成功后输出模型精度数据并保存在results.txt文件中。

    5. 性能验证。

      可使用ais_bench推理工具的纯推理模式验证不同batch_size的om模型的性能,参考命令如下:

      python -m ais_bench --model=${om_model_path} --loop=20 --batchsize=${batch_size}
      
      • 参数说明:
        • --model:om模型的路径。
        • --loop:推理循环的次数。
        • --batchsize:推理的batchsize。

模型推理性能&精度

调用ACL接口推理计算,性能参考下列数据。

芯片型号 Batch Size 数据集 精度 性能
300I Pro 1 FDDB 0.948 2332.9056
300I Pro 4 FDDB 0.948 1721.6148
300I Pro 8 FDDB 0.948 1807.0112
300I Pro 16 FDDB 0.948 1707.1128
300I Pro 32 FDDB 0.948 1662.0441