Skip to main content

MobileNetV2 Example Code

Install MobileNetV2 Example

Please follow the ENNP SDK Download to download ai-release.

cd ai-release/EIC7x_Release_20241230/softwares/packages
sudo apt install ./es-sdk-sample-npu-mobilenetv2.deb

After installation, the sample will be located at the /opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample directory.

Directory Structure

The detailed directory structure is as follows:

debian@rockos-eswin:/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample$ tree
.
├── bin
│ └── sample_npu
├── models
│ └── mobilenet
│ ├── es_mobilenet_classes.txt
│ ├── es_mobilenet_post_process.json
│ ├── es_mobilenet_pre_process.json
│ ├── git_mobilenetv2_mix_4x3x224x224_dyn_latency.model
│ ├── git_mobilenetv2_mix_4x3x224x224_dyn_latency.ofmap_order.txt
│ ├── git_mobilenetv2_mix_4x3x224x224_dyn.model
│ ├── git_mobilenetv2_mix_4x3x224x224_dyn_throughput.model
│ ├── git_mobilenetv2_mix_4x3x224x224_dyn_throughput.ofmap_order.txt
│ ├── input
│ │ └── pictures
│ │ └── input0
│ │ ├── ILSVRC2012_val_00003966.JPEG
│ │ ├── ILSVRC2012_val_00009032.JPEG
│ │ ├── ILSVRC2012_val_00011712.JPEG
│ │ ├── ILSVRC2012_val_00016098.JPEG
│ │ ├── ILSVRC2012_val_00017212.JPEG
│ │ ├── ILSVRC2012_val_00017773.JPEG
│ │ ├── ILSVRC2012_val_00021709.JPEG
│ │ ├── ILSVRC2012_val_00022662.JPEG
│ │ ├── ILSVRC2012_val_00025785.JPEG
│ │ ├── ILSVRC2012_val_00026363.JPEG
│ │ ├── ILSVRC2012_val_00027830.JPEG
│ │ ├── ILSVRC2012_val_00030734.JPEG
│ │ ├── ILSVRC2012_val_00031637.JPEG
│ │ ├── ILSVRC2012_val_00033024.JPEG
│ │ ├── ILSVRC2012_val_00033154.JPEG
│ │ ├── ILSVRC2012_val_00033435.JPEG
│ │ ├── ILSVRC2012_val_00034978.JPEG
│ │ ├── ILSVRC2012_val_00040463.JPEG
│ │ └── ILSVRC2012_val_00049043.JPEG
│ └── model.json
└── src
├── build.sh
├── CMakeLists.txt
├── README.md
├── sample_npu_comm.cpp
├── sample_npu_comm.h
├── sample_npu.cpp
└── utils
├── json
│ ├── cJSON.cpp
│ └── cJSON.h
├── postprocess
│ ├── EsPostProcess.cpp
│ └── EsPostProcess.h
├── preprocess
│ ├── EsHwPreProcess.cpp
│ ├── EsHwPreProcess.h
│ └── IPreprocess.h
├── sample_npu_utils.cpp
├── sample_npu_utils.h
└── vdec
├── common
│ ├── sample_comm.h
│ ├── sample_comm_sys.cpp
│ ├── sample_comm_vdec.cpp
│ └── sample_comm_vps.cpp
├── EsVdec.cpp
├── EsVdec.h
├── IVdec.h
└── MemoryPool.h

src Directory

The entry point for the NPU ResNet50 example code is the es_ai_inference.cpp file.

The README.md file contains instructions for compiling the ResNet50 sample code and the running commands.

The utils folder mainly contains auxiliary tool libraries, such as image preprocessing (preprocess) and postprocessing of inference data (postprocess).

models Directory

  • Configuration files:

    es_resnet50_classes.txt contains category label information.

    es_resnet50_pre_process.json contains preprocessing strategies and parameters.

    es_resnet50_post_process.json contains parameters related to postprocessing operators.

  • input directory: This directory stores the raw image files for inference.

  • Binary directory (bin): This directory contains the binary executable programs.

Example Usage

cd /opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/bin
sudo ./sample_npu -s 1 -m /opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/ -i /opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/ -p /opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/es_mobilenet_pre_process.json -q /opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/es_mobilenet_post_process.json -t /opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/es_mobilenet_classes.txt
debian@rockos-eswin:/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/bin$ sudo ./sample_npu -s 1 -m /opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/ -i /opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/ -p /opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/es_mobilenet_pre_process.json -q /opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/es_mobilenet_post_process.json -t /opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/es_mobilenet_classes.txt
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00009032.JPEG: label(742: ('printer'), confidence(0.556628)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00040463.JPEG: label(259: ('Pomeranian'), confidence(0.999186)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00003966.JPEG: label(734: ('police van'), confidence(0.882855)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00021709.JPEG: label(144: ('pelican'), confidence(0.999989)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00031637.JPEG: label(50: ('American alligator'), confidence(0.968207)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00034978.JPEG: label(563: ('fountain pen'), confidence(0.992167)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00016098.JPEG: label(717: ('pickup'), confidence(0.964826)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00049043.JPEG: label(349: ('bighorn'), confidence(0.888428)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00033024.JPEG: label(763: ('revolver'), confidence(0.980104)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00033154.JPEG: label(622: ('lens cap'), confidence(0.972486)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00027830.JPEG: label(207: ('golden retriever'), confidence(0.742428)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00033435.JPEG: label(22: ('bald eagle'), confidence(0.999023)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00017212.JPEG: label(340: ('zebra'), confidence(0.999896)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00030734.JPEG: label(89: ('sulphur-crested cockatoo'), confidence(0.999994)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00011712.JPEG: label(76: ('tarantula'), confidence(0.999318)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00017773.JPEG: label(269: ('timber wolf'), confidence(0.985512)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00025785.JPEG: label(96: ('toucan'), confidence(0.962351)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00022662.JPEG: label(759: ('reflex camera'), confidence(0.959045)
/opt/eswin/sample-code/npu_sample/npu_mobilenetv2_sample/models/mobilenet/input/pictures/input0/ILSVRC2012_val_00026363.JPEG: label(480: ('cash machine'), confidence(0.999989)
  • ZIFENG278