Toybrick

标题: rk3399pro板子上跑YOLOV3画面右侧区域出现box不匹配现象 [打印本页]

作者: appleUncle    时间: 2019-12-27 15:11
标题: rk3399pro板子上跑YOLOV3画面右侧区域出现box不匹配现象
本帖最后由 appleUncle 于 2019-12-27 16:08 编辑

按照大佬的教程人工智能开发系列(3) YOLOV3开发与实现成功在3399pro板子上跑了起来,效果很不错,但是发现一个奇怪的现象,在画面的右侧,大概是画面宽度的2/3之后的区域,出现box中心和宽度不匹配,高度是匹配的。情况如下图:更详细的可以看看这个输出视频[attach]807[/attach]
[attach]806[/attach]
可以明显看到最右侧的行人,box有问题。经过多次实验,发现画面的其他地方都没问题,只有右侧2/3左右之后的区域检测到目标,box就会出现上述情况。用的是c接口的demo,320,416,608  3个版本均是如此。
另外模型转换的量化和预编译开关都试过,问题依旧。

作者: troy    时间: 2019-12-27 16:56
因为视频图片在预测前会被resize成416x416,正常情况显示的应该是resize后的图像,但是代码中为了显示效果,显示的是resize前的图片;两种改进方法,第一,原视频长宽比例1:1,第二,修改代码,显示的图像为resize后的
作者: appleUncle    时间: 2019-12-30 08:32
troy 发表于 2019-12-27 16:56
因为视频图片在预测前会被resize成416x416,正常情况显示的应该是resize后的图像,但是代码中为了显示效果, ...

感谢解答!
作者: appleUncle    时间: 2019-12-30 10:04
经检查,是给的demo代码有误,
在draw_img函数中:
  1. if(x1  < 0) x1  = 0;
  2. if(x2> img.cols-1) x2 = img.cols-1;
  3. if(y1 < 0) y1 = 0;
  4. if(x2 > img.rows-1) x2 = img.rows-1;
复制代码
应改为:
  1. if(x1  < 0) x1  = 0;
  2. if(x2> img.cols-1) x2 = img.cols-1;
  3. if(y1 < 0) y1 = 0;
  4. if(y2 > img.rows-1) y2 = img.rows-1;
复制代码
然后在run_process函数中将outputs_transform(outputs, net_width, net_height, dets);的net_width, net_height改成输出图片的宽高即可。

作者: troy    时间: 2020-1-7 09:12
appleUncle 发表于 2019-12-30 10:04
经检查,是给的demo代码有误,
在draw_img函数中:
应改为:然后在run_process函数中将outputs_transform(o ...






欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3