RK3399学习笔记 1.0.3---python环境 Firefly Core-3399pro-jd4 Win10上RKNN工具安装

RK3399学习笔记 1.0.3---python环境 Firefly Core-3399pro-jd4 Win10上RKNN工具安装

  • 读取模型各层


1,最好在Conda下新建一个虚拟环境进行安装。
Anaconda 官网下载地址:https://www.anaconda.com/download/
配置conda环境变量:

控制面板\系统和安全\系统\高级系统设置\环境变量\用户变量\PATH 
中添加 **anaconda的安装目录的Scripts文件夹**, 
比如我的路径是D:\rjaz\anaconda\az\Scripts, 看个人安装路径不同需要自己调整

2,配置conda源
https://www.cnblogs.com/tianbushengfuziwanguruchangye/p/15667415.html
激活conda
https://blog.csdn.net/hejp_123/article/details/92151293

3,配置基础Python环境为Python3.6

在虚拟环境下使用以下命令新建一个RKNN环境,如下:

conda create --name=rkmd python=3.6.8

4,执行以下命令进入虚拟环境:

conda activate rkmd

进入虚拟环境后,再执行以下命令安装深度学习框架,如Tensorflow,Pytorch,Keras等。

pip install tensorflow==1.14.0
pip install torch==1.9.0+cpu torchvision==0.10.0+cpu -f https://download.pytorch.org/whl/torch_stable.html --user
pip install mxnet==1.5.0
pip install opencv-python
pip install gluoncv
pip install lmdb==0.95

下载rknn安装包rknn_toolkit-1.6.0-cp36-cp36m-win_amd64.whl,cd 转到安装包目录位置下,执行以下命令进行安装。

pip install rknn_toolkit-1.6.0-cp36-cp36m-win_amd64.whl

4,检测rknn是否安装成功,输入以下命令:

python
from rknn.api import RKNN

若无报错则安装RKNN成功

5,案例使用,模型转换:

使用的模型出自以下:https://github.com/bubbliiiing/mobilenet-ssd-keras/releases/download/v1.0/mobilenet_ssd_weights.h5 权重进一步训练生成的模型。训练环境为tf1.13+keras2.1.5

注意,在保存权重时需要将网络与权重参数一起保存,在保存函数中将save_weights_only设置为False即可,如下所示。

后面首先需要对于Keras训练出的H5权重进行转换生成pb文件,代码如下:

from nets.ssd_training import MultiboxLoss, get_lr_scheduler
from keras.models import load_model
import tensorflow as tf
import os
from keras import backend as K
from tensorflow.python.framework import graph_util, graph_io
from tensorflow.python.platform import gfile

#h5topb

def h5_to_pb(h5_weight_path, output_dir, out_prefix="output_", log_tensorboard=True):
    if not os.path.exists(output_dir):
        os.mkdir(output_dir)
    h5_model = load_model(h5_weight_path,custom_objects={'compute_loss':MultiboxLoss(num_classes=9, neg_pos_ratio=3.0).compute_loss})
    out_nodes = []
    for i in range(len(h5_model.outputs)):
        out_nodes.append(out_prefix + str(i + 1))
        tf.identity(h5_model.output[i], out_prefix + str(i + 1))

    model_name = os.path.splitext(os.path.split(h5_weight_path)[-1])[0] + '.pb'

    sess = K.get_session()
    init_graph = sess.graph.as_graph_def()
    main_graph = graph_util.convert_variables_to_constants(sess, init_graph, out_nodes)
    graph_io.write_graph(main_graph, output_dir, name=model_name, as_text=False)

读取模型各层

def read_pb(GRAPH_PB_PATH):
    with tf.Session() as sess:
        print("load graph!!!")
        with gfile.FastGFile(GRAPH_PB_PATH, 'rb') as f:
            graph_def = tf.GraphDef()
            graph_def.ParseFromString(f.read())
            tf.import_graph_def(graph_def, name='')
            for i, n in enumerate(graph_def.node):
                print("Name of the node - %s" % n.name)


h5_to_pb(h5_weight_path='./testrknn.h5', output_dir='./')
read_pb('./testrknn.pb')

在终端中将打印生成的pb文件模型的各个节点的名称,部分如下所示,非常重要,在模型转换时需要用到。

之后进入rknn的虚拟环境,输入以下指令进入可视化转换界面,如下所示::

python -m rknn.bin.visualization

查看模型结构:https://netron.app/


本文只记录,避免以后复现找不到资料。

你可能感兴趣的:(rk3399,环境,rknn环境搭建,python,学习,深度学习)