女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于RV1126開發板的resnet50訓練部署教程

ljx2016 ? 來源:ljx2016 ? 作者:ljx2016 ? 2025-04-16 16:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. Resnet50簡介

ResNet50網絡是2015年由微軟實驗室的何愷明提出,獲得ILSVRC2015圖像分類競賽第一名。在ResNet網絡提出之前,傳統的卷積神經網絡都是將一系列的卷積層和池化層堆疊得到的,但當網絡堆疊到一定深度時,就會出現退化問題。 殘差網絡的特點是容易優化,并且能夠通過增加相當的深度來提高準確率。其內部的殘差塊使用了跳躍連接,緩解了在深度神經網絡中增加深度帶來的梯度消失問題。

教程基于圖像分類算法ResNet50的訓練和部署到EASY-EAI-Nano(RV1126)進行說明。

wKgZO2f_aA2AL38aAAAoaKA2oe4974.png

2. 準備數據集

2.1 數據集下載

本教程以車輛分類算法為例,數據集的百度網盤下載鏈接為:

https://pan.baidu.com/s/1pkYm9AA3s3WDM7GecShlbQ 提取碼:6666

解壓完成后得到以下兩個文件夾:

wKgZPGf_aA2AdM2PAAAcuI6vEaI529.png

打開可以看到一共10類汽車:

wKgZO2f_aA2ADTvQAAA__DRjBiY717.png

類別名稱 類別索引
SUV 0
BUS 1
family sedan 2
fire engine 3
heavy truck 4
jeep 5
mini bus 6
racing car 7
taxi 8
truck 9

3. ResNet50圖像分類訓練

3.1 訓練源碼下載

訓練源碼的百度網盤下載鏈接為:

https://pan.baidu.com/s/1slgFo12Hoy0_copi1MFmXg 提取碼:6666

得到下圖所示目錄:

wKgZPGf_aA2AavCoAABEXvQrHgY641.png

把數據集解壓到當前目錄:

wKgZO2f_aA6ANdXoAABJZITknpk293.png

3.2 訓練模型

進入anconda的pyTorch環境,切換到訓練源碼目錄執行以下指令開始訓練:

python train.py

執行結果如下圖所示:

wKgZPGf_aA6AQClRAADQ65sjoI4774.png

訓練結束后test loss結果如下所示:

wKgZO2f_aA6AbKeaAABfK06G61U140.png

訓練結束后test accuracy結果如下所示:

wKgZPGf_aA6AEg2VAABvOCB5CoE746.png

生成的最優模型如下所示:

wKgZO2f_aA6AJTbCAACYU9u1sUk566.png

3.3 在PC端測試模型

在訓練源碼目錄執行以下指令,測試模型(生成模型名稱不一致則修改predict.py腳本):

python predict.py
wKgZPGf_aA-AS8tKAAA2R_WJU6g902.png

結果類別索引號為1——BUS, 測試結果正確。

wKgZO2f_aA-AWbCTAAMsqHMxYwU237.jpg

3.4 pth模型轉換為onnx模型

執行以下指令把pytorch的pth模型轉換onxx模型:

python pth_to_onnx.py
wKgZPGf_aA-AHGxRAACvyuYWClo637.png

生成ONNX模型如下所示:

wKgZO2f_aA-AUATQAAB2c1ZT1Nw649.png

4. rknn-toolkit模型轉換

4.1 rknn-toolkit模型轉換環境搭建

onnx模型需要轉換為rknn模型才能在EASY-EAI-Nano運行,所以需要先搭建rknn-toolkit模型轉換工具的環境。當然tensorflow、tensroflow lite、caffe、darknet等也是通過類似的方法進行模型轉換,只是本教程onnx為例。

4.1.1 概述

模型轉換環境搭建流程如下所示:

wKgZPGf_aBCAPwuUAABVaQQIt48860.png

4.1.2 下載模型轉換工具

為了保證模型轉換工具順利運行,請下載網盤里”AI算法開發/RKNN-Toolkit模型轉換工具/rknn-toolkit-v1.7.3/docker/rknn-toolkit-1.7.3-docker.tar.gz”。

網盤下載鏈接:https://pan.baidu.com/s/1_PquxW2rFuf77q6mT3gkDQ 提取碼:6666

4.1.3 把工具移到ubuntu18.04

把下載完成的docker鏡像移到我司的虛擬機ubuntu18.04的rknn-toolkit目錄,如下圖所示:

