色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【風(fēng)火輪YY3568開發(fā)板免費(fèi)體驗(yàn)】第六章:在Solus上運(yùn)行自定義模型并遷移到Y(jié)Y3568對(duì)比測(cè)試

Red Linux ? 來(lái)源:Red Linux ? 作者:Red Linux ? 2023-08-27 00:55 ? 次閱讀

在第五章中,使用官方的原版歷程初步摸索了一下NPU相關(guān)的測(cè)試方法,本章就開始介紹如何使用自己的模型并遷移到Y(jié)Y3568上面。在這個(gè)過(guò)程中,我選擇的并不是自己訓(xùn)練模型,而是從 tensorflow 官網(wǎng)上下載預(yù)訓(xùn)練好的模型,進(jìn)行遷移測(cè)試。在這個(gè)過(guò)程中,碰到了一些問(wèn)題,主要集中在:

  1. 如何使用 rknn-toolkit2 對(duì) tensorflow 官網(wǎng)上面訓(xùn)練好的模型https://tfhub.dev/google/imagenet/mobilenet_v2_035_224/classification/5mageNetLabels.txt 進(jìn)行轉(zhuǎn)換
  2. rknn-toolkit2轉(zhuǎn)換后為什么和在原始的模型測(cè)試的不一致?

1. 使用 rknn-toolkit2 對(duì) tensorflow 官網(wǎng)上面訓(xùn)練好的模型進(jìn)行轉(zhuǎn)換

在這一部分中,主要解決的是第一個(gè)問(wèn)題,在這個(gè)過(guò)程中主要是解決 python 軟件包的依賴關(guān)系。過(guò)程如下:

因?yàn)槲?a href="http://m.1cnz.cn/soft/special/" target="_blank">下載的是壓縮包文件,解壓之后如下所示:

? tree imagenet_mobilenet_v2_035_224_classification_5
imagenet_mobilenet_v2_035_224_classification_5
├── saved_model.pb
└── variables
    ├── variables.data-00000-of-00001
    └── variables.index

2 directories, 3 files

可以看到是 pb 類型的文件,如何引用這個(gè)文件我使用的 tensorflow-hub ,這個(gè)過(guò)程還算順利,但是后續(xù)使用 rknn-toolkit2 對(duì)這個(gè)模型進(jìn)行轉(zhuǎn)換時(shí)就犯難了,因?yàn)樵谶@個(gè)過(guò)程需要使用到 pb 文件是數(shù)據(jù)類型的,而從 tensorflow 官網(wǎng)下載的是PDP-11 pure executable not stripped - version 5類型的,就需要對(duì)這個(gè)類型進(jìn)行轉(zhuǎn)換,這里就是重點(diǎn)了,我嘗試使用 Python3.8 發(fā)現(xiàn)一致無(wú)法轉(zhuǎn)換,提示錯(cuò)誤,主要原因是部分功能不支持,但是我可以用 Python3.10 對(duì)這個(gè) pb 文件進(jìn)行轉(zhuǎn)換為 rknn 需要的 pb 文件,接下去就是安裝 rknn 在 Python3.10 上的依賴了,因?yàn)槲野l(fā)現(xiàn)上游的 rknn-toolkit2 已經(jīng)支持 Python3.10 了不過(guò)是在 Ubuntu 上,我就嘗試在 Solus 上進(jìn)行安裝,通過(guò)將簡(jiǎn)單的依賴問(wèn)題解決后,卡在了這里報(bào)錯(cuò):

tf-estimator-nightly.png

但是文件 requirements_cp310-1.5.0.txt 明確寫的是這個(gè)版本的依賴,我去 pip 上查看這個(gè)軟件包,是這樣子的:

tf-estimator-pip.png

可以看到,明確寫的只支持到 Python3.7,最后我嘗試到上游查看這個(gè)軟件包的倉(cāng)庫(kù),發(fā)現(xiàn)最新的提交已經(jīng)支持到 Python3.10 了:

tf-estimator-github.png

然后,我就手動(dòng)修改這個(gè)包的 setup.py 文件,補(bǔ)丁如下:

diff --git a/tensorflow_estimator/tools/pip_package/setup.py b/tensorflow_estimator/tools/pip_package/setup.py
index 2568d6a..862cd6b 100644
--- a/tensorflow_estimator/tools/pip_package/setup.py
+++ b/tensorflow_estimator/tools/pip_package/setup.py
@@ -30,14 +30,14 @@ DOCLINES = __doc__.split('n')
 # This version string is semver compatible, but incompatible with pip.
 # For pip, we will remove all '-' characters from this string, and use the
 # result for pip.
