SNNF Demo Source Code Release
SNNF demo includes the following model samples
yolov8n_pose_opti;
yolov8n_segment_opti;
yolov8n_detection_opti;
det_10g + w600k_r50; (face match)
lightFace;
age;
yolov8n_detection_opti + humanAttr;
Human tracking;
Human falling detection;
OCRDet + OCRCls + OCRRec;
CCPD + OCRRec
yolov8n_detection_opti + vehicleAttr
yolov10s
Rtmdets
lightFace + genderAge
If you want to see the demo's effects more quickly, please refer to the SNNF Demo Introduction.
Please read this document carefully if you want to compile the SNNF demo.
HW Environment
NPU Driver
The NPU driver version must be set to v6.4.15.9, otherwise, unnecessary errors may occur.
Set the NPU driver to v6.4.15.9 before building the C3V image:
make kconfig
, and enter the kernel configuration.
Device Drivers > Multimedia support > Media drivers > ML Inference Processor NPU
Camera
The SNNF demo supports obtaining input data through a camera or a video file. The camera can be connected through MIPI or USB.
MIPI
Currently, the sensor we support for the MIPI interface is OV5640. The sensor needs to be connected to MIPI-RX4_2D on the platform, the MIPI Sensor interface as shown in the diagram above.
If you plan to use it, you must make the following modifications.
Modify the linux/kernel/arch/arm64/boot/dts/sunplus/sp7350-dm.dts before building the C3V image, enable OV5640_IN4.
@@ -19,7 +19,7 @@
//#define IMX708_IN5
//#define OV5640_IN2
//#define OV5640_IN3
-//#define OV5640_IN4
+#define OV5640_IN4
//#define OV5640_IN5
//#define OV5647_IN2
//#define OV5647_IN3
Enable OV5640 sensor support before building the C3V image.
make kconfig
, and enter the kernel configuration.
Device Drivers > Multimedia support > Media ancillary drivers > Camera sensor devices
To improve the speed of reading data from the sensor, execute the following command before running the SNNF demo.
root@ubuntu:/snnf_demo_release# cat /sys/module/videobuf2_dma_contig/parameters/remap
N
root@ubuntu:/snnf_demo_release# echo 1 > /sys/module/videobuf2_dma_contig/parameters/remap
root@ubuntu:/snnf_demo_release# cat /sys/module/videobuf2_dma_contig/parameters/remap
Y
USB
The USB Camera supports USB 2.0 and USB 3.0. If you want to use USB 3.0, Set the jump cap in the figure below to the OFF state.
Display
SNNF demo requires a display screen by default. If you do not connect the display screen, the program will run incorrectly.
The display screen supports MIPI or HDMI connection, and the currently supported MIPI display screen is the official 7-inch display screen of Raspberry Pi.
MIPI and HDMI displays cannot be used simultaneously. The specific switching method is as follows:
Switch to MIPI
Set the jump cap in the above figure to the ON state and unplug the HDMI cable.
Switch to HDMI
Set the jump cap in the above figure to OFF, power off the Panel connected to MIPI, and plug in the HDMI cable.
Source code
Please get the SNNF Demo V1.1.0 release source code here.
Folder structure
dependency_libraries: the library that snnf_demo depends on.
demo_assist
face_match
ffmpeg-4.4.2-prebuilt
freetype-2.12.1
libdrm-2.4.100-prebuilt
libpng-1.6.37
lvgl-9.1.0-prebuilt
opencv-4.6.0-prebuilt
opencv-4.2.0-prebuilt
snnf_release
vsi_lib
yuvconvert
snnf_demo_src: demo source code.
src
menu: code related to UI.
nn: sample code for SNNF and code for processing the NN results.
stream: reading video stream and displaying NN results.
makefile
out: the generation path of the snnf_demo program.
bin: snnf_demo, Pre-compiled sample programs that can run on the c3v Linux platform.
snnf_demo_env.sh: setup environment variable.
How to build SNNF Demo
Compile on the C3V platform
Copy the release folder to C3V Linux;
root@ubuntu:/snnf_demo_release# ls -al
total 88
drwxr-xr-x 5 10860 11400 4096 Jan 22 2025 .
drwxr-xr-x 9 10860 11400 69632 Jan 22 11:21 ..
drwxr-xr-x 2 10860 11400 4096 Jan 21 19:02 bin
drwxr-xr-x 18 10860 11400 4096 Jan 22 2025 dependency_libraries
-rw-r--r-- 1 10860 11400 3170 Jan 22 11:01 snnf_demo_env.sh
drwxr-xr-x 4 10860 11400 4096 Jan 22 14:11 snnf_demo_src
cd snnf_demo_src
Modify makefile ;
Ensure that "CROSS_COMPILE" in the makefile is set to "NO";
Modify the gcc configuration in the makefile according to the current gcc version on the C3V platform;
gcc version < 12, set “GCC_VERSION_LESS_THAN_12” to "YES".
gcc version >= 12, set “GCC_VERSION_LESS_THAN_12” to "NO";
Check the version of gcc:
gcc --version
For example:
Ubuntu 24.04
set GCC_VERSION_LESS_THAN_12 to "NO";
Ubuntu 20.04
set GCC_VERSION_LESS_THAN_12 to "YES"
Modify the OpenCV configuration in the makefile;
Use the pre-compiled OpenCV in the dependencies_libraries folder, set “USING_PREBUILD_OPENCV” to "YES".
Use your own installed OpenCV, set “USING_PREBUILD_OPENCV” to "NO";
Modify the FFmpeg configuration in the makefile;
Use the pre-compiled FFmpeg in the dependencies_libraries folder, set “ USING_PREBUILD_FFMPEG” to "YES".
Use your own installed FFmpeg, set “ USING_PREBUILD_FFMPEG” to "NO";
make
Run snnf_demo, please refer to the How to run SNNF Demo.
Cross-compile SNNF Demo
Copy the release folder to Cross-compile Linux;
cd snnf_demo_src
Modify makefile ;
Ensure that "CROSS_COMPILE", " USING_PREBUILD_OPENCV" and " USING_PREBUILD_FFMPEG" in the makefile is set to "YES";
Modify the toolchain path("TOOLCHAIN_PREFIX") in the makefile;
Then, according to the gcc version of the toolchain you have set, modify the value of GCC_VERSION_LES_THAN_12;
gcc version < 12, set “GCC_VERSION_LESS_THAN_12” to "YES".
gcc version >= 12, set “GCC_VERSION_LESS_THAN_12” to "NO";
make
Copy the newly compiled snnf_demo program and the folder named "dependency_libraries" from the snnf_demo_delease folder to C3V Linux.
Run snnf_demo, please refer to the How to run SNNF Demo.
Setup the running environment
Before running, please ensure that the account you are logged into has root privileges.
How to create a root account
If you are logging in with a non-root account, please execute the following command before running the demonstration program.
Turn off Display Manager Service (This step is only required for Ubuntu XFCE)
The status of the lightdm service enabled is as follows.
Temporary stop
Permanently Closed
Copy the newly compiled snnf_demo program, pre-compiled snnf_demo program, and the folder named "dependency_libraries" from the snnf_demo_release folder to C3V Linux.
Copy according to the following directory structure.
Copy the resource files to C3V Linux.
The path of resource files:dependency_libraries/snnf_release/resource
Set environment variables, which need to be configured every time the platform is launched.
Switch to the directory where the dependency_libraries are located, then set the environment variable;
Set the environment variable:
source snnf_demo_env.sh rootfs_name
. The supported parameters are:'ubuntu_20', 'ubuntu_22', 'ubuntu_24', 'buildroot'.For example:
Ubuntu 24.04
Ubuntu 22.04
Ubuntu 20.04
Buildroot
How to run SNNF Demo
Before running snnf_demo, please refer to Setup the running environment.
Run snnf_demo.
Obtaining input data through the camera
Use default param
Set the video size/fps/YUV format by cmd.
How to get the format supported by the camera?
v4l2-ctl --list-formats -d /dev/video40
v4l2-ctl --list-formats-ext -d /dev/video40
Obtaining input data through the video file
Obtaining input data through the image file
See the demo's effects please refer to the SNNF Demo Introduction.