wKgZO2f_aBCABT65AABX1QyhA-s705.png

4.1.4 運行模型轉換工具環境

在該目錄打開終端:

wKgZPGf_aBCAMzJMAAC2zYJntHM693.png

執行以下指令加載模型轉換工具docker鏡像:

docker load --input /home/developer/rknn-toolkit/rknn-toolkit-1.7.3-docker.tar.gz

執行以下指令進入鏡像bash環境:

docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb rknn-toolkit:1.7.3 /bin/bash

現象如下圖所示:

wKgZO2f_aBCAGdkiAAB7xliyey8568.png

輸入“python”加載python相關庫,嘗試加載rknn庫,如下圖環境測試成功:

wKgZPGf_aBCAHR7uAACpm7KDKWw863.png

至此,模型轉換工具環境搭建完成。

4.2 模型轉換為RKNN

EASY EAI Nano支持.rknn后綴的模型的評估及運行,對于常見的tensorflow、tensroflow lite、caffe、darknet、onnx和Pytorch模型都可以通過我們提供的 toolkit 工具將其轉換至 rknn 模型,而對于其他框架訓練出來的模型,也可以先將其轉至 onnx 模型再轉換為 rknn 模型。 模型轉換操作流程入下圖所示:

wKgZO2f_aBGAZFHEAAD58DT6vJc451.png

4.2.1 模型轉換Demo下載

下載百度網盤鏈接:https://pan.baidu.com/s/1iTcklPq7lyfVbG4GlsZNIg 提取碼:6666。把resnet50_model_convert.tar.bz2和quant_dataset.zip解壓到虛擬機,如下圖所示:

wKgZPGf_aBGAfUOaAAB8s_QfbS4438.png

4.2.2 進入模型轉換工具docker環境

執行以下指令把工作區域映射進docker鏡像,其中/home/developer/rknn-toolkit/model_convert_test為工作區域,/test為映射到docker鏡像,/dev/bus/usb:/dev/bus/usb為映射usb到docker鏡像:

docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v /home/developer/rknn-toolkit/model_convert_test:/test rknn-toolkit:1.7.3 /bin/bash

執行成功如下圖所示:

wKgZO2f_aBGAcmvuAACDXi34wb8581.png

4.2.3 模型轉換Demo目錄介紹

模型轉換測試Demo由resnet50_model_convert和quant_dataset組成。resnet50_model_convert存放軟件腳本,quant_dataset存放量化模型所需的數據。如下圖所示:

wKgZPGf_aBGABufLAAB8s_QfbS4089.png

resnet50_model_convert文件夾存放以下內容,如下圖所示:

wKgZO2f_aBKAL8KIAADoTTMOXxI253.png

4.2.4 生成量化圖片列表

在docker環境切換到模型轉換工作目錄:

cd /test/resnet50_model_convert

如下圖所示:

wKgZPGf_aBKAMCEqAAB9-WP6FUA037.png

執行gen_list.py生成量化圖片列表:

python gen_list.py

命令行現象如下圖所示:

wKgZO2f_aBKAdgNqAACb7G1bFOU720.png

生成“量化圖片列表”如下文件夾所示:

wKgZPGf_aBKAaljeAADVBTk1w7c629.png

4.2.5 onnx模型轉換為rknn模型

rknn_convert.py腳本默認進行int8量化操作,腳本代碼清單如下所示:

import os
import urllib
import traceback
import time
import sys
import numpy as np
import cv2
from rknn.api import RKNN


ONNX_MODEL = '10class_ResNet50.onnx'
RKNN_MODEL = './10class_ResNet50.rknn'
DATASET = './pic_path.txt'

QUANTIZE_ON = True

if __name__ == '__main__':

	# Create RKNN object
	rknn = RKNN(verbose=True)

	if not os.path.exists(ONNX_MODEL):
		print('model not exist')
		exit(-1)

	# pre-process config
	print('--> Config model')
	rknn.config(reorder_channel='0 1 2',
			    mean_values=[[123.67, 116.28,103.53]],
			    std_values=[[58.395, 57.12, 57.375]],
			    optimization_level=3,
			    target_platform = 'rv1126',
			    output_optimize=1,
			    quantize_input_node=QUANTIZE_ON)
	print('done')

	# Load ONNX model
	print('--> Loading model')
	ret = rknn.load_onnx(model=ONNX_MODEL)
	if ret != 0:
		print('Load  failed!')
		exit(ret)
	print('done')

	# Build model
	print('--> Building model')
	ret = rknn.build(do_quantization=QUANTIZE_ON, dataset=DATASET)
	if ret != 0:
		print('Build resnet failed!')
		exit(ret)
	print('done')

	# Export RKNN model
	print('--> Export RKNN model')
	ret = rknn.export_rknn(RKNN_MODEL)
	if ret != 0:
		print('Export resnet failed!')
		exit(ret)
	print('done')

