Toybrick

楼主: ameRk

rk3566 转换facenet失败

jefferyzhang

版主

积分
12851
发表于 2022-7-15 12:25:54 | 显示全部楼层
ameRk 发表于 2022-7-15 12:18
没开,因为之前就发现有问题,所以就只进行了模型转换处理

不开推理模式freeze的模型rknntoolkit1也是转不过的
回复

使用道具 举报

ameRk

注册会员

积分
91
 楼主| 发表于 2022-7-15 12:31:54 | 显示全部楼层
jefferyzhang 发表于 2022-7-15 12:25
不开推理模式freeze的模型rknntoolkit1也是转不过的

不好意思确认一下,你说的推理模式是指  rknn.build 之后的interface 操作,还是  某个配置项啊,如果是  指interface 的话。我这里确实都没有开,但是rknntoolkit1 确实是转换成功啦。build 是成功的,但是rknntoolkit2 就报第一栏的那种错误
回复

使用道具 举报

ameRk

注册会员

积分
91
 楼主| 发表于 2022-7-15 13:34:30 | 显示全部楼层
jefferyzhang 发表于 2022-7-15 12:25
不开推理模式freeze的模型rknntoolkit1也是转不过的

现在的对比情况,就是两套工具下的转换程序的流程是一致的,rknntoolkit1 没有报错并且有RKNN模型生成,rknntoolkit2 报错啦
回复

使用道具 举报

jefferyzhang

版主

积分
12851
发表于 2022-7-15 14:40:47 | 显示全部楼层
tensorflow的接口,pytorch也有类似接口,模型在训练模式和推理模式是不一样的
回复

使用道具 举报

ameRk

注册会员

积分
91
 楼主| 发表于 2022-7-15 14:47:58 | 显示全部楼层
jefferyzhang 发表于 2022-7-15 14:40
tensorflow的接口,pytorch也有类似接口,模型在训练模式和推理模式是不一样的 ...

哦。但是从我这里的试验结果来看,流程是一样的啊(所以tensorflow那一部分也是没有修改的),唯一不同的就是rknntoolkit1 与rknntoolkit2(还有就是参数不同,参数都是根据你们不同版本的文档修改调整的),所以我现在想确认的是  rknntoolkit2 与rknntoolkit1 的改动有这么大吗,从转换结果来看,rknntoolkit1 是支持该 op的,但rknntoolkit2 却不支持,但是我无法看到你们的内部调用情况,所以需要您帮忙分析一下,是不是由于rknntoolkit1 与rknntoolkit2 的不同导致的,如果是这样的话,我好想其他办法解决这个问题,如果是参数或者函数调用的话,那方便指导一下那些参数有可能导致这些情况不!
回复

使用道具 举报

jefferyzhang

版主

积分
12851
发表于 2022-7-15 15:03:00 | 显示全部楼层
ameRk 发表于 2022-7-15 14:47
哦。但是从我这里的试验结果来看,流程是一样的啊(所以tensorflow那一部分也是没有修改的),唯一不同的 ...

两个是不同架构的npu,toolkit也是新开发的。
问题我已经反馈上去。
回复

使用道具 举报

ameRk

注册会员

积分
91
 楼主| 发表于 2022-7-15 15:04:09 | 显示全部楼层
jefferyzhang 发表于 2022-7-15 15:03
两个是不同架构的npu,toolkit也是新开发的。
问题我已经反馈上去。

好的,谢谢啦
回复

使用道具 举报

jefferyzhang

版主

积分
12851
发表于 2022-7-19 17:40:35 | 显示全部楼层
本帖最后由 jefferyzhang 于 2022-7-20 09:43 编辑

请把模型和转换脚本发一下.还有你自己可以试试先转onnx再转rknn能不能转过
回复

使用道具 举报

ameRk

注册会员

积分
91
 楼主| 发表于 2022-9-1 10:36:30 | 显示全部楼层
jefferyzhang 发表于 2022-7-19 17:40
请把模型和转换脚本发一下.还有你自己可以试试先转onnx再转rknn能不能转过
...

rknn-toolkit2 的模型转换如下
import numpy as np

import re
import math
import random
import cv2

from rknn.api import RKNN



if __name__ == '__main__':

    INPUT_SIZE = 160
    rknn = RKNN(verbose=True)

    # Config for Model Input PreProcess
    #rknn.config(channel_mean_value='0 0 0 1', reorder_channel='0 1 2',target_platform=['rv1126'])
    rknn.config(mean_values=[127.5, 127.5, 127.5], std_values=[127.5, 127.5, 127.5])

    #rknn.config(channel_mean_value='0 0 0 1', reorder_channel='0 1 2')
    print('config done')

    # load tensorflow model
    print('--> Loading model')
    #out = 'InceptionResnetV1/Bottleneck/BatchNorm/batchnorm/add_1'
    #out = "InceptionResnetV1/Bottleneck/BatchNorm/cond_1/AssignMovingAvg_1/Switch"
    out = "InceptionResnetV1/Bottleneck/BatchNorm/Reshape_1"
    #out = "embeddings"
    rknn.load_tensorflow(tf_pb='20180402-114759/20180402-114759.pb',
                         #inputs=['input','phase_train'],
                         inputs=['input'],
                         outputs=[out],
                         input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3]])
                         #input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3], [1]])   
    print('done')

    # Build Model
    print('--> Building model')
    ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
    #ret = rknn.build(do_quantization=False)
    print('done')

    # Export RKNN Model
    rknn.export_rknn('./facenet_Reshape_1_two.rknn')

    rknn.release()

rknn-toolkit的换换如下
import numpy as np

import re
import math
import random
import cv2

from rknn.api import RKNN



if __name__ == '__main__':

    INPUT_SIZE = 160
    rknn = RKNN(verbose=True)

    # Config for Model Input PreProcess
    #rknn.config(channel_mean_value='0 0 0 1', reorder_channel='0 1 2',target_platform=['rv1126'])
    #rknn.config(mean_values=[127.5, 127.5, 127.5], std_values=[127.5, 127.5, 127.5])

    rknn.config(channel_mean_value='0 0 0 1', reorder_channel='0 1 2')
    print('config done')

    # load tensorflow model
    print('--> Loading model')
    #out = 'InceptionResnetV1/Bottleneck/BatchNorm/batchnorm/add_1'
    #out = "InceptionResnetV1/Bottleneck/BatchNorm/cond_1/AssignMovingAvg_1/Switch"
    out = "InceptionResnetV1/Bottleneck/BatchNorm/Reshape_1"
    #out = "embeddings"
    rknn.load_tensorflow(tf_pb='20180402-114759/20180402-114759.pb',
                         #inputs=['input','phase_train'],
                         inputs=['input'],
                         outputs=[out],
                         input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3]])
    print('done')

    # Build Model
    print('--> Building model')
    #ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
    rknn.build(do_quantization=False)
    print('done')

    # Export RKNN Model
    rknn.export_rknn('./facenet_Reshape_1_two.rknn')

    rknn.release()
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表