国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

瑞芯微RK3588 C++部署Yolov8檢測和分割模型

這篇具有很好參考價(jià)值的文章主要介紹了瑞芯微RK3588 C++部署Yolov8檢測和分割模型。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

最近這一個(gè)月在研究國產(chǎn)瑞芯微板子上部署yolov8的檢測和分割模型,踩了很多坑,記錄一下部署的過程和遇到的一些問題:

1 環(huán)境搭建

需要的環(huán)境和代碼主要包括:
(1)rknn-toolkit2-1.5.2:工具鏈,開發(fā)環(huán)境
(2)rockchip-yolov8:pt模型轉(zhuǎn)onnx模型
(3)yolov8_onnx2rknn:在(2)的基礎(chǔ)上轉(zhuǎn)檢測rknn模型
(4)yolov8seg_onnx2rknn:在(2)的基礎(chǔ)上轉(zhuǎn)分割rknn模型
yolov8-seg 在rk3588上進(jìn)行c++部署,瑞芯微RK3588,深度學(xué)習(xí),目標(biāo)分割,c++,YOLO
最好使用對應(yīng)的環(huán)境,環(huán)境不匹配的話會(huì)出現(xiàn)很多問題。

2 ubuntu docker環(huán)境

Docker容器主要用來進(jìn)行模型轉(zhuǎn)換,也就是pt轉(zhuǎn)onnx的過程,因此docker中需要用的的包主要是rockchip-yolov8,需要修改該代碼,進(jìn)行模型的轉(zhuǎn)換,在linux服務(wù)器上安裝docker環(huán)境,創(chuàng)建一個(gè)ubuntu系統(tǒng)的docker環(huán)境
這一部分的修改代碼參考山水無移大哥的部署過程,賊清洗,膜拜一下,少走了很多彎路,直接貼上地址。

3 模型轉(zhuǎn)換問題

在轉(zhuǎn)自己的pt到onnx模型時(shí),容易出現(xiàn)以下問題:
(1)報(bào)錯(cuò)信息:

copying a param with shape torch.Size([64,64,3,3]) from checkpoint,the shape in current model is torch.Size(32,64,3,3)

yolov8-seg 在rk3588上進(jìn)行c++部署,瑞芯微RK3588,深度學(xué)習(xí),目標(biāo)分割,c++,YOLO
主要的問題有兩種:
1)在最后一步導(dǎo)出onnx時(shí),yolov8s.yaml里面沒有修改成自己的模型的類別信息;
2)自己訓(xùn)練的yolov8m模型,但是選擇的yaml是yolov8s.yaml


from ultralytics import YOLO

# model = YOLO('/cytech_ai/sipingtest/rknntest/model/20230228_yolov8_LiftPerson_filter.pt')
# results = model(task='detect', mode='predict', source='/cytech_ai/sipingtest/rknntest/2.jpg', line_thickness=3, save=True, device='cpu')

model = YOLO('/cytech_ai/sipingtest/rknntest/rockchip-yolov8/ultralytics/cfg/models/v8/yolov8s.yaml')
results = model(task='detect', mode='predict', source='/cytech_ai/sipingtest/rknntest/2.jpg', line_thickness=3, save=True, device='cpu')

(2)多處修改時(shí),最終的輸出結(jié)果和分割模型的結(jié)果搞混了,導(dǎo)致模型輸出對應(yīng)不上:
yolov8-seg 在rk3588上進(jìn)行c++部署,瑞芯微RK3588,深度學(xué)習(xí),目標(biāo)分割,c++,YOLO
yolov8-seg 在rk3588上進(jìn)行c++部署,瑞芯微RK3588,深度學(xué)習(xí),目標(biāo)分割,c++,YOLO

4 RK3588上環(huán)境搭建

瑞芯微rk3588上,需要的環(huán)境主要是rknpu2,主要用來C++編寫cmakelists文件時(shí)導(dǎo)入動(dòng)態(tài)庫和頭文件,我這里將檢測模型和分割模型全部集成到一個(gè)工程里面,分享一個(gè)個(gè)人的cmakelist文件:

cmake_minimum_required(VERSION 3.4.1)

# 聲明一個(gè) cmake 工程
set(PROJECT_NAME rknn_yolov8_AlgDetectModel)
project(${PROJECT_NAME})

set(CMAKE_CXX_STANDARD 11)


set(TARGET_SOC "rk3588")
set(CMAKE_C_COMPILER "aarch64")