-_VERSION = '2.8.0'
+_VERSION = '2.8.0.dev2021122109'
 
 REQUIRED_PACKAGES = [
     # We depend on TensorFlow's declared pip dependencies.
     # Add a new dep there if one is needed.
 ]
 
-project_name = 'tensorflow_estimator'
+project_name = 'tf-estimator-nightly'
 if '--project_name' in sys.argv:
   project_name_idx = sys.argv.index('--project_name')
   project_name = sys.argv[project_name_idx + 1]

最重要的一個(gè)步驟是編譯,這里就不能使用setup.py sdist這樣的,需要參看倉(cāng)庫(kù)的 README,根據(jù)描述打包軟件包,具體指令是:

bazel build //tensorflow_estimator/tools/pip_package:build_pip_package
bazel-bin/tensorflow_estimator/tools/pip_package/build_pip_package /tmp/estimator_pip

會(huì)在 /tmp 目錄下打出 wheel 包,進(jìn)行安裝就可以了。安裝好所有依賴的軟件包后,使用 Python3.10 安裝 rknn_toolkit2-1.5.0+1fa95b5c-cp310-cp310-linux_x86_64.whl 就可以了。

? python3.10 -m pip install dist/tensorflow_estimator-2.8.0-py3-none-any.whl
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Processing ./dist/tensorflow_estimator-2.8.0-py3-none-any.whl
Installing collected packages: tensorflow-estimator
Successfully installed tensorflow-estimator-2.8.0

接著就可以愉快地進(jìn)行 pb 格式轉(zhuǎn)換了,我使用的代碼如下:

#!/usr/bin/python3.10
LABEL_PATH='./ImageNetLabels.txt'
MODEL_PATH='./imagenet_mobilenet_v2_035_224_classification_5'
CHECK_SRC='./goldfish_299x299.jpg'

import tensorflow as tf
import tensorflow_hub as hub
import numpy as np
import sys
from tensorflow.python.framework import convert_to_constants as _convert_to_constants

def h5_to_pb(h5_save_path):
    model = tf.keras.models.load_model(h5_save_path, compile=False)
    model.summary()
    full_model = tf.function(lambda Input: model(Input))
    full_model = full_model.get_concrete_function(tf.TensorSpec(model.inputs[0].shape, model.inputs[0].dtype))

    # Get frozen ConcreteFunction
    frozen_func = _convert_to_constants.convert_variables_to_constants_v2(full_model)
    frozen_func.graph.as_graph_def()

    layers = [op.name for op in frozen_func.graph.get_operations()]
    print("-" * 50)
    print("Frozen model layers: ")
    for layer in layers:
        print(layer)

    print("-" * 50)
    print("Frozen model inputs: ")
    print(frozen_func.inputs)
    print("Frozen model outputs: ")
    print(frozen_func.outputs)

    # Save frozen graph from frozen ConcreteFunction to hard drive
    tf.io.write_graph(graph_or_graph_def=frozen_func.graph,
                      logdir="./frozen_models2",
                      name="model.pb",
                      as_text=False)
    print("save mode with write_graph success")

def load_label_file(path):
    f = open(path, 'r')
    txt = []
    for line in f.readlines():
        curline=line.strip('n')
        txt.append(curline)
    #print(txt)
    return txt

label_list = load_label_file(LABEL_PATH)

def load_and_format_img(path):
    image = tf.io.read_file(path)
    image = tf.image.decode_jpeg(image, channels=3)
    image = tf.image.resize(image, [224, 224])
    image /= 255.0
    image_list = np.array(list(image))
    image_list = image_list.reshape(1, 224, 224, 3)
    return image_list

model_obj = hub.load(MODEL_PATH)
model = tf.keras.Sequential([hub.KerasLayer(model_obj)])
model.build([None, 224, 224, 3])

if len(sys.argv) > 1:
    CHECK_SRC = sys.argv[1]

image4check = load_and_format_img(CHECK_SRC)
#print(image4check)
tf.saved_model.save(model, "imgnet.tf")
model.save("imgnet3.tf")
ans=model.predict(image4check, verbose=2)
print("--------------------------------begin--")
print(np.argmax(ans))
print(label_list[np.argmax(ans)])
print("--------------------------------end--")
h5_to_pb("imgnet3.tf")

