Corrupted size vs. prev_size YOLOv3 problem

yolov3模型使用教程转换遇到问题:


出错提示:
corrupted size vs. prev_size

使用过./INSTALL了,同时yoloface(即0)可以使用,可以正常显示图片感觉有可能是模型问题?

使用了官方的教程https://docs.khadas.com/zh-cn/vim3/HowToTransformYolo.html

BTW:文件修改部分最后修改size[3]是不是应该是(class_num+5)x3,同时官方的教程我觉得写得不够细,比如在哪里执行什么步骤写的不够清晰,需要自己推敲,比如关于如何训练YOLO模型我觉得可以不用提及,这种东西到处都是,反而是转换模型能写的清晰一点会好一点

名字命名为yolov3后,在app文件下转换时加入了yolov3.nb,同时也复制了一个yolov3_88.nb,也将.c及.h文件复制到位,使用的sdk文件夹名字为 linux_sdk_6.3.3.4
转换模型时截屏如下(图一)
新用户只能放一张图…我先描述一下看等下能不能放到回复里面
显示make:Nothing to be done for ‘all’

现在不知道问题出在哪里,请问一下能帮忙解决一下吗,时间有点紧。

BTW:1.如何从ctrl+alt+f1墨市里面呢切换回图形界面啊,现在我的解决办法是reboot…
2.我的摄像头好像也使用不了,使用的是gucee hd98,插入的时候显示的是
图二
cannot get freq at ep 0xx84
使用detect_demo显示:
图三
很多的CRITICAL
查看过官网显示此摄像头是uvc的,使用mipi时会发现只有fps却没有图像,只有fps一直在跳

我确定没有搞错/dev/videoX的编号,因为我对比了插入前与插入后的变化

感谢细致认真的看完我的问题,希望能帮助到我解决!问题有点多有点杂很抱歉,因为没能在社区里面找到相关的内容所以只能发贴了很抱歉!

图一

图二

图三

模型没有问题,我们放出去的这个代码很多用户都在用,这个log看起来是你的图片的问题.切换目录的时候,如果你安装过之前其他目录的./INSTALL,建议重新安装,nb文件在不同文件夹里size是不一样的.

说明你的代码没有改变

ctrl + alt + f7

好像? 你可以先确定你使用摄像头软件能不能打开你的摄像头,从你的图片上看log,是找不到摄像头. 另外,detect_demo_uvc是usb摄像头用的demo,mipi摄像头的demo是detect_demo_mipi.不要搞混了.

我们的mipi摄像头是不支持热插拔的.如果你值插了mipi摄像头,没有插入其他摄像头,/dev/video0就是mipi摄像头.

谢谢您的及时回复!
是这样的,

  • yoloface可以很好的使用,但是使用自己的yolov3模型会出corrupted size vs. prev_size这样的错误,每一次进detect_demo且进行预测前都会./INSTALL的,这个问题应该不是./INSTALL的问题。请问一下是什么会导致corrupted size vs. prev_size这个问题呢?
  • 关于模型转换我的概念有一点模糊,比如我命名我的模型名字为yolov3,在运行
$ ./build_vx.sh $path/to/linux_sdk_dir $path/to/fenix

时是需要将yolov3.nb重命名为yolov3_88.nb并替换nn_data里的yolov3_88.nb吗?而不是直接复制过去就好。

  • 然后在demo_binaries 中使用demo时,也是需要将yolov3.nb重命名为yolov3_88.nb替换原来的yolov3_88.nb文件,且将.so文件替换掉对应文件吗?

  • 关于

指的是我这次执行vx.sh时之前执行过,所以就显示这个代码说我代码没有过改变?我记得之前执行的时候有warning,我稍晚些看看能不能重新做一遍看看是什么warning在放上来

谢谢您的及时回复!祝好。

这个是第一次见

要替换成88.nb,直接拿过去不行.另外,转换代码时这个nb文件不会用到,可以不用拿过去.这个nb文件生成以后,是在执行时加载的.

删除bin_r目录重新编译,就会看到log了

您好,在尝试过许多方法后还是存在着这个问题,抱歉再次打扰,这里给出我使用的转换文件和输出,麻烦您能不能看出问题
0_import_model.sh

