模型部署:(四)安卓端部署Yolov8-v8.2.99實例分割項目全流程記錄

模型部署:(四)安卓端部署Yolov8-v8.2.99實例分割項目全流程記錄

  • 1、下載ncnn
  • 2、下載opencv-mobile
  • 3、文件拷貝
  • 4、andorid_studio相關配置
  • 5、文件內參數設置
  • 5、重構項目:
  • 6、打包apk
  • 7、部署自己訓練的實例分割模型

1、下載ncnn

地址:

https://github.com/Tencent/ncnn/tree/20230223

下載的版本是

ncnn-20230223-android-vulkan

在這里插入圖片描述

在這里插入圖片描述


在這里插入圖片描述

2、下載opencv-mobile

下載的版本是:opencv-mobile-4.6.0-android
官網地址:

https://github.com/nihui/opencv-mobile/releases?page=2

在這里插入圖片描述

3、文件拷貝

將上述下載的ncnn-20230223-android-vulkanopencv-mobile-4.6.0-android分別解壓,拷貝到
目錄D:\ncnn-android-yolov8-seg\app\src\main\jni

在這里插入圖片描述


4、andorid_studio相關配置

我的這個版本是:Android Studio Flamingo | 2022.2.1 Patch 1
在這里插入圖片描述


配置SDK Platforms

在這里插入圖片描述

配置SDK Platforms

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

5、文件內參數設置

在這里插入圖片描述

在這里插入圖片描述

文件:build.gradle (Project)
在這里插入圖片描述

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {repositories {jcenter()google()}dependencies {classpath 'com.android.tools.build:gradle:3.5.0'}
}allprojects {repositories {jcenter()google()}
}

文件:build.gradle (Module: app)

在這里插入圖片描述

apply plugin: 'com.android.application'android {compileSdkVersion 24buildToolsVersion "29.0.2"defaultConfig {applicationId "com.tencent.yolov8ncnn"archivesBaseName = "$applicationId"minSdkVersion 24}externalNativeBuild {cmake {version "3.10.2"path file('src/main/jni/CMakeLists.txt')}}dependencies {implementation 'com.android.support:support-v4:24.0.0'}ndkVersion '24.0.8215888'
}

文件:gradle-wrapper.properties
在這里插入圖片描述

#Sun Sep 08 23:09:42 CST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-5.4.1-all.zip

文件:local.properties

在這里插入圖片描述

## This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Fri Sep 12 17:47:07 CST 2025
cmake.dir=D\:\\Android_SDK\\Sdk\\cmake\\3.10.2.4988404
ndk.dir=D\:\\Android_SDK\\Sdk\\ndk\\24.0.8215888
sdk.dir=D\:\\Android_SDK\\Sdk

文件:settings.gradle

在這里插入圖片描述

文件:CMakeLists.txt

在這里插入圖片描述

5、重構項目:

在這里插入圖片描述

6、打包apk

在這里插入圖片描述

但是打包過程中會出現報錯,提示信息如下:

Execution failed for task ':app:stripDebugDebugSymbols'.
> No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

解決方案:
在這里插入圖片描述

同時安裝低版本的ndk(如version=21.0.6113669),將低版
本ndk中toolchains 文件夾下的arm-linux-androideabi等文件復制到高版
本ndk的toolchains 文件夾中

在這里插入圖片描述
復制后如下所示::復制到24.0.8215888對應的目錄下


在這里插入圖片描述

再次重構,打包,效果如下所示:

在這里插入圖片描述

7、部署自己訓練的實例分割模型

#測試  ## 模型推理
yolo segment predict model=yolov8s-seg.pt   source=0a2cf558-d1bd-4ad8-9724-ce5760192bb9.jpg

模型轉換


yolo export model=yolov8s-seg.pt format=onnx simplify=True opset=12
# 使用導出的.onnx模型推理
## 默認使用gpu
yolo segment predict model=yolov8s-seg.onnx source=0a2cf558-d1bd-4ad8-9724-ce5760192bb9.jpg 
## 默認使用cpu
yolo segment predict model=yolov8s-seg.onnx source=0a2cf558-d1bd-4ad8-9724-ce5760192bb9.jpg device=cpu