# rknn api
if(TARGET_SOC STREQUAL "rk356x")
  set(RKNN_API_PATH ${CMAKE_SOURCE_DIR}/../../runtime/RK356X/${CMAKE_SYSTEM_NAME}/librknn_api)
  set(RKNN_API_PATH ${CMAKE_SOURCE_DIR}/../../runtime/RK356X/${CMAKE_SYSTEM_NAME}/librknn_api)
elseif(TARGET_SOC STREQUAL "rk3588")
  set(RKNN_API_PATH /home/siping/testrknn/rknpu2-1.5.2/runtime/RK3588/Linux/librknn_api/aarch64)
else()
  message(FATAL_ERROR "TARGET_SOC is not set, ref value: rk356x or rk3588 or rv110x")
endif()

if (CMAKE_SYSTEM_NAME STREQUAL "Android")
  set(RKNN_RT_LIB ${RKNN_API_PATH}/${CMAKE_ANDROID_ARCH_ABI}/librknnrt.so)
else()
  if (CMAKE_C_COMPILER MATCHES "aarch64")
    set(LIB_ARCH aarch64)
  else()
    set(LIB_ARCH armhf)
  endif()

  #直接鏈接這個(gè)庫了
  set(RKNN_RT_LIB /home/siping/testrknn/rknpu2-1.5.2/runtime/RK3588/Linux/librknn_api/aarch64/librknnrt.so)
endif()

#鏈接頭文件
include_directories(/home/siping/testrknn/rknpu2-1.5.2/runtime/RK3588/Linux/librknn_api/include)

#第三方依賴庫
include_directories(${CMAKE_SOURCE_DIR}/../3rdparty)

# opencv
#if (CMAKE_SYSTEM_NAME STREQUAL "Android")
#    set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/../3rdparty/opencv/OpenCV-android-sdk/sdk/native/jni/abi-${CMAKE_ANDROID_ARCH_ABI})
#else()
#  if(LIB_ARCH STREQUAL "armhf")
#    set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/../3rdparty/opencv/opencv-linux-armhf/share/OpenCV)
#  else()
#    set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/../3rdparty/opencv/opencv-linux-aarch64/share/OpenCV)
#  endif()
#endif()
#find_package(OpenCV REQUIRED)

#手動(dòng)鏈接opencv480
set(OpenCV_DIR "/home/siping/thirdparty/opencv480/")
set(OpenCV_INCLUDE_DIRS "/home/siping/thirdparty/opencv480/include/opencv4")
set(OpenCV_LDFLAGS "/home/siping/thirdparty/opencv480/lib")

include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LDFLAGS})

message(STATUS "OpenCV library status:")

message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
message(STATUS "    libraries: ${OpenCV_LDFLAGS}")

#rga
if(TARGET_SOC STREQUAL "rk356x")
  set(RGA_PATH ${CMAKE_SOURCE_DIR}/../3rdparty/rga/RK356X)
elseif(TARGET_SOC STREQUAL "rk3588")
  set(RGA_PATH ${CMAKE_SOURCE_DIR}/../3rdparty/rga/RK3588)
else()
  message(FATAL_ERROR "TARGET_SOC is not set, ref value: rk356x or rk3588")
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Android")
  set(RGA_LIB ${RGA_PATH}/lib/Android/${CMAKE_ANDROID_ARCH_ABI}/librga.so)
else()
  if (CMAKE_C_COMPILER MATCHES "aarch64")
    set(LIB_ARCH aarch64)
  else()
    set(LIB_ARCH armhf)
  endif()
  #鏈接庫,就這一個(gè)
  set(RGA_LIB ${RGA_PATH}/lib/Linux//${LIB_ARCH}/librga.so)
endif()
include_directories( ${RGA_PATH}/include)


#瑞芯微 glog日志庫
set(GLOG_INCLUDE "/home/siping/thirdparty/glog_arm64/include/")
set(GLOG_LIB "/home/siping/thirdparty/glog_arm64/lib")

include_directories(${GLOG_INCLUDE})
link_directories(${GLOG_LIB})

message(STATUS "GLOG library status:")
message(STATUS "    include path: ${GLOG_INCLUDE}")
message(STATUS "    libraries: ${GLOG_LIB}")

#鏈接頭文件
include_directories( ${CMAKE_SOURCE_DIR}/include)

#鏈接cpp文件
aux_source_directory(src DIR_CPP)

#==============================================================

# install target and libraries 將所有需要的依賴庫放在同一個(gè)位置
#set install path
set(CMAKE_BUILD_RPATH "${OpenCV_LDFLAGS}")
set(CMAKE_INSTALL_PREFIX /home/siping/algunion/alglib)
message(STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}")



# set runtime path
set(CMAKE_INSTALL_RPATH ".")



# 如果想生成動(dòng)態(tài)庫,SHARE .so
#add_library(${PROJECT_NAME} SHARED  ${DIR_CPP})
#set(${PROJECT_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
add_executable(${PROJECT_NAME} src/main.cc ${DIR_CPP})

target_link_libraries(${PROJECT_NAME}
        ${RKNN_RT_LIB} #必須的runtime  librknnrt.so
        ${RGA_LIB} #rga  librga.so
        ${OpenCV_LDFLAGS}
        -lopencv_world
        ${GLOG_LIB}
        -lglog
        )

install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX})