可以看到,我在這里將從網(wǎng)上下載的模型 imagenet_mobilenet_v2_035_224_classification_5 轉(zhuǎn)換為了 ./frozen_models2/model.pb 文件,測(cè)試結(jié)果如下所示:

省略 ...
--------------------------------begin--
2
goldfish
--------------------------------end--
省略 ...

至此, rknn-toolkit2 可以使用的 tensorflow 的 pb 文件已經(jīng)有了,下一步是遷移到 YY3568 上進(jìn)行測(cè)試了。我參考的是文件 rknn-toolkit2/examples/tensorflow/inception_v3_qat/test.py。進(jìn)行修改后,最終內(nèi)容如下:

#!/usr/bin/python3.10

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

#PB_FILE = './imgnet.tf/saved_model.pb'
PB_FILE = './frozen_models2/model.pb'

RKNN_MODEL_PATH = './red_imagenet_mobilenet_v2_035_224_classification_5.rknn'
INPUTS = ['Input']
OUTPUTS = ['Identity']
IMG_PATH = './goldfish_224x224.jpg'
#IMG_PATH = './German-Shepherd_224x224.jpg'
#IMG_PATH = '/var/lib/nfs/yy3568/red_own_model/cat_224x224.jpg'
INPUT_SIZE = 224


def show_outputs(outputs):
    output = outputs[0][0]
    output_sorted = sorted(output, reverse=True)
    top5_str = 'red imagenetn-----TOP 5-----n'
    for i in range(5):
        value = output_sorted[i]
        index = np.where(output == value)
        for j in range(len(index)):
            if (i + j) >= 5:
                break
            if value > 0:
                topi = '{}: {}n'.format(index[j], value)
            else:
                topi = '-1: 0.0n'
            top5_str += topi
    print(top5_str)


def readable_speed(speed):
    speed_bytes = float(speed)
    speed_kbytes = speed_bytes / 1024
    if speed_kbytes > 1024:
        speed_mbytes = speed_kbytes / 1024
        if speed_mbytes > 1024:
            speed_gbytes = speed_mbytes / 1024
            return "{:.2f} GB/s".format(speed_gbytes)
        else:
            return "{:.2f} MB/s".format(speed_mbytes)
    else:
        return "{:.2f} KB/s".format(speed_kbytes)


def show_progress(blocknum, blocksize, totalsize):
    speed = (blocknum * blocksize) / (time.time() - start_time)
    speed_str = " Speed: {}".format(readable_speed(speed))
    recv_size = blocknum * blocksize

    f = sys.stdout
    progress = (recv_size / totalsize)
    progress_str = "{:.2f}%".format(progress * 100)
    n = round(progress * 50)
    s = ('#' * n).ljust(50, '-')
    f.write(progress_str.ljust(8, ' ') + '[' + s + ']' + speed_str)
    f.flush()
    f.write('rn')


if __name__ == '__main__':

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

    # If inception_v3_quant_frozen.pb does not exist, download it.
    # Download address:
    # https://storage.googleapis.com/download.tensorflow.org/models/tflite_11_05_08/inception_v3_quant.tgz
    if not os.path.exists(PB_FILE):
        print('Oh no exist file ', PB_FILE)
        exit

    # Pre-process config
    print('-- > Config model')
    # 這里很重要,如果照抄  inception_v3_quant 的均值和標(biāo)準(zhǔn)值會(huì)導(dǎo)致分類有很大誤差!!!
    rknn.config(mean_values=[0, 0, 0], std_values=[255, 255, 255], target_platform='rk3568')
    print('done')

    # Load model
    print('-- > Loading model')
    ret = rknn.load_tensorflow(tf_pb=PB_FILE,
                               inputs=INPUTS,
                               outputs=OUTPUTS,
                               input_size_list=[[1, INPUT_SIZE, INPUT_SIZE, 3]])
    if ret != 0:
        print('Load model failed!')
        exit(ret)
    print('done')

    # Build model
    print('-- > Building model')
    ret = rknn.build(do_quantization=True, dataset='./red_quantization.txt')
    if ret != 0:
        print('Build model failed!')
        exit(ret)
    print('done')

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

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

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

    # Inference
    print('-- > Running model')
    outputs = rknn.inference(inputs=[img])
    np.save('./tensorflow_inception_v3_qat_0.npy', outputs[0])
    x = outputs[0]
    output = np.exp(x)/np.sum(np.exp(x))
    outputs = [output]
    show_outputs(outputs)
    print('done')

    rknn.release()