#!/bin/bash

NAME=yolov3
ACUITY_PATH=../bin/

convert_caffe=${ACUITY_PATH}convertcaffe
convert_tf=${ACUITY_PATH}convertensorflow
convert_tflite=${ACUITY_PATH}convertflite
convert_darknet=${ACUITY_PATH}convertdarknet
convert_onnx=${ACUITY_PATH}convertonnx

$convert_darknet \
    --net-input yolov3-voc.cfg \
	--weight-input yolov3-voc_26000.weights \
    --net-output ${NAME}.json \
    --data-output ${NAME}.data 

1_quantize_model.sh

#!/bin/bash

NAME=yolov3
ACUITY_PATH=../bin/

tensorzone=${ACUITY_PATH}tensorzonex

#asymmetric_quantized-u8 dynamic_fixed_point-8 dynamic_fixed_point-16
$tensorzone \
    --action quantization \
    --source text \
    --source-file ./data/validation_tf.txt \
    --channel-mean-value '0 0 0 256' \
    --model-input ${NAME}.json \
    --model-data ${NAME}.data \
    --quantized-dtype dynamic_fixed_point-8 \
	--quantized-rebuild

$tensorzone \
    --action inference \
    --source text \
    --source-file ./data/validation_tf.txt \
    --channel-mean-value '0 0 0 256' \
    --model-input ${NAME}.json \
    --model-data ${NAME}.data \
    --dtype quantized

其中,validation_tf.txt内容为

./000xx.jpg
即一张图片的地址

2_export_case_code.sh

#!/bin/bash

NAME=yolov3
ACUITY_PATH=../bin/

export_ovxlib=${ACUITY_PATH}ovxgenerator

$export_ovxlib \
    --model-input ${NAME}.json \
    --data-input ${NAME}.data \
    --reorder-channel '2 1 0' \
    --channel-mean-value '0 0 0 256' \
    --export-dtype quantized \
    --model-quantize ${NAME}.quantize \
    --optimize VIPNANOQI_PID0X88  \
    --viv-sdk ../bin/vcmdtools \
    --pack-nbg-unify 

rm *.h *.c .project .cproject *.vcxproj *.lib BUILD *.linux

mv nbg_unify nbg_unify_${NAME}

cd nbg_unify_${NAME}

mv network_binary.nb ${NAME}.nb

最后一个输出为


这样转换模型的输出及代码有问题吗?

同时我也截屏了链接文件执行vx.sh时的结果


请问这连接的步骤执行的有问题吗?

@An9zh0u 从你的步骤上来看,没看出啥问题,你用的是6.3.3.4的SDK,你系统的驱动版本是多少,是否更新过,最新的驱动不适配这个版本的SDK

尝试过使用
sudo apt-get update
和sudo apt-get upgrade指令
请问这样系统启动是否是更新过的呢,不适合6.3.3.4吗?
有什么办法查看版本或者是解决这个问题呢

@An9zh0u 是的,最新的驱动需要新的SDK版本,请重新通过邮件申请新的SDK

谢谢@Frank的帮助,图片现在可以识别了,但是还有其他的问题

  • 如何测试模型的检测速度,目前只能使用detect_demo_picture

  • 目前调用模型detect_demo_picture在显示图片时屏幕还是会花,如图


    但是output.bmp结果是正确的,请问如何解决屏幕花的问题

同样,在摄像头调用上还是有问题,我们可以确定摄像头是/dev/video1,型号为Logitech HD Webcam C310,同时摄像头在win10下可以正常调用。在使用detect_demo时报错如图


请问如何解决摄像头调用的呢?总共有三个问题,谢谢你的帮助!

很好的演示,好品种的食物,这是现场图像识别吗?

No, this is recognized by the picture since I used detect_demo_picture. And I have difficulties with detect_demo which is used to recognize the live video.

ok, so static picture recognition from a picture ?

@An9zh0u 图片的显示是我们加上去的.如果你使用1920x1080的图片显示就是正常的 .你也可以修改源码做一个resize之类的处理

@An9zh0u 我们测试了我们的demo,USB摄像头是正常的.我们使用的也是罗技的摄像头.不清楚是不是不支持你这个摄像头