1 Star 0 Fork 1

张超 / rknn-yolo

forked from nyy / rknn-yolo 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

rknn-yolo

介绍

Rock5a中ffmpeg cpu解码 yoloV5 和 V8 推理;Rock5a是Radxa(瑞莎)推出,使用了瑞芯微 RK3588S 处理器。

软件架构

软件架构说明

rock5a 安装 参考

export PATH="/home/rock/workspace/rknpu2/runtime/RK3588/Linux/rknn_server/aarch64/usr/bin:$PATH"
export LD_LIBRARY_PATH=/home/rock/workspace/rknpu2/runtime/RK3588/Linux/librknn_api/aarch64:$LD_LIBRARY_PATH

export PATH=/home/nyy/workspace/pcl/vtkinstall/include:$PATH

https://blog.csdn.net/m0_55217834/article/details/130583886?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-130583886-blog-130205729.235%5Ev38%5Epc_relevant_anti_t3_base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-130583886-blog-130205729.235%5Ev38%5Epc_relevant_anti_t3_base&utm_relevant_index=6


https://www.zhihu.com/column/c_1654749776326512640

http://www.hbzwlsw.com/guocanju/fubeiderongyao/2-29.html


http://www.hlm543.top/index.php/vod/play/id/Z4dCCS/sid/1/nid/1.html

rock5a 安装

https://wiki.radxa.com/Rock5/downloads
https://github.com/radxa-build/rock-5a/releases

ubuntu 中下使用 balenaEtcher-1.14.3-x64.AppImage 制作系统盘

官方ubuntu系统: rock-5a_ubuntu_jammy_kde_b18.img.xz

rock5a 安装


sudo apt-get update
sudo apt-get install openssh-server

软件包 filezilla-server 需要重新安装,但是我无法找到相应的安装文件

sudo  rm -rf /var/lib/dpkg/info/filezilla-server*
sudo dpkg --remove --force-remove-reinstreq filezilla-server
sudo apt install  filezilla-server
sudo apt-get install openssh-server

rknn-toolkit2 安装

python 虚拟环境

#创建 virtualenv环境
sudo apt install virtualenv #安装virtualenv软件
virtualenv -p /usr/bin/python3.7 venv  #创建虚拟环境
source venv/bin/activate  #激活venv环境
(venv) firefly@firefly:~$  pip3 -V #查看当前pip3所在Python的路径
pip 21.0.1 from /home/firefly/venv/lib/python3.7/site-packages/pip (python 3.7)pip


rock5a中安装

安装相关依赖包(numpy、h5py &opencv)

sudo apt-get update
sudo apt-get install cmake gcc g++ libprotobuf-dev protobuf-compiler 
sudo apt-get install liblapack-dev libjpeg-dev zlib1g-dev 
#pip3 install --upgrade pip #更新pip包的版本
#pip3 install wheel setuptools #安装 Python 打包工具
sudo apt-get install net-tools

rknpu2 环境安装

