This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MBIST 上的 Caffe-Jacinto LeNet 不能与 TIDL 配合使用

Guru**** 2927160 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/663395/caffe-jacinto-lenet-on-mnist-not-working-with-tidl

尊敬的 TI 团队:

我正在尝试使用 TIDL 模型导入工具将通过 Caffe-Jacinto v0.16接受过培训的 LeNet 转换为。

培训:

-我从  Ubuntu 16.04 (x64)上的 GitHub 上提取 Caffe-Jacinto v0.16

-我修改了 Makefile.config,以便使用 cpu_only  并使用 Atlas 而不是 BLAS

然后 我用"make all"构建了 Caffe-Jacinto

之后  

/data/mnist/get_mnist.sh
/examples/mnist/create_mnist.sh
/examples/mnist/train_lenet.sh 

以训练网络。

我的最终模型(经过10000次迭代后)的测试集精度为99.2%。

以下是用于培训的文件:

e2e.ti.com/.../LeNet.7z

我也没有尝试过  

transform_param{
scale:0.00390625
} 

 

转换:


我使用了 TIDL.00.08.00.00和 TIDL.01.00.00.00模型导入工具、将经过训练的 Caffe-Jacinto 模型转换为 TIDL 模型。 这些是用于转换的文件:

e2e.ti.com/.../LeNetConverting.7z

导入工具时的示例  

tidl_model_import.out.exe ..\..\test\testvecs\config\import\tidl_import_mnist_caffe_jacinto.txt 

我得到网络的奇怪输出。 从导入文件中可以看到、我正在使用 MBIST 测试数据、我正在对10个样本运行该工具。

我得到的输出为:e2e.ti.com/.../0871.output.txt

网络始终提供相同的最大指数(随机为0、3和6)。 您还可以从输出文件中注意到、该工具无法识别池图层(大小:2、跨度:2)、这是否是一个问题?

我在这里出了什么问题? 当我从 https://github.com/tidsp/caffe-jacinto-models 转换经过培训的 cifar-10 时、一切都按预期工作(它对测试数据进行了良好的分类)、但它与 LeNet MBIST 不同。

此致

满载桩模块

RT-RK

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    满载桩、

    TIDL 中的 TIDL_InnerProductLayer 期望输入数据平展(N=1和 H=1)。 请在部署原型设计(无需重新训练)的第一个内部产品层(FC 层)之前添加平展层(请参阅以下内容)、然后再次尝试导入。

    第{
    名称:"flatten"
    类型:"平展"
    底部:"conv1b"
    顶部:"平展"
    flatten_param{
    轴:1.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    喜欢这个吗?

    (笑声)
    第{
    名称:"Pool2"
    类型:"池化"
    底部:"conv2"
    顶部:"Pool2"

    池:最大
    kernel_size:2.
    跨度:2.


    第{
    名称:"flatten"
    类型:"平展"
    底部:"Pool2"
    顶部:"平展"
    flatten_param{
    轴:1.


    第{
    名称:"IP1"
    类型:"InnerProduct"
    底部:"平展"
    顶部:"IP1"
    参数{
    LR_mult:1.

    参数{
    LR_mult:2.

    inner_product_param{
    num_output:500
    weight_ciller{
    类型:"Xavier"

    BIAS_Filler{
    类型:"常量"



    (笑声)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、你是对的。

    谢谢、此致

    Kumar.D

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我尝试了平展层、但它仍然无法按预期工作。 您能否检查我的 lenet_solver.txt 和 lenet_train_test.txt 文件是否正常、或者问题是否出在其他地方? 您能否使用提供的.Caffemodel 和.prototxt 文件复制相同的输出? 在培训阶段、是否可以在数据层中使用 transform_param?

    提前感谢
    满载桩模块
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在培训中使用变换应该是可以的。 我希望您已经使用部署原型来验证咖啡因干扰。 咖啡因推理输入和 TIDL 推理输入应匹配。

    要进行调试,您可能需要咖啡因中的转储图层特征并与 TIDL 导入迹线匹配。

    TDIL 跟踪是定点的、可以转换为浮点(使用导入日志中打印的 OutQ)

    由于量化、结果将不完全匹配、但将相似。
    请确保输入匹配、并共享其不匹配的层。

    (OutQ/256)应用于分离 TIDL 迹线以获得浮点值。
    谢谢、此致
    Kumar.D
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请检查导入期间使用的输入格式

    sampleInData ="..\..\test\testvecs\input\t10K-images.idx3-ubyte"//这应是将输入传递到网络第一层的二进制样本数据。 (基本上是尺寸为28x28字节的输入传感器)

    Rgerads、

    Kumar.D
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    输入格式良好。 它是原始28x28字节。
    现在我更改了 NET,我在 jacintonet 上培训了 MBIST 数据集,以确保它可以使用 TIDL 转换工具(它对数字进行了很好的分类)。
    然后、我更改了 tidl usecase 以支持灰度输入(单通道)。 它如下所示:
    NullSrc -> TIDLProcess (EVE1)->空
    我删除了 TIDLPreAlgProc 插件、因为我的输入图像中只有1个通道、因此不需要 TIDLPreProc (至少我认为是这样)、但我无法获得与 TIDL 转换工具类似的输出(它始终提供相同的输出类)。
    这是否与当前版本的 TIDL 有关? 因为我尝试过的每个具有3个通道(RGB)和 TIDLPreProc 的网络都运行良好、但这一个具有一个彩色通道的网络无法正常工作。
    您能告诉我 TIDLProcess 期望的格式是什么吗? 从 NullSrc 链接中,AlgPlugin TIDL 接收一个大小为28*28的通道 RAW08数据,并且输出错误。 我是否需要以某种方式对数据进行预处理、即使这些数据已经采用网络所期望的格式?

    为便于记录、我使用的是 processor_sdk_vision_03.01.00.00

    此致、

    满载桩模块
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请参阅 TIDL 独立测试台代码 ti_tb.c、为 TIDL 过程准备输入。

    请根据此测试台代码更改 VISION SDK 用例中的空源。

    谢谢、此致

    Kumar.D

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、这个问题得到了解决。

    对于具有相同问题的其他器件、TAlgIDL 插件需要每个通道的输入格式、如下图所示:

    #define TIDL_MAX_PAD_SIZE (4)
    进行了比较

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    HI Mladen StPAR、
    感谢您在此处更新此信息。 我们将在用户指南中添加此详细信息。

    谢谢、此致、
    Kumar.D