對.onnx模型進行去冗余操作:

安裝相關依賴包:

pip install onnx-simplifier
# 去冗余指令:
python -m onnxsim   yolov8s-seg.onnx   yolov8s-seg-sim.onnx

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/96406.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/96406.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/96406.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

高并發、低延遲全球直播系統架構

一、 核心架構圖 整個系統的數據流和工作流程如下圖所示,它清晰地展示了從主播推流到觀眾觀看的完整過程: #mermaid-svg-QzNpj0DWxd5FERPC {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QzN…

AWS strands agents 當智能體作為獨立服務/容器部署時,它們無法共享進程內狀態

當智能體作為獨立服務/容器部署時,它們無法共享進程內狀態。 以下是針對分布式部署中動態內存庫的生產就緒解決方案:1. 基于外部存儲的內存庫基于 DynamoDB 的共享內存import boto3 from strands import Agent, tool from typing import Dict, Any impor…

第五節 JavaScript——引用類型、DOM/BOM 與異步編程

JavaScript 的第五節課通常會深入探討 ??引用類型、DOM 操作、BOM 操作、事件處理以及異步編程?? 等核心概念。這些知識能讓你創建動態交互豐富的網頁。下面我將詳細講解這些內容并提供示例。 ?? JavaScript 第五節:引用類型、DOM/BOM 與異步編程 ? 一、引用類型 引…

使用Pycharm進行遠程ssh(以Featurize為例)

使用Pycharm進行遠程ssh(以Featurize為例)文章目錄介紹應用背景遠程連接Python連接Jupyter介紹應用背景 在使用Pycharm 專業版的時候進行遠程ssh連接服務器(Featurize)的Python解釋器和Jupyter 遠程連接Python 打開Pycharm點擊…

深入研究:ClickHouse中arrayExists與hasAny在ORDER BY場景下的性能差異

最近公司大數據情況下ClickHouse查詢性能極差,后來發現在大數據量ORDER BY場景下,arrayExists(x -> x in ...)比hasAny性能快10倍!!!! 一、問題重述與研究背景 在大數據量 ORDER BY場景下,…

Spring AI (二)結合Mysql做聊天信息存儲

上文講了&#xff0c;用Spring ai做簡單的聊天功能&#xff0c;沒看過的可以查看下 Spring AI結合豆包模型 這里簡單結合下Jdbc做下聊天記錄的存儲和查詢&#xff0c;讓對話變的更智能。 首先是Pom的支持 <dependency><groupId>org.springframework.ai</grou…

【docker】data-root 數據遷移(防止無法加載鏡像和容器問題)

操作系統&#xff1a;ubuntu 24.04 docker版本&#xff1a;docker-ce 28.1.1 目標&#xff1a;將/var/lib/docker 的數據遷移到/data/docker停止docker sudo systemctl stop docker.socket sudo systemctl stop docker這個步驟一定要做&#xff0c;否則容易導致數據不一致。 rs…

二、網頁的“化妝師”:從零學習 CSS

一、CSS 是什么 1.1 CSS 的定義 CSS&#xff08;Cascading Style Sheets&#xff0c;層疊樣式表&#xff09; 是一種用來給 HTML 頁面 添加樣式的語言。 簡單來說&#xff1a; HTML 負責結構 —— 決定網頁上有什么內容。 CSS 負責樣式 —— 決定這些內容“長什么樣”。 如果…

傳統項目管理與敏捷的核心差異

在項目管理領域&#xff0c;傳統方法與敏捷方法代表了兩種不同的管理思維與實踐路徑。傳統項目管理強調計劃性、規范性和階段性推進&#xff0c;而敏捷則注重靈活性、快速迭代和價值交付。 正如彼得德魯克所說&#xff1a;“沒有完美的計劃&#xff0c;只有不斷調整的行動。”理…

axios+ts封裝

