Khadas Docs

Amazing Khadas, always amazes you!

User Tools

Site Tools


products:sbc:edge2:npu:demos:yolov8n

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
products:sbc:edge2:npu:demos:yolov8n [2023/08/22 06:04]
louis created
products:sbc:edge2:npu:demos:yolov8n [2024/07/03 21:44] (current)
louis
Line 1: Line 1:
-====== Demo2 yolov8n ======+~~tag> YOLO NPU Edge2 RK3588~~ 
 + 
 +====== YOLOv8n OpenCV Edge2 Demo - 2 ====== 
 + 
 +{{indexmenu_n>2}}
  
 ===== Get Source Code ===== ===== Get Source Code =====
  
-Download yolov8 official codes. Refer README.md to train a yolov8n model.+Download YOLOv8 official code [[gh>ultralytics/ultralytics]]
  
 ```shell ```shell
 $ git clone https://github.com/ultralytics/ultralytics.git $ git clone https://github.com/ultralytics/ultralytics.git
 ``` ```
 +
 +Refer ''README.md'' to train a YOLOv8n model. My version ''torch==1.10.1'' and ''ultralytics==8.0.86''.
  
 ===== Convert Model ===== ===== Convert Model =====
Line 34: Line 40:
 ==== Get convert tool ==== ==== Get convert tool ====
  
-Download Tool from [[https://github.com/rockchip-linux/rknn-toolkit2.git|Rockchip Github]].+Download Tool from [[gh>rockchip-linux/rknn-toolkit2]].
  
 ```shell ```shell
Line 51: Line 57:
 ``` ```
  
-==== convert ====+==== Convert ====
  
-After training model, modify ultralytics/ultralytics/nn/modules/head.py as follows.+After training model, modify ''ultralytics/ultralytics/nn/modules/head.py'' as follows.
  
-```shell+```diff head.py
 diff --git a/ultralytics/nn/modules/head.py b/ultralytics/nn/modules/head.py diff --git a/ultralytics/nn/modules/head.py b/ultralytics/nn/modules/head.py
 index 0b02eb3..0a6e43a 100644 index 0b02eb3..0a6e43a 100644
Line 85: Line 91:
 ``` ```
  
-Create a python file written as follows to export onnx model.+<WRAP important> 
 +If you pip-installed ultralytics package, you should modify in package. 
 +</WRAP>
  
-```shell+Create a python file written as follows to export **onnx** model. 
 + 
 +```python export.py
 from ultralytics import YOLO from ultralytics import YOLO
 model = YOLO("./runs/detect/train/weights/best.pt") model = YOLO("./runs/detect/train/weights/best.pt")
Line 93: Line 103:
 ``` ```
  
-Enter rknn-toolkit2/examples/onnx/yolov5 and modify test.py as follows.+<WRAP important> 
 +Use [[https://netron.app| Netron]] to check your model output like this. If not, please check your ''head.py''.
  
-```shell+{{:products:sbc:edge2:npu:demos:yolov8n-edge2-output.png?600|}} 
 +</WRAP> 
 + 
 +Enter ''rknn-toolkit2/examples/onnx/yolov5'' and modify ''test.py'' as follows. 
 + 
 +```python test.py
 # Create RKNN object # Create RKNN object
 rknn = RKNN(verbose=True) rknn = RKNN(verbose=True)
Line 106: Line 122:
 # Load ONNX model # Load ONNX model
 print('--> Loading model') print('--> Loading model')
-ret = rknn.load_onnx(model=./yolov8n.onnx)+ret = rknn.load_onnx(model='./yolov8n.onnx')
 if ret != 0: if ret != 0:
     print('Load model failed!')     print('Load model failed!')
Line 114: Line 130:
 # Build model # Build model
 print('--> Building model') print('--> Building model')
-ret = rknn.build(do_quantization=True, dataset=./dataset.txt)+ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
 if ret != 0: if ret != 0:
     print('Build model failed!')     print('Build model failed!')
Line 122: Line 138:
 # Export RKNN model # Export RKNN model
 print('--> Export rknn model') print('--> Export rknn model')
-ret = rknn.export_rknn(./yolov8n.rknn)+ret = rknn.export_rknn('./yolov8n.rknn')
 if ret != 0: if ret != 0:
     print('Export rknn model failed!')     print('Export rknn model failed!')
Line 129: Line 145:
 ``` ```
  
-Run test.py to generate rknn model.+Run ''test.py'' to generate rknn model.
  
 ```shell ```shell
Line 139: Line 155:
 ==== Get source code ==== ==== Get source code ====
  
-Clone the source code form our [[https://github.com/khadas/edge2-npu|Github]].+Clone the source code from our [[gh>khadas/edge2-npu]].
  
 ```shell ```shell
Line 156: Line 172:
 === Picture input demo === === Picture input demo ===
  
-Put yolov8n.rknn in edge2-npu/C++/yolov8n/data/model.+Put ''yolov8n.rknn'' in ''edge2-npu/C++/yolov8n/data/model''.
  
 ```shell ```shell
-// compile+# Compile
 $ bash build.sh $ bash build.sh
  
-// run+# Run
 $ cd install/yolov8n $ cd install/yolov8n
 $ ./yolov8n data/model/yolov8n.rknn data/img/bus.jpg $ ./yolov8n data/model/yolov8n.rknn data/img/bus.jpg
Line 169: Line 185:
 === Camera input demo === === Camera input demo ===
  
-Put yolov8n.rknn in edge2-npu/C++/yolov8n_cap/data/model.+Put ''yolov8n.rknn'' in ''edge2-npu/C++/yolov8n_cap/data/model''.
  
 ```shell ```shell
-// compile+# Compile
 $ bash build.sh $ bash build.sh
  
-// run+# Run
 $ cd install/yolov8n_cap $ cd install/yolov8n_cap
 $ ./yolov8n_cap data/model/yolov8n_cap.rknn 33 $ ./yolov8n_cap data/model/yolov8n_cap.rknn 33
 ``` ```
  
-‘’33’’ is the interface of camera.+<WRAP info > 
 +''33'' is camera device index. 
 +</WRAP>
  
 <WRAP tip > <WRAP tip >
-If your yolov8n model classes is not the same as coco, please change ‘’data/coco_80_labels_list.txt’’ and the ‘’OBJ_CLASS_NUM’’ in ‘’include/postprocess.h’’.+If your **YOLOv8n** model classes is not the same as **coco**, please change ''data/coco_80_labels_list.txt'' and the ''OBJ_CLASS_NUM'' in ''include/postprocess.h''.
 </WRAP> </WRAP>
  
Last modified: 2023/08/22 06:04 by louis