cd rknpu2
sudo cp ./runtime/RK3588/Linux/librknn_api/aarch64/* /usr/lib
sudo cp ./runtime/RK3588/Linux/rknn_server/aarch64/usr/bin/* /usr/bin/

rknpu2 进入 /home/rock/workspace/rknn-toolkit2-master/doc

pip install -r requirements_cp310-1.5.2.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

PC机中安装

ubuntu22.04 中安装 RKNN2-1.5.2

1、安装
pip install -r requirements_cp38-1.5.2.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
2、安装
pip install rknn_toolkit2-1.5.2+b642f30c-cp38-cp38-linux_x86_64.whl -i https://mirrors.aliyun.com/pypi/simple/

pt--onnx--rknn 转换 (网上常见的修改yolo.py 中class Detect(nn.Module): 的 def forward(self, x): )

def forward(self, x):
	z = []  # inference output
	for i in range(self.nl):
	    x[i] = self.m[i](x[i])  # conv
	return x
	
经过测试yolov5-v4 到  yolov5-v7 都在可以转换成功
v4版本:  python ./models/export.py --weights yolov5s.pt --img 640 --batch-size 1
v7版本:  python export.py --weights yolov5s.pt --data data/coco128.yaml --include onnx --opset 12 --batch-size 1
至此转换为 onnx

在 RKNN2-1.5.2 中 rknn-toolkit2-master/examples/onnx/yolov5 的 test.py(onnx转rknn) 无法转换上边的 onnx 模型,
因上边的 onnx中是sigmoid 激活函数;RKNN2-1.5.2 的  test.py(onnx转rknn)只支持 relu激活函数;
解决:用 RKNN2-1.4.0 中的test.py(onnx转rknn)可以把以上的onnx转换成功。
在安装RKNN2-1.5.2 后 执行 python test-1.4.py

在rock5a中测试

需要在rknpu2-1.4.0 版本中才能推理成功;初步分析原因是新版本rknpu为了适配转onnx不再作修改(修改yolo.py 中class Detect(nn.Module): 的 def forward(self, x)),
导致与老板版不兼容

/home/rock/workspace/rknpu2-1.4.0/examples/rknn_yolov5_demo 中 
sudo bash ./build-linux_RK3588.sh 
cd ./install/rknn_yolov5_demo_Linux/
./rknn_yolov5_demo ./model/RK3588/yolov5s-v7.rknn ./model/bus.jpg
./rknn_yolov5_demo ./model/RK3588/yolov5s-640-640.rknn ./model/bus.jpg

pt--onnx--rknn yolov5转换 (官方给出的 支持yolov5-yolov8 及 yolovX )

下载 airockchip 官方中的 yolov5  https://github.com/airockchip/yolov5.git 此时的版本是是airockchip 在yolov5-6.2版本基础上优化的专门适用于RK3588系列芯片
下载后PC机中安装pytorch环境:
把yolov5s.pt 转换为:yolov5s.torchscript.pt :python export.py --rknpu rk3588 --weight yolov5s.pt
python export.py --rknpu rk3588 --weight yolov5s-ulv62.pt
下载:rknn_model_zoo :https://github.com/airockchip/rknn_model_zoo.git 使用安装 RKNN2-1.5.2 的python环境即可
cd ./rknn_model_zoo/models/CV/object_detection/yolo/RKNN_model_convert
yolov5s.torchscript.pt 转换为 yolov5s-rkv62.rknn模型: :python ../../../../../common/rknn_converter/rknn_convert.py --yml_path ./yolo.yml

在rock5a中测试

下载:rknn_model_zoo :https://github.com/airockchip/rknn_model_zoo.git 
cd ./rknn_model_zoo/libs/rklibs
根据 reademe提示下载:
# RK3566/RK3568/RK3588/RV1106/RV1103 NPU 依赖库
git clone https://github.com/rockchip-linux/rknpu2
# RGA调用依赖库,不区分硬件平台
git clone https://github.com/airockchip/librga

cd ./rknn_model_zoo/models/CV/object_detection/yolo/RKNN_C_demo/RKNN_toolkit_2/rknn_yolo_demo
bash ./build-android_RK3588.sh  #编译c++ demo
cd ./install/rk3588/Linux/rknn_yolo_demo
把yolov5s-rkv62.rknn模型 拷贝到此处
./rknn_yolo_demo v5 fp yolov5s-rkv62.rknn ./model/bus.jpg
结果如下图:

pt--onnx--rknn yolov8转换 (官方给出的 支持yolov5-yolov8 及 yolovX )

下载 airockchip 官方中的 yolov5  https://github.com/airockchip/yolov5.git 此时的版本是是airockchip 在yolov5-6.2版本基础上优化的专门适用于RK3588系列芯片
下载后PC机中安装pytorch环境:
把yolov5s.pt 转换为:yolov5s.torchscript
yolo export model=yolov8s-ul.pt format=rknn

下载:rknn_model_zoo :https://github.com/airockchip/rknn_model_zoo.git 使用安装 RKNN2-1.5.2 的python环境即可
cd ./rknn_model_zoo/models/CV/object_detection/yolo/RKNN_model_convert
torchscript 转换为 rknn模型: :python ../../../../../common/rknn_converter/rknn_convert.py --yml_path ./yolo.yml

在rock5a中安装ffmpeg

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg/

# Install necessary packages.
sudo apt-get install build-essential yasm cmake libtool libc6 libc6-dev unzip wget libnuma1 libnuma-dev

cd ffmpeg

# Configure
./configure --enable-nonfree --enable-gpl --enable-libx264 --enable-cuda-nvcc  --enable-libnpp --extra-cflags=-I/usr/local/cuda/include \
 --extra-ldflags=-L/usr/local/cuda/lib64 --disable-static --enable-shared

./configure --prefix=/usr/local/ffmpeg --disable-static --disable-stripping --disable-doc \
 --enable-shared  --enable-nonfree --enable-cuda --enable-gpl --enable-libx264 --enable-cuvid --enable-nonfree --enable-cuda-nvcc --enable-libnpp --extra-cflags=-I/usr/local/cuda-11.8/include  --extra-ldflags=-L/usr/local/cuda-11.8/lib64
 
 sudo 
 ./configure --prefix=/usr/local/ffmpeg4.4 --disable-static --disable-stripping --disable-doc \
 --enable-shared  --enable-nonfree --enable-cuda --enable-gpl --enable-libx264 --enable-cuvid --enable-nonfree --enable-cuda-nvcc --enable-libnpp --extra-cflags=-I/usr/local/cuda-11.8/include  --extra-ldflags=-L/usr/local/cuda-11.8/lib64

sudo ./configure --prefix=/usr/local/ffmpeg --enable-swscale --enable-swresample --enable-gpl --enable-shared

make clean
make -j45
sudo make install

export PATH=$PATH:/usr/local/ffmpeg/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ffmpeg/lib
export PKG_CONFIG_PATH=/usr/local/ffmpeg/lib/pkgconfig


export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/rock/workspace/video_detection/log4cplus/lib

sudo nohup ./run.sh &
ls -l | grep "^-" | wc -l

在rock5a中 开机自启动配置

sudo ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service

sudo vim /etc/systemd/system/rc-local.service
//添加
[Install]
WantedBy=multi-user.target
Alias=rc-local.service

sudo touch /etc/rc.local
sudo chmod 777 /etc/rc.local

sudo vim /etc/rc.local

#!/bin/bash
date -s '2021-12-08 13:45:00'

opencv 安装

apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
apt-get install libgtk2.0-dev
apt-get install pkg-config

apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev



tar -axvf opencv-3.4.20.tar.gz
cd ./opencv-3.4.20
sudo mkdir build	
cd ./build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_GENERATE_PKGCONFIG=ON -DBUILD_EXAMPLES=ON -DBUILD_DOCS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -D BUILD_opencv_world=ON  -D OPENCV_DNN_CUDA=OFF -D WITH_CUDA=OFF -D CMAKE_INSTALL_PREFIX=/home/rock/workspace/opencv/opencv3420 ..
sudo make -j45

log4cpus

cd ./log4cplus-2.0.8/
mkdir build
cmake -DCMAKE_INSTALL_PREFIX=/home/rock/workspace/video_detection/log4cplus/libx64 ..
cmake --build . --config release -j8
cmake --install .

/etc/init.d/ntpd start

/etc/init.d/ntpd stop

/etc/init.d/ntpd restart

rtsp://admin:nyy123456@192.168.1.168:554

./configure --prefix=/home/rock/workspace/video_detection/log4cplus

cpu

2. 获取当前CPU支持的频点
sudo cat /sys/devices/system/cpu/cpufreq/policy6/scaling_available_frequencies

408000 600000 816000 1008000 1200000 1416000 1608000 1800000 2016000 2208000 2304000

3. 获取cpu运行的模式
sudo cat /sys/devices/system/cpu/cpufreq/policy6/scaling_available_governors

conservative ondemand userspace powersave performance schedutil

默认是自动变频模式:schedutil(恢复的话设置为该模式即可)

4. 设置手动定频模式:userspace
echo userspace > /sys/devices/system/cpu/cpufreq/policy6/scaling_governor

5. 设置频率为2016000
sudo echo 2016000 > /sys/devices/system/cpu/cpufreq/policy6/scaling_setspeed

确认是否设置成功

sudo cat /sys/devices/system/cpu/cpufreq/policy6/cpuinfo_cur_freq

2016000

NPU

2. 获取NPU支持的频点
cat /sys/class/devfreq/fdab0000.npu/available_frequencies
300000000 400000000 500000000 600000000 700000000 800000000 900000000 1000000000

3. 获取NPU运行的模式
cat /sys/class/devfreq/fdab0000.npu/available_governors
userspace powersave performance simple_ondemand

默认是自动变频模式:simple_ondemand(恢复的话设置为该模式即可)
4. 设置手动定频模式:userspace
echo userspace > /sys/class/devfreq/fdab0000.npu/governor

5. 设置频率为1000000000
echo 1000000000 > /sys/class/devfreq/fdab0000.npu/userspace/set_freq

sudo cat /sys/class/devfreq/fdab0000.npu/cur_freq
6. 查看NPU的负载
sudo cat /sys/kernel/debug/rknpu/load

空文件

简介

Rock5a中ffmpeg cpu解码 yoloV5 和 V8 推理;Rock5a是Radxa(瑞莎)推出,使用了瑞芯微 RK3588S 处理器。 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/zcxnll_admin/rknn-yolo.git
git@gitee.com:zcxnll_admin/rknn-yolo.git
zcxnll_admin
rknn-yolo
rknn-yolo
master

搜索帮助