http.ts import axios from axios import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from axios import qs from qs/*** 擴展AxiosRequestConfig&#xff0c;增加一些自定義的屬性* isAuth: 自定義的參數中&#xff0c;用來判斷是否攜帶token 因為AxiosReq…

2026新選題:基于K-Means實現學生求職意向聚類推薦職位

作者簡介&#xff1a;Java領域優質創作者、CSDN博客專家 、CSDN內容合伙人、掘金特邀作者、阿里云博客專家、51CTO特邀作者、多年架構師設計經驗、多年校企合作經驗&#xff0c;被多個學校常年聘為校外企業導師&#xff0c;指導學生畢業設計并參與學生畢業答辯指導&#xff0c;…

SpringCloud gateway配置predicates的匹配規則

需求 通過gateway的route規則&#xff0c;實現分組流量配置 資源 一個nacos&#xff0c;一個gateway &#xff0c;一個服務app&#xff08;部署雙實例group-1&#xff0c;group-2&#xff09;&#xff0c;實現特定條件下往分組一和分組二流量切換。 方案 1 配置文件 nacos…

android14 硬鍵盤ESC改BACK按鍵返回無效問題

在之前的android版本中修改外接鍵盤ESC為BACK按鍵做返回鍵使用&#xff0c;直接修改如下代碼即可&#xff1a;--- a/frameworks/base/data/keyboards/Generic.kcmb/frameworks/base/data/keyboards/Generic.kcm-499,7 499,7 key PLUS {### Non-printing keys ###key ESCAPE { …

【開題答辯全過程】以 asp高校外賣訂單系統的設計與實現為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人&#xff0c;語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

UVa1063/LA3807 The Rotation Game

UVa1063/LA3807 The Rotation Game題目鏈接題意輸入格式輸出格式分析AC 代碼IDA*分3次BFS題目鏈接 本題是2004年icpc亞洲區域賽上海賽區的H題 題意 如下圖所示形狀的棋盤上分別有8個1、2、3&#xff0c;要往A&#xff5e;H方向旋轉棋盤&#xff0c;使中間8個方格數字相同。圖&…

用pywin32連接autocad 寫一個利用遺傳算法從選擇的閉合圖形內進行最優利用率的排版 ai草稿

好的&#xff0c;我們來深入細說遺傳算法&#xff08;Genetic Algorithm, GA&#xff09;在鈑金自動排版中的應用。遺傳算法 (GA) 在鈑金排版中的詳細解析遺傳算法是一種受達爾文生物進化論啟發的元啟發式優化算法。它不追求一次性找到數學上的絕對最優解&#xff0c;而是通過模…

Go語言io.Copy深度解析:高效數據復制的終極指南

在日常開發中&#xff0c;我們經常需要在不同的數據源之間復制數據。無論是文件操作、網絡傳輸還是進程通信&#xff0c;數據復制都是不可或缺的基礎操作。Go語言的標準庫提供了一個強大而高效的工具來簡化這一過程&#xff1a;io.Copy。 什么是io.Copy&#xff1f; io.Copy是G…

【Vue3】07-利用setup編寫vue(2)-setup的語法糖

其它篇章&#xff1a; 1.【Vue3】01-創建Vue3工程 2.【Vue3】02-Vue3工程目錄分析 3.【Vue3】03-編寫app組件——src 4.【Vue3】04-編寫vue實現一個簡單效果 5.【Vue3】05-Options API和Composition API的區別 6.【Vue3】06-利用setup編寫vue&#xff08;1&#xff09; 7.【Vue…

Firefox自定義備忘

1.設置firefox右鍵點擊標簽直接關閉&#xff0c;由于目前沒有插件能實現這個功能&#xff0c;只能手動設置了&#xff08;目前已知支持142和之前的版本&#xff09; firefox117右鍵關閉macWin 117版本應該可以了&#xff0c;大家可試下&#xff0c;配置方法參考之前的帖子&…

跨屏互聯KuapingCMS建站系統發布更新 增加數據看板

跨屏互聯KuapingCMS建站系統發布更新&#xff0c;增加了文章統計、產品統計、軟文統計、流量統計、pv統計、ip統計、os訪問者設備統計等等&#xff0c;整個體驗會更好&#xff0c;數據顯示更加直觀&#xff0c;可以清晰看到最近的網站數據&#xff0c;特別是對于老板&#xff0…