file(GLOB GLOG_LIB "${GLOG_LIB}/lib*.so.*")
file(GLOB OpenCV_LDFLAGS "${OpenCV_LDFLAGS}/lib*.so.*")

install(PROGRAMS
        ${OpenCV_LDFLAGS}
        ${RKNN_RT_LIB}
        ${RGA_LIB}
        ${GLOG_LIB}
        DESTINATION ${CMAKE_INSTALL_PREFIX})

install(DIRECTORY model DESTINATION "/home/siping/algunion")

前面用到的環(huán)境和代碼打個(gè)包,上傳到了百度網(wǎng)盤,C++的部署的代碼參考的里面都有,我自己這邊只是根據(jù)自己的項(xiàng)目做了集成,如有需要可私信。

5 參考

檢測模型:https://blog.csdn.net/zhangqian_1/article/details/135523096?spm=1001.2014.3001.5502
分割模型:https://blog.csdn.net/zhangqian_1/article/details/131571838?spm=1001.2014.3001.5502

另外一種部署方法,僅檢測模型(Python):
https://blog.csdn.net/m0_48979117/article/details/135628375文章來源地址http://www.zghlxwxcb.cn/news/detail-845695.html

到了這里,關(guān)于瑞芯微RK3588 C++部署Yolov8檢測和分割模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • yolov8seg 瑞芯微RKNN部署

    yolov8seg 瑞芯微RKNN部署

    首先是把yolov8的onnx模型轉(zhuǎn)成rknn模型,這里用的是yolov8n-seg. 轉(zhuǎn)模型代碼如下,這段是python代碼: 運(yùn)行成功之后會(huì)得到y(tǒng)olov8n_seg.rknn模型。 往下是cpp代碼。 運(yùn)行rknn模型,不是零copy的話用這段代碼。 零copy方法用這段代碼。 下面來看下rknn模型運(yùn)行結(jié)果outputs的結(jié)構(gòu)。 具體這個(gè)結(jié)

    2024年02月13日
    瀏覽(22)
  • 瑞芯微RK3588,交叉編譯opencv

    這里以opencv-4.6.0為例子。 下載: opencv-4.6.0 opencv_contrib-4.6.0 .cache 提取碼:0816 eigen-3.3.9. ffmpeg-6.0 yasm-1.3.0 交叉編譯器_gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz 注意:不要關(guān)閉當(dāng)前終端!后面編譯opencv也在當(dāng)前終端。這里很重要! 安裝libgtk2.0-dev時(shí)的報(bào)錯(cuò),解決方案 以上,有

    2024年02月08日
    瀏覽(93)
  • 迅為RK3588開發(fā)板-基于瑞芯微RK3588攝像頭方案

    迅為RK3588開發(fā)板-基于瑞芯微RK3588攝像頭方案

    硬件: RK3588開發(fā)板+攝像頭 ? MIPI攝像頭: ? 1.1 硬件連接 RK3588?底板上有四個(gè)攝像頭接口,如下圖所示,此四個(gè)接口均可連接攝像頭?ov5695?和?攝像頭?ov13850。 ? 攝像頭模塊連接硬件時(shí)要將模塊對準(zhǔn)插槽缺口處,J1?接口連接攝像頭模塊如下圖所示: ? J2?接口連接攝像頭模塊

    2024年02月09日
    瀏覽(116)
  • 20230513查找瑞芯微RK3588開發(fā)板以及對DP接口的支持

    20230513查找瑞芯微RK3588開發(fā)板以及對DP接口的支持

    20230513查找瑞芯微RK3588開發(fā)板以及對DP接口的支持 2023/5/13 17:43 01、t-firefly https://www.t-firefly.com/ https://www.t-firefly.com/product/industry/aio1684xjd4 https://www.t-firefly.com/product/industry/aio3588q https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-24889843124.9.1d9d26b9n2njehid=691628748981 AIO-3588Q 8K AI核心板8nm A76

    2024年02月04日
    瀏覽(98)
  • 瑞芯微RK3588J安裝linux的ubuntu系統(tǒng)/刷機(jī)全步驟

    瑞芯微RK3588J安裝linux的ubuntu系統(tǒng)/刷機(jī)全步驟

    1.通過https://wiki.t-firefly.com/zh_CN/Core-3588J/index.html進(jìn)入ITX3588J開發(fā)板說明書,在“升級(jí)固件”中選擇“使用USB線纜升級(jí)固件”。 ?2.按照要求下載壓縮包。 3.在開發(fā)板說明書目錄最下端“資料下載”處下載“Ubuntu固件”。 4.使用 Type-C 數(shù)據(jù)線一端連接主機(jī),一端連接開發(fā)板。電源

    2024年02月12日
    瀏覽(37)
  • 瑞芯微RK3588開發(fā)板的固件燒錄完整教程(簡單好上手)

    瑞芯微RK3588開發(fā)板的固件燒錄完整教程(簡單好上手)

    ???????本期技術(shù)干貨內(nèi)容分享嵌入式開發(fā)板固件燒錄教程,以英碼嵌入式開發(fā)板EVM3588為例,該發(fā)板搭載的是瑞芯微RK3588平臺(tái),燒錄方式采用最常用的USB_OTG燒錄,簡單又方便! 開發(fā)環(huán)境 主機(jī):Ubuntu 20.04 開發(fā)板:英碼科技EVM3588開發(fā)板 燒錄工具:RKDevTool_Release_v2.92.zi

    2024年02月11日
    瀏覽(36)
  • yolov8n 瑞芯微RKNN、地平線Horizon芯片部署、TensorRT部署,部署工程難度小、模型推理速度快

    yolov8n 瑞芯微RKNN、地平線Horizon芯片部署、TensorRT部署,部署工程難度小、模型推理速度快

    ??特別說明:參考官方開源的yolov8代碼、瑞芯微官方文檔、地平線的官方文檔,如有侵權(quán)告知?jiǎng)h,謝謝。 ??模型和完整仿真測試代碼,放在github上參考鏈接 模型和代碼。 ??因?yàn)橹皩懥藥灼獃olov8模型部署的博文,存在兩個(gè)問題:部署難度大、模型推理速度慢。該篇解

    2024年01月16日
    瀏覽(27)
  • yolov8n 瑞芯微RKNN和地平線Horizon芯片仿真測試部署,部署工程難度小、模型推理速度快

    yolov8n 瑞芯微RKNN和地平線Horizon芯片仿真測試部署,部署工程難度小、模型推理速度快

    ??特別說明:參考官方開源的yolov8代碼、瑞芯微官方文檔、地平線的官方文檔,如有侵權(quán)告知?jiǎng)h,謝謝。 ??模型和完整仿真測試代碼,放在github上參考鏈接 模型和代碼。 ??因?yàn)橹皩懥藥灼獃olov8模型部署的博文,存在兩個(gè)問題:部署難度大、模型推理速度慢。該篇解

    2024年02月01日
    瀏覽(28)
  • 2023.01更新 c++下面部署yolov8檢測和實(shí)例分割模型(七)

    2023.12.05 更新: 新增yolov8的RT-DETR部署 先開貼占個(gè)坑。 yolov8:https://github.com/ultralytics/ultralytics 這次的v8更新的是一個(gè)框架,里面也可以用v5和v3。 但是這次更新來說,目前模型的檢測效果和之前的yolov7剛出來一樣,會(huì)多出很多誤檢,在某些情況下這些誤檢反而效果不好。另外最

    2024年02月11日
    瀏覽(20)
  • 基于瑞芯微rk3588+寒武紀(jì) | 38TOPS INT8算力的AI邊緣計(jì)算盒子,智能安防、智慧工地、智慧城管、智慧油站

    基于瑞芯微rk3588+寒武紀(jì) | 38TOPS INT8算力的AI邊緣計(jì)算盒子,智能安防、智慧工地、智慧城管、智慧油站

    瑞芯微rk3588+寒武紀(jì) | 38TOPS INT8算力 ●?采用?Big-Little?大小核架構(gòu),搭載四核?A76+四核?A55,CPU主頻高達(dá)?2.4GHz?,提供1MB L2 Cache?和?3MB L3?,Cache提供更強(qiáng)的?CPU?運(yùn)算能力。 ●?高性能四核 Mali-G610 GPU,至少支持 2 路 4K UI,能流暢運(yùn)行復(fù)雜的圖形處理; ●?可擴(kuò)展4G/WIFI6/BT等無

    2024年02月03日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包