使用上述腳本進(jìn)行測(cè)試,同樣是 goldfish 的圖片,結(jié)果如下:

省略 ...
red imagenet
-----TOP 5-----
[2]: 0.9564507007598877
[122]: 0.007486562244594097
[121]: 0.005268004257231951
[964]: 0.0018354274798184633
[119]: 0.0017108423635363579

done

可以看到也準(zhǔn)確地識(shí)別出了 goldfish 的編號(hào) 2。

從圖中可以看到仿真模擬結(jié)果顯示的 Top5 內(nèi)容,后續(xù)可以和在YY3568上實(shí)際運(yùn)行的結(jié)果進(jìn)行對(duì)比。

2. rknn-toolkit2轉(zhuǎn)換后為什么和在原始的模型測(cè)試的不一致?

針對(duì) rknn-toolkit2轉(zhuǎn)換后為什么和在原始的模型測(cè)試的不一致?的問(wèn)題,在上述代碼中,我已經(jīng)添加了注釋,關(guān)鍵的處理在:rknn.config(mean_values=[0, 0, 0], std_values=[255, 255, 255]) 這里,其中 meas_value 表示對(duì)應(yīng)的均值, std_values 表示對(duì)應(yīng)的標(biāo)準(zhǔn)值。看下文檔的描述會(huì)更清晰:

rknn2-toolkit-config.png

開始我照抄例程的這兩個(gè)參數(shù)導(dǎo)致 PC 原始模型的結(jié)果和 rknn-toolkit2 轉(zhuǎn)換之后的結(jié)果有很大誤差。這里解決了之后就是簡(jiǎn)單在 YY3568 上使用 NPU 實(shí)際驗(yàn)證了。因?yàn)榈侥壳拔恢茫覀円呀?jīng)有了 xxxx.rknn 的模型文件,也有需要分類的圖片,缺少一個(gè)在 YY3568 上運(yùn)行的可執(zhí)行程序,我使用的可執(zhí)行程序是工程 external/rknpu2/examples/rknn_common_test。編譯出來(lái)后,使用 nfs 掛載,在 YY3568 上測(cè)試,測(cè)試結(jié)果如下:

[root@RK356X:/media/red_nfs/yy3568/red_own_model/rknn_common_test_Linux]# ./rknn
_common_test ../red_imagenet_mobilenet_v2_035_224_classification_5_right.rknn ..
/goldfish_224x224.jpg
rknn_api/rknnrt version: 1.3.0 (9b36d4d74@2022-05-04T20:17:01), driver version: 0.7.2
model input num: 1, output num: 1
input tensors:
  index=0, name=Input:0, n_dims=4, dims=[1, 224, 224, 3], n_elems=150528, size=150528, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922
output tensors:
  index=0, name=Identity:0, n_dims=2, dims=[1, 1001, 0, 0], n_elems=1001, size=1001, fmt=UNDEFINED, type=INT8, qnt_type=AFFINE, zp=-66, scale=0.070292
custom string:
Begin perf ...
   0: Elapse Time = 3.36ms, FPS = 297.53
---- Top5 ----
11.738696 - 2
7.029160 - 122
6.958868 - 121
5.693619 - 119
5.553036 - 964

