Giter VIP home page Giter VIP logo

Comments (20)

h-bo avatar h-bo commented on July 4, 2024 3

似乎找到问题了 我先开了个mr 方便交流
TLNR:目前来看,长方形输入的性能符合预期了

具体分析:
实验结果图:img_v2_ef5fc6cc-4c09-48f3-a200-1a7d0b4e9ddg
(注:1120的实验显示问题,是因为在150epoch后又跑了150个epoch)
从实验来看,长方形输入的性能符合预期,且在前期明显高于相应的正方形
在实验后期,长方形输入的性能略低于相应的正方形,可能和数据集分布,数据策略有关,这个我继续做研究。
数据分布:
image

from rt-detr.

lyuwenyu avatar lyuwenyu commented on July 4, 2024 1

后处理加个参数 bbox_decode_type:'pad' 试一下, ( ppdet里pad操作不改变inputs['im_shape']导致其和im.shape不一致, 会导致在后处理里默认得到的原图尺寸origin_shape不太对

from rt-detr.

lyuwenyu avatar lyuwenyu commented on July 4, 2024
  1. mosaic在coco上我们有试验过 效果不怎么好
  2. 长方形推理的 在你训练的时候也要和测试的时候逻辑一致吧?

from rt-detr.

h-bo avatar h-bo commented on July 4, 2024
  1. mosaic在coco上我们有试验过 效果不怎么好
    确实,虽然简单的数据增强,取得了较好的效果很惊人,但复杂的数据增强反而效果差,很奇怪
    detr仓库里也有人问这个问题facebookresearch/detr#42
  2. 长方形推理的 在你训练的时候也要和测试的时候逻辑一致吧?
    对的,长方形的一致训练与测试,但效果会差很多

from rt-detr.

lyuwenyu avatar lyuwenyu commented on July 4, 2024
  1. mosaic在coco上我们有试验过 效果不怎么好
    确实,虽然简单的数据增强,取得了较好的效果很惊人,但复杂的数据增强反而效果差,很奇怪
    detr仓库里也有人问这个问题Any plan about data augmentation facebookresearch/detr#42
  2. 长方形推理的 在你训练的时候也要和测试的时候逻辑一致吧?
    对的,长方形的一致训练与测试,但效果会差很多
  1. detr系列的backbone一般都是有预训练的 可能这块不太适合强数据增强;yolo系列的一般都是from scratch训练 可能用Mosaic效果更好一些
  2. 你reader怎么配置的, 会有一些padding嘛?

from rt-detr.

h-bo avatar h-bo commented on July 4, 2024
  1. mosaic在coco上我们有试验过 效果不怎么好
    确实,虽然简单的数据增强,取得了较好的效果很惊人,但复杂的数据增强反而效果差,很奇怪
    detr仓库里也有人问这个问题Any plan about data augmentation facebookresearch/detr#42
  2. 长方形推理的 在你训练的时候也要和测试的时候逻辑一致吧?
    对的,长方形的一致训练与测试,但效果会差很多
  1. detr系列的backbone一般都是有预训练的 可能这块不太适合强数据增强;yolo系列的一般都是from scratch训练 可能用Mosaic效果更好一些
  2. 你reader怎么配置的, 会有一些padding嘛?
  1. 学习了
  2. 直接resize (- BatchRandomResize: {target_size: [[1088, 1920],], random_size: True, random_interp: True, keep_ratio: False})和padResize(train: PadResize: {target_size: 1280} @sample_transformstest, test: - Resize: {target_size: [1280, 1280], keep_ratio: True, interp: 1}
    • Pad: {size: [1280, 1280], fill_value: [114., 114., 114.]})都试过,效果都不佳,尤其padResize几乎没有性能,

from rt-detr.

h-bo avatar h-bo commented on July 4, 2024

后处理加个参数 bbox_decode_type:'pad' 试一下, ( ppdet里pad操作不改变inputs['im_shape']导致其和im.shape不一致, 会导致在后处理里默认得到的原图尺寸origin_shape不太对

  1. 在padResize中,使用了这个操作,确实取得了正常的结果,直接Resize的结果不受影响
  2. 但是不管pad(keepRatio)与否,矩形resize的结果,仍然明显低于正方形resize(比如800960的结果,比800800和960960的结果都明显差,数据集原始是10801920的图片,讲道理keep_ratio resize或者尽量大分辨率应该会更好),这个结果还是比较奇怪

(我打算实验下是不是和position embeding有关系,因为我发现同正方形跨尺寸还是有一定性能的,但是变成长方形就完全没有性能。您还有别的建议嘛)

配置如:

epoch: 150
snapshot_epoch: 5
TrainReader:
  sample_transforms:
    - Decode: {}
    - RandomDistort: {prob: 0.8}
    # - RandomExpand: {fill_value: [123.675, 116.28, 103.53]}
    - RandomCrop: {prob: 0.8}
    - RandomFlip: {}
  batch_transforms:
    - BatchRandomResize: {target_size: [[800, 960]], random_size: True, random_interp: True, keep_ratio: False}
    - NormalizeImage: {mean: [0., 0., 0.], std: [1., 1., 1.], norm_type: none}
    - NormalizeBox: {}
    - BboxXYXY2XYWH: {}
    - Permute: {}
  batch_size: 4
  shuffle: true
  drop_last: true
  collate_batch: false
  use_shared_memory: true


weights: output/model_final
find_unused_parameters: True
log_iter: 200

pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet18_vd_pretrained.pdparams
ResNet:
  depth: 18
  variant: d
  return_idx: [1, 2, 3]
  freeze_at: -1
  freeze_norm: false
  norm_decay: 0.

HybridEncoder:
  hidden_dim: 256
  use_encoder_idx: [2]
  num_encoder_layers: 1
  encoder_layer:
    name: TransformerLayer
    d_model: 256
    nhead: 8
    dim_feedforward: 1024
    dropout: 0.
    activation: 'gelu'
  expansion: 0.5
  depth_mult: 1.0

RTDETRTransformer:
  eval_idx: -1
  num_decoder_layers: 3

eval_size: [800, 960]
EvalReader:
  sample_transforms:
    - Decode: {}
    - Resize: {target_size: [800, 960], keep_ratio: False, interp: 2}
    - NormalizeImage: {mean: [0., 0., 0.], std: [1., 1., 1.], norm_type: none}
    - Permute: {}
  batch_size: 4
  shuffle: false
  drop_last: false


TestReader:
  inputs_def: # used for export
    image_shape: [3, 800, 960]
  sample_transforms:
    - Decode: {}
    - Resize: {target_size: [800, 960], keep_ratio: False, interp: 2}
    - NormalizeImage: {mean: [0., 0., 0.], std: [1., 1., 1.], norm_type: none}
    - Permute: {}
  batch_size: 1
  shuffle: false
  drop_last: false

DETRPostProcess:
  bbox_decode_type: 'pad'

from rt-detr.

lyuwenyu avatar lyuwenyu commented on July 4, 2024

你上边贴的配置也是跑不出来?

from rt-detr.

h-bo avatar h-bo commented on July 4, 2024

你上边贴的配置也是跑不出来?

是的 长方形性能显著低于正方形

from rt-detr.

lyuwenyu avatar lyuwenyu commented on July 4, 2024

我感觉还是后处理的问题 你可以再确定一下那个逻辑有问题没

from rt-detr.

h-bo avatar h-bo commented on July 4, 2024

我感觉还是后处理的问题 你可以再确定一下那个逻辑有问题没

ok我确定下

似乎没问题,从结果上看,检测框也分布在图片各处(抱歉公司不让放图)
image

性能图(960*800的实验跑完了,但是因为缩小了log step,所以图中显得指标还行,但是拉平来看,结果还是低)
image

from rt-detr.

lyuwenyu avatar lyuwenyu commented on July 4, 2024

歪一下楼: 你训练自己的数据时候 没有用用coco上的预训练嘛 比如修改pretrain_weights

from rt-detr.

h-bo avatar h-bo commented on July 4, 2024

歪一下楼: 你训练自己的数据时候 没有用用coco上的预训练嘛 比如修改pretrain_weights

确实,之前只用了应该是imagenet pretrain(https://paddledet.bj.bcebos.com/models/pretrained/ResNet18_vd_pretrained.pdparams)
我试试coco pretrain

from rt-detr.

TsingWei avatar TsingWei commented on July 4, 2024

看了下对应的pr,这种bug真的哭笑不得😂

from rt-detr.

h-bo avatar h-bo commented on July 4, 2024

看了下对应的pr,这种bug真的哭笑不得😂

没有细查的话,其实也正常。甚至有可能是copilot自己生成的😂

from rt-detr.

 avatar commented on July 4, 2024

你好!
我按照你的代码进行了矩形训练,但准确度明显低于正方形训练。为了排除可能性,我尝试调整了 w 和 h 后重新训练,但结果并没有显著改变。

  1. 高准确度代码的唯一更改是 [h,w] 吗?
  2. 对于输入的矩形(800x960),重新训练的结果是否与960x960的结果相似甚至更好?您进行了相同尺寸的比较吗?

如果可能的话,我能从您这里获得一些答案吗?如果您能提供帮助,我将不胜感激。

from rt-detr.

h-bo avatar h-bo commented on July 4, 2024

你好! 我按照你的代码进行了矩形训练,但准确度明显低于正方形训练。为了排除可能性,我尝试调整了 w 和 h 后重新训练,但结果并没有显著改变。

  1. 高准确度代码的唯一更改是 [h,w] 吗?
  2. 对于输入的矩形(800x960),重新训练的结果是否与960x960的结果相似甚至更好?您进行了相同尺寸的比较吗?

如果可能的话,我能从您这里获得一些答案吗?如果您能提供帮助,我将不胜感激。

可以参考下我的配置,我就是按照那个配置跑的

from rt-detr.

h-bo avatar h-bo commented on July 4, 2024

BTW,形状输入和数据分布是有关系的,而且resize成较小的矩形,比长边为准的正方形,目标是要变小,性能可能要变低的。需要确认下你的输入是否适合矩形

你好! 我按照你的代码进行了矩形训练,但准确度明显低于正方形训练。为了排除可能性,我尝试调整了 w 和 h 后重新训练,但结果并没有显著改变。

  1. 高准确度代码的唯一更改是 [h,w] 吗?
  2. 对于输入的矩形(800x960),重新训练的结果是否与960x960的结果相似甚至更好?您进行了相同尺寸的比较吗?

如果可能的话,我能从您这里获得一些答案吗?如果您能提供帮助,我将不胜感激。

BTW,形状输入和数据分布是有关系的,而且resize成较小的矩形,比长边为准的正方形,目标是要变小,性能可能要变低的。需要确认下你的输入是否适合矩形

from rt-detr.

 avatar commented on July 4, 2024

BTW,形状输入和数据分布是有关系的,而且resize成较小的矩形,比长边为准的正方形,目标是要变小,性能可能要变低的。需要确认下你的输入是否适合矩形

你好! 我按照你的代码进行了矩形训练,但准确度明显低于正方形训练。为了排除可能性,我尝试调整了 w 和 h 后重新训练,但结果并没有显著改变。

  1. 高准确度代码的唯一更改是 [h,w] 吗?
  2. 对于输入的矩形(800x960),重新训练的结果是否与960x960的结果相似甚至更好?您进行了相同尺寸的比较吗?

如果可能的话,我能从您这里获得一些答案吗?如果您能提供帮助,我将不胜感激。

BTW,形状输入和数据分布是有关系的,而且resize成较小的矩形,比长边为准的正方形,目标是要变小,性能可能要变低的。需要确认下你的输入是否适合矩形

非常感谢您的回复
我的数据集图像尺寸为1280x720,已将其调整为608x352,使用的主干是resnet50(经过90个epochs的训练,性能始终较低)。您的配置和我的唯一区别在于 'bbox_decode_type: 'pad'',我尝试过包括这个配置进行重新训练,但仍无法获得类似正方形的性能。原因不确定,但在我的情况下,改变w和h的顺序并没有带来任何区别。
根据您的建议,可能是目标变小导致的。如果您有其他的建议,我将非常期待听取!

from rt-detr.

 avatar commented on July 4, 2024

BTW,形状输入和数据分布是有关系的,而且resize成较小的矩形,比长边为准的正方形,目标是要变小,性能可能要变低的。需要确认下你的输入是否适合矩形

你好! 我按照你的代码进行了矩形训练,但准确度明显低于正方形训练。为了排除可能性,我尝试调整了 w 和 h 后重新训练,但结果并没有显著改变。

  1. 高准确度代码的唯一更改是 [h,w] 吗?
  2. 对于输入的矩形(800x960),重新训练的结果是否与960x960的结果相似甚至更好?您进行了相同尺寸的比较吗?

如果可能的话,我能从您这里获得一些答案吗?如果您能提供帮助,我将不胜感激。

BTW,形状输入和数据分布是有关系的,而且resize成较小的矩形,比长边为准的正方形,目标是要变小,性能可能要变低的。需要确认下你的输入是否适合矩形

我使用了960x800的尺寸进行训练,结果表现出比正方形输入略微更好的性能
正如您所建议的,对象的大小问题似乎确实存在

from rt-detr.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.