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.

[参考译文] TDA4VH-Q1:TDA4VH:Ultralytics YOLOv3 14 类–PC 仿真输出具有无效 xywh、obj 和放大器;类分数均为零

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1589828/tda4vh-q1-tda4vh-ultralytics-yolov3-14-class-pc-emulation-output-has-invalid-xywh-obj-class-scores-are-all-zero

器件型号: TDA4VH-Q1
Thread 中讨论的其他器件: TDA4VH

尊敬的 TI 团队:

我正在尝试使用 TIDL 导入工具将自定义 Ultralytics YOLOv3(14 类)模型移植到 TDA4VH。 ONNX 模型可在 PC (PYTHON + ONNXRuntime) 上正确执行检测。 `、在 TIDL 导入和 PC 仿真之后、最终的 TIDL 输出包含无效的 Δ i x、y、w、h`值、并且所有 25,200 个锚点的客观和类分数都为零、因此不会出现检测。

我想确认是否缺少 YOLOv3 的 TIDL 导入流程中所需的任何步骤。

1、型号与出口

型号:YOLOv3、在自定义 14 类数据集中使用 Ultralytics 进行训练
导出:`best.onnx`(opset = 11)
输入尺寸:640×640

2. TIDL 导入配置

modelType      = 2          # onnx
inputNetFile   =“../../test/testvecs/models/public/onnx/best_simplified.onnx
outputNetFile   =“../../test/testvecs/config/tidl_models/ObjectDetectionYolov3_14class/yolo_ti_full_fmt1405.bin
outputParamsFile =“../../test/testvecs/config/tidl_models/ObjectDetectionYolov3_14class/yolo_ti_full_fmt1405_

numParamBits   = 8
numFeatureBits  = 8
分位数 Style = 2

inDataNorm     = 1
inMean       = 0 0 0  
无刻度       = 0.003921568627 0.003921568627 0.003921568627
inDataFormat   = 1

InWidth       = 640
InHeight      = 640
inNumChannels   = 3

postProcType   = 0

#校准
inData       =“../../test/testvecs/config/input_images_object_detection_yolov3_14_class.txt

debugTraceLevel  = 1

导入成功完成。

 

3. PC 仿真配置

inFileFormat = 0
postProcType = 2
numFrames   = 1

netBinFile  =“testvecs/config/tidl_models/ObjectDetectionYolov3_14class/Yolo_ti_full_fmt1405.bin"</s>“
ioConfigFile =“testvecs/config/tidl_models/ObjectDetectionYolov3_14class/Yolo_ti_full_fmt1405_1.bin"</s>“

inData     =“testvecs/config/object_detection_test_data_yolov3_14_class/img_0001.jpg"</s>“
outData =“testvecs/output/yolov3_single_detection_14_class.bin"</s>“     

debugTraceLevel = 1
writeTraceLevel = 1
writeOutput  = 2
postProcDataId = 0

单帧 PC 仿真输出如所示生成
`yolov3_single_detection_14_class.bin`(float32、size≈1.9MB→25200×19 张量)。

4、从 PC 仿真转储中观察

使用以下公式将整形为`μ H (25200、19)`μ H 后:

RAW = np.fromfile(bin_path、dtype=np.float32).re整 形 (25200、19)

我观察到:

列 0–3 (x、y、w、h)

不包含轻率值。

第 4 栏(客观)

所有锚定始终为 0.0


第 5–18 列(等级分数)

所有 14 个类始终为 0.0
没有锚点具有任何类激活

结论

即使 x/y/w/h 值完好无损、PC 仿真浮点输出也会丢失所有对象性和类信息。 因此、最终的 TIDL 输出无法解码为任何检测。

这种行为也可以在 INT8 目标转储中看到。

ONNX 模型(在 TIDL 导入之前)不存在此问题。

5.问题

1.使用 TIDL 导入工具转换 Ultralytics YOLOv3 模型是否需要执行其他步骤?

 我们是否需要使用 metaArchType 和 YOLO 元体系结构原型(锚,掩码,跨步等),即使在外部处理后处理时也是如此?

2、在`. SVG`中的最终张量`[1,1,1,1,1,1,125200,19]`是否真正达到了预期的 YOLO 输出?

  或者、这是否仍然是需要 TIDL 内部解码的中间功能?

3.当导入没有特定于 YOLO 的 META-ARCH 配置的 Ultralytics YOLOv3 ONNX 模型时,是否存在已知问题?

 

我已附上:

模型转换日志(“import_yolov3_14_class_with_post.log")“)
`Yolo_ti_full_fmt1405.bin`、`Yolo_ti_full_fmt1405_*.bin`μ s
`.svg`和`.layer_info.txt`
PC 仿真输出(“yolov3_single_detection_14_class.bin")“)

如果我在 TIDL 中缺少任何必需的特定于 YOLO 的配置、以便客观原因和类别分数正确传播、请告知我。

请告诉我是否需要我的信息

Model_Conversion_Output.zip 

PC_DRO.zip Emulation_Dump 

此致、
Rupali

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

    尊敬的 Rupali:

    使用任何检测模型时、我建议使用 metaArchType 和 prototxt。

    您可以通过查看 Netron 中的模型并查看这是否是预期的输出形状来检查模型的最终张量输出。 TIDL 将所有输出合并到单个.bin 文件中  

    我没有运行 YOLOv3 而没有特定于 YOLO 的 META-ARCH,但我看到了类似的不使用 META-ARCH 配置的其他 YOLO 模型。   

    此致、

    Christina

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

    尊敬的 Christina:

    感谢您的澄清。

    为避免遗漏任何内容,请确认哪些对象检测 YOLO 模型可以在不使用`metaArchType`的情况下运行?

    再次感谢您的支持。

    此致、
    Rupali

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

    对不起,我想说,我没有看到任何不使用 meta-arch 配置的类似 YOLO 模型。  但我将再次检查,看看是否可以找到一个不使用 metaArchType。

    此致、

    Christina

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

    刚刚检查过,正如我之前所推测的,没有任何没有 metaArch 类型的 YOLO 模型的实现示例。

    您可以在此处查看示例列表: github.com/.../model_configs.py