基于yolo的RMYC自瞄系统(开发中)
如果对这个项目感兴趣的话烦请star一下,这对我真的很重要
另外使用本项目请遵守GPLv3协议
- yolov8: yolov8代码(v8.1.0)
- docs: yolov8官方文档(多语言版)
- dataset: 数据集存放位置
参阅官方文档,注意把pytorch-cuda=11.8替换成自己的版本,cuda版本支持查看PyTorch官网,cuda版本切换参考这篇文章,其他环境要求在 /yolov8/pyproject.toml 中
过程请参阅这篇博客,安装完成后运行 \RMSDK\00_SDK_test.py
首先准备训练的图片,然后下载labelme最新版标注数据
把标注好的数据的json文件放到 \jso2txt\json_here ,打开 \json2txt\transfer.py ,在第5行把name2id更改为自己数据集的类别名并运行程序,txt文件会在 \json2txt\txt_here 生成
训练数据放在 \yolov8\dataset 下,文件结构参考example文件夹,三个文件夹的作用参考这篇文章,注意修改detect.yaml的names为自己数据集的类别名
运行 \yolov8\train.py ,第9行的参数详见官方文档
- 若想保存推理结果,运行 \yolov8\detect.py
- 若想实时显示推理结果,运行 \yolov8\detect_video.py
参数详见官方文档
新建一个conda环境,执行以下命令,从之前训练的pt文件中导出opset=19的onnx模型
pip install protobuf
pip install git+https://github.com/airockchip/ultralytics_yolov8.git@main
yolo export model=path_to_pt_file format=rknn opset=19
该标题下所有代码默认位于RMSDK文件夹下
首先配置香橙派网络
sudo vim /etc/network/
文件最下方加入(usb0请改为自己网卡)
auto usb0
iface usb0 inet static
address 192.168.42.3
netmask 255.255.255.0
gateway 192.168.1.1
随后运行 01_rndis_test.py 检查rndis是否可用,运行 02_SDK_code.py 输入command,若返回ok;则成功使用sdk在rndis模式下与RMEP通讯
一个很奇怪的现象:貌似香橙派需要用供电线和RMEP连接才能使用rndis通讯,目前不确定这是否是一个发生在我的机器上的bug
进入 03_decoder_install 先给脚本加权并安装依赖
sudo apt-get install aptitude libopus-dev cmake
sudo aptitude install libavcodec-dev=7:4.4.1-3ubuntu5
sudo aptitude install libswscale-dev=7:4.4.1-3ubuntu5
pip install "pybind11[global]"
chmod +x ./build.sh
./build.sh
安装完成后进入python获取系统路径
python3
进入后输入以下命令
import sys
sys.path
exit()
输出的内容就是import默认的检索目录,我这里是 /home/yuanzl/.local/lib/python3.8/site-packages (请根据实际情况替换)
sudo mv output /home/yuanzl/.local/lib/python3.8/site-packages/DJIdecoder
sudo mv robot_network /home/yuanzl/.local/lib/python3.8/site-packages/robot_network
进入 04_video_stream_test ,首先安装依赖
sudo apt-get install python3-pyaudio python3-numpy
python3 liveviex.py
如果报错找不到_portaudio,请参考这篇文章或者运行以下命令
pip3 install --upgrade Pyaudio
运行 05_detect_test.py ,然后你应该就能在画面上看到装甲板的检测结果了
此时的推理约2fps,效果并不理想,因此使用香橙派5 Plus的RK3588对解码加速
首先找到一台运行ubuntu的设备(香橙派除外,没有的话可以在windows里跑WSL)
首先下载[rknn-toolkit2](Releases · rockchip-linux/rknn-toolkit2 (github.com)),在压缩包的*/rknn-toolkit2/packages*中安装对应python版本的包,安装完以后进入python,执行以下命令,若无报错则安装成功
from rknn.api import RKNN
然后下载rknn_model_zoo并解压,进入*/examples/yolov8/python*,将自己之前转换好的onnx文件放在该目录下,运行以下命令
python3 convert.py best.onnx rk3588 i8 best.rknn
参数解析:
<onnx_model>
: 指定 ONNX 模型路径
<TARGET_PLATFORM>
: 指定 NPU 平台名称。支持的平台请参考这里
<dtype>(可选)
: 指定为 i8
或 fp
。i8
用于 int8 量化,fp
用于 fp16 量化。
<output_rknn_path>(可选)
: 指定 RKNN 模型的保存路径
找到之前下载的[rknn-toolkit2](Releases · rockchip-linux/rknn-toolkit2 (github.com)),在*/rknn_toolkit_lite2/packages*中安装对应python版本的包,安装完以后进入python,执行以下命令,若无报错则安装成功
from rknnlite.api import RKNNLite