Image Classification with ResNet-50 (Image Decoding+Cropping and Resizing+Image Encoding+Synchronous Inference)
Description
This sample shows how to classify images based on the Caffe ResNet-50 network (single input with batch size = 1).
According to the arguments of the app, the following functions can be implemented:
- Encodes a YUV420SP image into the .jpg format.
- Decodes two .jpg images into YUV420SP (NV12) images, resizes the images, performs model inference to obtain the inference results of the two images, processes the inference results, and outputs the class indexes with the top confidence values and the sum of the top 5 confidence values.
- Decodes two .jpg images into YUV420SP (NV12) images, crops selected ROIs from the images, performs model inference to obtain the inference results of the two images, processes the inference results, and outputs the class indexes with the top confidence values and the sum of the top 5 confidence values.
- Decodes two .jpg images into YUV420SP (NV12) images, crops selected ROIs from the images and pastes each cropped image in the canvas, performs model inference to obtain the inference results of the two images, processes the inference results, and outputs the class indexes with the top confidence values and the sum of the top 5 confidence values.
- Resizes the 8192 x 8192 image in YUV420SP (NV12) format to 4000 x 4000.
In this sample, an .om offline model adapted to the Ascend AI Processor is used for inference. During model conversion, set CSC parameters to convert YUV420SP images into RGB images to meet the input requirements of the model.
Principles
The following table lists the key functions involved in this sample.
Directory Structure
The sample directory is organized as follows:
├── caffe_model │ ├── aipp.cfg //Configuration file with CSC parameters, used for model conversion ├── data │ ├── persian_cat_1024_1536_283.jpg //Test image. Obtain the test image according to the guide and save it to the data directory. │ ├── wood_rabbit_1024_1061_330.jpg //Test image. Obtain the test image according to the guide and save it to the data directory. │ ├── wood_rabbit_1024_1068_nv12.yuv //Test image. Obtain the test image according to the guide and save it to the data directory. │ ├── dvpp_vpc_8192x8192_nv12.yuv //Test image. Obtain the test image according to the guide and save it to the data directory. ├── inc │ ├── dvpp_process.h //Header file that declares functions related to media data processing │ ├── model_process.h //Header file that declares functions related to model processing │ ├── sample_process.h //Header file that declares functions related to resource initialization and destruction │ ├── utils.h //Header file that declares common functions (such as the file reading function) ├── src │ ├── acl.json //Configuration file for system initialization │ ├── CMakeLists.txt //Build script │ ├── dvpp_process.cpp //Implementation file of functions related to media data processing │ ├── main.cpp //Implementation file of the main function, for image classification │ ├── model_process.cpp //Implementation file of model processing functions │ ├── sample_process.cpp //Implementation file of functions related to resource initialization and destruction │ ├── utils.cpp //Implementation file of common functions (such as the file reading function) ├── .project //Project information file, including the project type, project description, and type of the target device ├── CMakeLists.txt //Build script that calls the CMakeLists file in the src directory
Parent topic: App Samples