PaddlePaddle / PaddleDetection

Object Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection.
Apache License 2.0
12.68k stars 2.87k forks source link

[Other General Issues]hi,尊敬的开发者,有个问题想请教,cascade处理不同图片尺寸输入该如何处理? #4613

Open MatrixLyz0623 opened 2 years ago

MatrixLyz0623 commented 2 years ago

我现在遇到一个问题,在训练模型的时候,因为采集图片的设备多种多样,采集图片的尺寸也就不一样。 使用的是cascade-rcnn 我看配置文件里, 训练时,可以随机增强成5种尺寸的输入大小 评估和预测时只有1种尺寸大小。 我的问题是: 1,cascade-rcnn网络要求的输入图片尺寸是多少呢?是固定大小还是不固定呢?如果不固定是因为全卷积吗?如果算法里使用了全链接层就必须固定对吗? 2,预测不一样尺寸的图片,最后会resize到配置文件中设置的尺寸上输入,那么模型网络的输入是不是还要resize到固定inputsize的呢?比如我设置的输入图片大小是1600800,我拍到的图片是40002000,训练/预测时,先resize到1600800,再resize到网络需要的输入(比如说684684)才送入网络训练/预测。 3,在原始图片上对锚框聚类后,配置文件里的锚框尺寸是以原始图片为基准,还是以resize到网络输入的尺寸大小为准。 4,预测/训练不同大小的图片时,比如尺寸从(500X500)到(2000X2000)按步长200尺寸均匀分布。怎样处理不同尺寸的训练和预测比较合适呢?

qingqing01 commented 2 years ago
  1. Cascade-RCNN训练时支持变长输入的,是因为全卷积。 拿COCO训练来说,也支持变长。

https://github.com/PaddlePaddle/PaddleDetection/blob/b992a7d249c0ae84669d123e396245bbf0bbabb4/configs/cascade_rcnn/_base_/cascade_fpn_reader.yml#L5

  1. 预测时,原生推理,TRT>5版本时支持变长推理。可以直接输入原图, 预处理函数会自动等比例resize到一个尺寸。 直接输入原图即可,当然原始图片很大话,resize比较耗时。

具体的可以参考代码

https://github.com/PaddlePaddle/PaddleDetection/blob/b992a7d249c0ae84669d123e396245bbf0bbabb4/deploy/python/preprocess.py#L41

  1. 配置文件是已resize后输入到网络的尺寸大小为准。

  2. 现在默认是按照多尺度训练,建议多尺度训练尺寸覆盖[500,2000],预测尺度现在默认是最大变长1333,可以按照精度、推理速度调节吧。

MatrixLyz0623 commented 2 years ago

hi,非常感谢您抽时间解答~收益匪浅,唯一还有疑惑的是第三个问题 因为锚框是在原始图片聚类的,当输入网络时,图像会随机在5种尺寸里选择一种resize,而锚框如果在配置文件里定死,那么会不会出现锚框不会相应比例随机缩放,实际上不匹配的情况呢。 比如原始图片是3000X3000大小,聚类出来的实际锚框是500X500,图片训练时resize的目标是1500X1500,那么在配置文件里应该写500X500还是250X250呢?