可以看到也準(zhǔn)確識(shí)別出來(lái)了類型編號(hào)為2。支持完成了自定義模型的測(cè)試以及遷移。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11313

    瀏覽量

    209741
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5068

    瀏覽量

    97621
  • NPU
    NPU
    +關(guān)注

    關(guān)注

    2

    文章

    286

    瀏覽量

    18647
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    329

    瀏覽量

    60537
  • RK3568
    +關(guān)注

    關(guān)注

    4

    文章

    516

    瀏覽量

    5086
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用YY3568開發(fā)板部署AI能力

    YY3568開發(fā)板是 「風(fēng)火輪科技」 基于Rockchip RK3568 芯片平臺(tái)設(shè)計(jì)的開發(fā)板,四核 64Cortex-A55 核,主頻最高
    的頭像 發(fā)表于 11-28 10:59 ?2064次閱讀
    使用<b class='flag-5'>YY3568</b><b class='flag-5'>開發(fā)板</b>部署AI能力

    YY3568適配OpenHarmony

    YY3568開發(fā)板簡(jiǎn)介 YY3568開發(fā)板 YY3568開發(fā)板是 「
    的頭像 發(fā)表于 04-07 15:58 ?2495次閱讀

    風(fēng)火輪YY3568開發(fā)板免費(fèi)體驗(yàn)】第一開發(fā)環(huán)境搭建,系統(tǒng)替換為原生Linux

    記錄編譯sdk替換YY3568出廠安卓系統(tǒng)的筆記。
    的頭像 發(fā)表于 08-09 18:11 ?1761次閱讀
    【<b class='flag-5'>風(fēng)火輪</b><b class='flag-5'>YY3568</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>免費(fèi)</b>體驗(yàn)】第一<b class='flag-5'>章</b>:<b class='flag-5'>開發(fā)</b>環(huán)境搭建,系統(tǒng)替換為原生Linux

    風(fēng)火輪YY3568開發(fā)板免費(fèi)體驗(yàn)】第五 Solus 運(yùn)行 npu 例程搭建 nfs 環(huán)境實(shí)現(xiàn)在 YY3568 實(shí)際運(yùn)行 npu 例

    YY3568 NPU 相關(guān)的環(huán)境搭建以及示例測(cè)試
    的頭像 發(fā)表于 08-19 02:41 ?1970次閱讀
    【<b class='flag-5'>風(fēng)火輪</b><b class='flag-5'>YY3568</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>免費(fèi)</b>體驗(yàn)】第五<b class='flag-5'>章</b>:<b class='flag-5'>在</b> <b class='flag-5'>Solus</b> <b class='flag-5'>上</b><b class='flag-5'>運(yùn)行</b> npu 例程<b class='flag-5'>并</b>搭建 nfs 環(huán)境實(shí)現(xiàn)在 <b class='flag-5'>YY3568</b> <b class='flag-5'>上</b>實(shí)際<b class='flag-5'>運(yùn)行</b> npu 例

    【新品體驗(yàn)】風(fēng)火輪YY3568開發(fā)板免費(fèi)體驗(yàn)

    YY3568主板基于 Rockchip RK3568 芯片平臺(tái),四核 64位 Cortex-A55 核,主頻最高達(dá) 2GHz,集成雙核心架構(gòu)GPU以及高效能NPU,芯片性能優(yōu)異。開發(fā)板功能接口豐富
    發(fā)表于 06-25 14:35

    風(fēng)火輪YY3568開發(fā)板免費(fèi)體驗(yàn)】開箱篇 -----最好的RK3568開發(fā)板賞析

    風(fēng)火輪YY3568開發(fā)板采用RK3568芯片設(shè)計(jì),RK3568明星芯片是一款瑞芯微電子定位中高端的通用型SoC。該芯片采用了先進(jìn)的22nm工
    發(fā)表于 08-07 10:00

    風(fēng)火輪YY3568開發(fā)板免費(fèi)體驗(yàn)】使用之二:系統(tǒng)測(cè)試安卓

    開發(fā)板,如下圖所示: 按住設(shè)備的 RECOVERY (恢復(fù))鍵保持接上電源 大約兩三秒鐘后,松開 RECOVERY 鍵 UART DEBUG測(cè)試
    發(fā)表于 08-09 21:01

    風(fēng)火輪YY3568開發(fā)板免費(fèi)體驗(yàn)】01.開箱、燒寫系統(tǒng)

    吧。 首先就是我最喜歡的開發(fā)板啦,YY3568,板載2GB RAM和16GB EMMC,真的太棒了,里面核心已經(jīng)底板上面安裝的了,還有WIFI模塊和天線。 接下來(lái)就是送的7寸電容式
    發(fā)表于 08-10 19:35

    風(fēng)火輪YY3568開發(fā)板免費(fèi)體驗(yàn)】第五 Solus 運(yùn)行 npu 例程搭建 nfs 環(huán)境實(shí)現(xiàn)在 YY3568 實(shí)際運(yùn)行 npu 例程

    結(jié)果顯示的 Top5 內(nèi)容,后續(xù)可以和在YY3568實(shí)際運(yùn)行的結(jié)果進(jìn)行對(duì)比。 2. Solus
    發(fā)表于 09-11 15:44

    風(fēng)火輪YY3568開發(fā)板免費(fèi)體驗(yàn)】第六章Solus運(yùn)行自定義模型遷移到YY3568對(duì)比測(cè)試

    第五中,使用官方的原版歷程初步摸索了一下NPU相關(guān)的測(cè)試方法,本章就開始介紹如何使用自己的模型遷移
    發(fā)表于 09-11 15:47

    風(fēng)火輪YY3568開發(fā)板免費(fèi)體驗(yàn)】+ YY3568安裝運(yùn)行Unity的自制游戲教程范例

    ,并成功自己的開發(fā)筆記本,以及手機(jī)(Android-12)運(yùn)行,因此想測(cè)試一下能否
    發(fā)表于 11-14 11:44

    風(fēng)火輪YY3568開發(fā)板免費(fèi)體驗(yàn)】+ YY3568安裝運(yùn)行Home-Assistant服務(wù)端

    電腦使用putty軟件,通過(guò)ssh方式登錄到YY3568。 2.1.1. 編譯安裝最新版Python-3.12 由于YY3568采用的是Debian-10系
    發(fā)表于 11-14 11:49

    風(fēng)火輪科技YY3568開發(fā)板新品上市

    ? 風(fēng)火輪近來(lái)又推出一款新的嵌入式主板YY3568 ,它是一款基于瑞芯微RK3568 4核處理器的ARM主板,性價(jià)比極高;現(xiàn)在瑞芯微的旗艦款是rk3588主打性能,這個(gè)rk3568是主
    的頭像 發(fā)表于 04-27 14:50 ?1477次閱讀
    <b class='flag-5'>風(fēng)火輪</b>科技<b class='flag-5'>YY3568</b><b class='flag-5'>開發(fā)板</b>新品上市

    風(fēng)火輪科技又發(fā)新品啦--YY3568開發(fā)板

    風(fēng)火輪近來(lái)又推出一款新的嵌入式主板YY3568,它是一款基于瑞芯微RK3568 4核處理器的ARM主板,性價(jià)比極高;現(xiàn)在瑞芯微的旗艦款是rk3588主打性能,這個(gè)rk3568是主打性價(jià)
    的頭像 發(fā)表于 05-05 16:41 ?906次閱讀
    <b class='flag-5'>風(fēng)火輪</b>科技又發(fā)新品啦--<b class='flag-5'>YY3568</b><b class='flag-5'>開發(fā)板</b>

    RK3568 MIPI CSI攝像頭GC8034適配工作流程

    首先介紹一下硬件。主板為風(fēng)火輪科技的YY3568開發(fā)板,主控RK3568。此開發(fā)板的相關(guān)介紹可以參考
    的頭像 發(fā)表于 07-04 09:27 ?5913次閱讀
    RK<b class='flag-5'>3568</b> MIPI CSI攝像頭GC8034適配工作流程
    主站蜘蛛池模板: 热99re久久精品国产首页| 久 久 亚洲 少 妇 无 码| 国产欧美一区二区精品性色tv | 国产 亚洲 另类 欧美 在线 | 无码国产欧美日韩精品| 成人精品综合免费视频| 女仆乖H调教跪趴| 99精品影院| 欧美一第一页草草影院| videos gratis欧美另类| 祺鑫WRITEAS流出来了| 大屁股妇女流出白浆| 日本高清色片| 电影日本妻子| 亚洲 欧美 国产 视频二区| 国产亚洲精品字幕在线观看| 亚洲国产精品天堂在线播放| 久久爱狠狠综合网| 1000视频在线播放| 欧美高清视频www夜色资源网| YELLOW视频在线观看大全| 日本枯瘦娇小| 国产精品永久免费视频观看| 亚洲精品一区二区在线看片 | 欧美乱码卡一卡二卡四卡免费 | 最新黄yyid| 欧美精品99久久久啪啪| 芭乐视频网页版在线观看| 色即是空之甜性涩爱| 国产亚洲美女精品久久久2020 | 国产成人精品免费视频大| 午夜福利免费体检区| 久久成人免费观看草草影院| 97国产视频| 午夜dj影院视频观看| 久久精品午夜一区二区福利| jizz日本女人| 亚洲阿v天堂在线2017| 玖玖热视频一区二区人妻| 成人免费在线视频| 亚洲人成网站在线播放|