This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
products:sbc:edge2:npu:demos:retinaface [2023/08/22 06:07] louis created |
products:sbc:edge2:npu:demos:retinaface [2025/04/09 23:33] (current) louis |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Demo5 retinaface ====== | + | ~~tag> NPU RetinaFace Edge2 PyTorch~~ |
| - | ===== Get Source Code ===== | + | ====== RetinaFace PyTorch Edge2 Demo - 5 ====== |
| - | The codes we use. | + | {{indexmenu_n> |
| + | |||
| + | ===== Introduction ===== | ||
| + | |||
| + | RetinaFace is a face detection model. It can draw five key points on each face, including two eyes, nose and two corners of mouth. | ||
| + | |||
| + | Inference results on Edge2. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | **Inference speed test**: USB camera about **39ms** per frame. MIPI camera about **33ms** per frame. | ||
| + | |||
| + | ===== Train Model ===== | ||
| + | |||
| + | The codes we use [[gh> | ||
| ```shell | ```shell | ||
| git clone https:// | git clone https:// | ||
| + | ``` | ||
| + | |||
| + | Before training, modify '' | ||
| + | |||
| + | ```diff | ||
| + | diff --git a/ | ||
| + | index 87bb528..4a22f2a 100644 | ||
| + | --- a/ | ||
| + | +++ b/ | ||
| + | @@ -25,5 +25,6 @@ def get_lr(optimizer): | ||
| + | | ||
| + | |||
| + | def preprocess_input(image): | ||
| + | - image -= np.array((104, | ||
| + | + image = image / 255.0 | ||
| + | | ||
| ``` | ``` | ||
| Line 34: | Line 64: | ||
| ==== Get convert tool ==== | ==== Get convert tool ==== | ||
| - | Download Tool from [[https:// | + | Download Tool from [[gh>rockchip-linux/ |
| ```shell | ```shell | ||
| Line 51: | Line 81: | ||
| ``` | ``` | ||
| - | ==== convert | + | ==== Convert |
| - | + | ||
| - | Before training, modify retinaface-pytorch/ | + | |
| - | + | ||
| - | ```shell | + | |
| - | diff --git a/ | + | |
| - | index 87bb528..4a22f2a 100644 | + | |
| - | --- a/ | + | |
| - | +++ b/ | + | |
| - | @@ -25,5 +25,6 @@ def get_lr(optimizer): | + | |
| - | | + | |
| - | + | ||
| - | def preprocess_input(image): | + | |
| - | - image -= np.array((104, | + | |
| - | + image = image / 255.0 | + | |
| - | | + | |
| - | ``` | + | |
| After training model, we should convert pytorch model to onnx model. Create a python file written as follows and run. | After training model, we should convert pytorch model to onnx model. Create a python file written as follows and run. | ||
| - | ```shell | + | ```python export.py |
| import torch | import torch | ||
| import numpy as np | import numpy as np | ||
| Line 86: | Line 100: | ||
| ``` | ``` | ||
| - | Enter rknn-toolkit2/ | + | Enter '' |
| - | ```shell | + | ```python test.py |
| # Create RKNN object | # Create RKNN object | ||
| rknn = RKNN(verbose=True) | rknn = RKNN(verbose=True) | ||
| Line 99: | Line 113: | ||
| # Load ONNX model | # Load ONNX model | ||
| print(' | print(' | ||
| - | ret = rknn.load_onnx(model=”./ | + | ret = rknn.load_onnx(model='./ |
| if ret != 0: | if ret != 0: | ||
| print(' | print(' | ||
| Line 107: | Line 121: | ||
| # Build model | # Build model | ||
| print(' | print(' | ||
| - | ret = rknn.build(do_quantization=T rue, dataset=”./ | + | ret = rknn.build(do_quantization=True, dataset='./ |
| if ret != 0: | if ret != 0: | ||
| print(' | print(' | ||
| Line 115: | Line 129: | ||
| # Export RKNN model | # Export RKNN model | ||
| print(' | print(' | ||
| - | ret = rknn.export_rknn(“./ | + | ret = rknn.export_rknn('./ |
| if ret != 0: | if ret != 0: | ||
| print(' | print(' | ||
| Line 122: | Line 136: | ||
| ``` | ``` | ||
| - | Run test.py to generate rknn model. | + | Run '' |
| ```shell | ```shell | ||
| Line 132: | Line 146: | ||
| ==== Get source code ==== | ==== Get source code ==== | ||
| - | Clone the source code form our [[https:// | + | Clone the source code from our [[gh>khadas/ |
| ```shell | ```shell | ||
| Line 149: | Line 163: | ||
| === Picture input demo === | === Picture input demo === | ||
| - | Put retinaface.rknn in edge2-npu/ | + | Put '' |
| ```shell | ```shell | ||
| - | // compile | + | # Compile |
| $ bash build.sh | $ bash build.sh | ||
| - | // run | + | # Run |
| $ cd install/ | $ cd install/ | ||
| $ ./ | $ ./ | ||
| Line 162: | Line 176: | ||
| === Camera input demo === | === Camera input demo === | ||
| - | Put retinaface.rknn in edge2-npu/ | + | Put '' |
| ```shell | ```shell | ||
| - | // compile | + | # Compile |
| $ bash build.sh | $ bash build.sh | ||
| - | // run | + | # Run USB camera |
| + | $ cd install/retinaface_cap | ||
| + | $ ./retinaface_cap data/ | ||
| + | |||
| + | # Run MIPI camera | ||
| $ cd install/ | $ cd install/ | ||
| - | $ ./ | + | $ ./ |
| ``` | ``` | ||
| - | '' | + | <WRAP info > |
| + | '' | ||
| + | </ | ||