把onnx模型10class_ResNet50.onnx放到resnet50_model_convert目錄,并執行rknn_convert.py腳本進行模型轉換:

python rknn_convert.py

生成模型如下圖所示,此模型可以在rknn-toolkit環境和EASY EAI Nano環境運行:

wKgZO2f_aBOAWD5cAAJwvwioU4U976.png

4.2.6 運行rknn模型

用predict.py腳本在PC端的環境下可以運行rknn的模型,如下圖所示:

wKgZPGf_aBOADgbNAAC_ryi8Pu4924.png

predict.py腳本程序清單如下所示:

import os
import urllib
import traceback
import time
import sys
import numpy as np
import cv2
import random
from rknn.api import RKNN

RKNN_MODEL = '10class_ResNet50.rknn'
IMG_PATH = './test-1.jpg'


BOX_THRESH = 0.25
NMS_THRESH = 0.6


CLASSES = ("SUV", "bus", "family sedan", "fire engine", "heavy truck", "jeep", "minibus", "racing car", "taxi", "truck")


def show_outputs(output):

	print("softmax output:", output)

	max_confidence = np.max(output)
	index = np.where(output == max_confidence)
	print("max confidence:", max_confidence)
	print("max confidence index:", index[0][0])
	print("CLASSES predict: ", CLASSES[index[0][0]])

def softmax(x):
    return np.exp(x)/sum(np.exp(x))

if __name__ == '__main__':

	# Create RKNN object
	rknn = RKNN(verbose=True)

	print('--> Loading model')
	ret = rknn.load_rknn(RKNN_MODEL)
	if ret != 0:
		print('load rknn model failed')
		exit(ret)
	print('done')

	# init runtime environment
	print('--> Init runtime environment')
	ret = rknn.init_runtime()
	# ret = rknn.init_runtime('rv1126', device_id='1126')
	if ret != 0:
		print('Init runtime environment failed')
		exit(ret)
	print('done')

	# Set inputs
	img = cv2.imread(IMG_PATH)
	img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
	resize_img = cv2.resize(img,(224,224))

	# Inference
	print('--> Running model')
	outputs = rknn.inference(inputs=[resize_img])

	print("outputs[0]:", outputs[0])
	print("outputs[0].shape:", outputs[0].shape)
	show_outputs(softmax(np.array(outputs[0][0])))

	print('done')
	rknn.release()

執行結果如下圖所示:

wKgZO2f_aBOAGHBRAAFp1vx31Cw939.png

4.2.7 模型預編譯

由于rknn模型用NPU API在EASY EAI Nano加載的時候啟動速度會很慢,在評估完模型精度沒問題的情況下,建議進行模型預編譯。預編譯的時候需要通過EASY EAI Nano主板的環境,所以請務必接上adb口與ubuntu保證穩定連接。

板子端接線如下圖所示,撥碼開關需要是adb:

wKgZPGf_aBSAUOfMAEUKoK05hPI021.png

虛擬機要保證接上adb設備:

wKgZO2f_aBWAIi9BAAGxSQEPX9E084.png

由于在虛擬機里ubuntu環境與docker環境對adb設備資源是競爭關系,所以需要關掉ubuntu環境下的adb服務,且在docker里面通過apt-get安裝adb軟件包。以下指令在ubuntu環境與docker環境里各自執行:

wKgZO2f_aBaAavZzAACw9mOI3Xw382.png

在docker環境里執行adb devices,現象如下圖所示則設備連接成功:

wKgZPGf_aBaAbeqrAAG20MtbUhY490.png

運行precompile_rknn.py腳本把模型執行預編譯:

python precompile_rknn.py

執行效果如下圖所示,生成預編譯模型10class_ResNet50_pre.rknn:

wKgZO2f_aBaAb63dAAFaHeZ0Wp4993.png

至此預編譯部署完成,模型轉換步驟已全部完成。生成如下預編譯后的int8量化模型:

wKgZPGf_aBaAWSkHAADNGAAZwvA179.png

至此RKNN模型生成完畢,注意預編譯模型只能在板卡端執行。

5. ResNet50圖像分類部署

5.1 模型部署示例介紹

本小節展示ResNet50模型的在EASY EAI Nano的部署過程,該模型僅經過簡單訓練供示例使用,不保證模型精度。

5.2 開發環境準備

如果您初次閱讀此文檔,請閱讀《入門指南/開發環境準備/Easy-Eai編譯環境準備與更新》,并按照其相關的操作,進行編譯環境的部署

在PC端Ubuntu系統中執行run腳本,進入EASY-EAI編譯環境,具體如下所示。

cd ~/develop_environment
./run.sh
wKgZO2f_aBeAAhfLAACbrHAYX20145.png

5.3 源碼下載以及例程編譯

下載ResNet50 C Demo示例文件。

百度網盤鏈接: (https://pan.baidu.com/s/1obT-Ipdwzafqyn3-93OoeA 提取碼:6666)。

下載程序包移至ubuntu環境后,執行以下指令解壓:

tar -xvf resnet50_classification_C_demo.tar.bz2

下載解壓后如下圖所示:

wKgZPGf_aBeASm8RAAByK9fPP6Q865.png

在EASY-EAI編譯環境下,切換到例程目錄執行編譯操作:

cd /opt/rknn-toolkit/resnet50_classification_C_demo/
./build.sh

注:

* 由于依賴庫部署在板卡上,因此交叉編譯過程中必須保持adb連接。

wKgZO2f_aBeAA4bcAAGzc9hby-c956.png

5.4 在開發板執行ResNet50 圖像分類算法

在EASY-EAI編譯環境下,在例程目錄執行以下指令把可執行程序推送到開發板端:

cp resnet_classification_demo_release/ /mnt/userdata/ -rf

通過按鍵Ctrl+Shift+T創建一個新窗口,執行adb shell命令,進入板卡運行環境:

adb shell
wKgZPGf_aBeAPTmtAABR0C4N5zg106.png

進入板卡后,定位到例程上傳的位置,如下所示:

 cd /userdata/resnet_classification_demo_release/

運行例程命令如下所示:

./resnet_classification_demo

執行結果如下圖所示,算法執行時間約為35ms:

wKgZO2f_aBeAFOX7AAFNGeJ6r3c772.png

至此,ResNet50圖像分類例程已成功在板卡運行。

6. 資料下載

資料名稱 鏈接
算法教程完整源碼包 https://pan.baidu.com/s/1V-Ujqbv847XUsk08PlnICw
提取碼:6666
硬件外設庫源碼github https://github.com/EASY-EAI/EASY-EAI-Toolkit-C-SDK


審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開發板
    +關注

    關注

    25

    文章

    5650

    瀏覽量

    104105
  • rv1126
    +關注

    關注

    0

    文章

    107

    瀏覽量

    3499
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Qt程序部署到瑞星微RV1126開發板上,使用QCursor::pos()獲取鼠標為零是為什么?

    Qt程序部署到瑞星微RV1126開發板上,使用QCursor::pos()獲取鼠標為零是為什么?
    發表于 10-21 06:23

    【R329開發板評測】實機測試Resnet50

    在經過仿真測試拿到開發板后,參考官方的實機測試教程,對仿真測試模型進行了實機運行和測試,這里主要是對resnet50進行了實時運行。
    發表于 01-25 16:55 ?3次下載
    【R329<b class='flag-5'>開發板</b>評測】實機測試<b class='flag-5'>Resnet50</b>

    RV1126-AI開發手記(一)Resnet50性能評估

    應朋友的委托,希望我來幫忙評估一下RV1126RV1109)的AI性能。這兩款芯片是pin2pin的,RV1109的算力為1.2Tops,RV1126的算力為2.0Tops...
    發表于 01-25 19:41 ?25次下載
    <b class='flag-5'>RV1126</b>-AI<b class='flag-5'>開發</b>手記(一)<b class='flag-5'>Resnet50</b>性能評估

    RV1126開發板數據手冊

    本產品是基于瑞芯微 RV1126 媒體處理芯片開發的 IPC 開發板,分為核心和底板, 且 RV1126
    發表于 08-28 11:09 ?20次下載

    RV1126 實現人臉檢測方案

    基于RV1126開發板實現人臉檢測方案,充分體現了電子方面的實踐經驗和目標檢測技術。
    的頭像 發表于 04-14 09:25 ?229次閱讀
    <b class='flag-5'>RV1126</b> 實現人臉檢測方案

    基于RV1126開發板的人臉檢測算法開發

    RV1126開發人臉檢測算法組件
    的頭像 發表于 04-14 10:19 ?304次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發板</b>的人臉檢測算法<b class='flag-5'>開發</b>

    基于RV1126開發板的人員檢測算法開發

    RV1126開發人員檢測AI算法組件
    的頭像 發表于 04-14 13:56 ?295次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發板</b>的人員檢測算法<b class='flag-5'>開發</b>

    基于RV1126開發板網絡配置方法

    RV1126開發板網絡硬件資源有:以太網、WiFi,采用的網絡配置方案是:Netplan。 ? ? ? ?Netplan是一個用于配置Linux網絡的簡單工具。用戶只需要一個yaml格式的文件去
    的頭像 發表于 04-15 14:57 ?335次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發板</b>網絡配置方法

    基于RV1126開發板的按鍵測試方法與例程

    RV1126開發板的按鍵測試方法與例程詳細描述
    的頭像 發表于 04-15 17:03 ?330次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發板</b>的按鍵測試方法與例程

    基于RV1126開發板resnet50訓練部署教程

    本教程基于圖像分類算法ResNet50訓練部署到EASY-EAI-Nano(RV1126)進行說明
    的頭像 發表于 04-18 15:07 ?425次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發板</b>的<b class='flag-5'>resnet50</b><b class='flag-5'>訓練</b><b class='flag-5'>部署</b>教程

    RV1126 yolov8訓練部署教程

    本教程針對目標檢測算法yolov8的訓練部署到EASY-EAI-Nano(RV1126)進行說明,而數據標注方法可以參考我們往期的文章。
    的頭像 發表于 04-18 15:18 ?598次閱讀
    <b class='flag-5'>RV1126</b> yolov8<b class='flag-5'>訓練</b><b class='flag-5'>部署</b>教程

    基于RV1126開發板實現駕駛員行為檢測方案

    RV1126開發板上實現駕駛員行為檢測:通過圖像識別出這幾種行為:打電話、抽煙、疲勞駕駛。
    的頭像 發表于 04-18 17:47 ?354次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發板</b>實現駕駛員行為檢測方案

    基于RV1126開發板實現自學習圖像分類方案

    RV1126開發板上實現自學習:在識別前對物體圖片進行模型學習,訓練完成后通過算法分類得出圖像的模型ID。 方案設計邏輯流程圖,方案代碼分為分為兩個業務流程,主體代碼負責抓取、合成圖像,算法代碼負責
    的頭像 發表于 04-21 13:37 ?11次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發板</b>實現自學習圖像分類方案

    基于RV1126開發板實現人臉檢測方案

    RV1126開發板上實現人臉檢測:在圖像中找出人臉,以及每張人臉的landmarks位置。 方案設計邏輯流程圖,方案代碼分為分為兩個業務流程,主體代碼負責抓取、合成圖像, 算法代碼負責人臉檢測功能。
    的頭像 發表于 04-21 14:00 ?13次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發板</b>實現人臉檢測方案

    基于RV1126開發板實現人臉檢測方案

    RV1126開發板上實現人臉檢測:在圖像中找出人臉,以及每張人臉的landmarks位置。 方案設計邏輯流程圖,方案代碼分為分為兩個業務流程,主體代碼負責抓取、合成圖像, 算法代碼負責人臉檢測功能。
    的頭像 發表于 04-21 17:59 ?417次閱讀
    基于<b class='flag-5'>RV1126</b><b class='flag-5'>開發板</b>實現人臉檢測方案
    主站蜘蛛池模板: 二连浩特市| 特克斯县| 呈贡县| 阿坝| 张掖市| 子长县| 探索| 香港| 鄂伦春自治旗| 扶沟县| 承德市| 丁青县| 同心县| 安丘市| 定安县| 常山县| 响水县| 明溪县| 张北县| 正阳县| 紫云| 昌邑市| 田林县| 庄浪县| 望奎县| 盐城市| 郧西县| 遂宁市| 宜宾市| 尼玛县| 南京市| 大田县| 邵武市| 牡丹江市| 巢湖市| 庆元县| 石门县| 黄陵县| 名山县| 合水县| 锦州市|