gyyang23 / AFPN

102 stars 12 forks source link

为什么替换之后并没有降低参数量以及GFLOPs呢?怎么才能达到论文里说的效果呢? #4

Open Anoue opened 1 year ago

Anoue commented 1 year ago

为什么替换之后并没有降低参数量以及GFLOPs呢?怎么才能达到论文里说的效果呢?

gyyang23 commented 1 year ago

你用啥分辨率的图片测的。输入图片分辨率的不同是会影响GFLOPs的。

gyyang23 commented 1 year ago

val_dataloader = dict( batch_size=1, num_workers=2, persistent_workers=True, drop_last=False, sampler=dict(type='DefaultSampler', shuffle=False), dataset=dict( type='CocoDataset', data_root='./data/coco/', ann_file='annotations/instances_val2017.json', data_prefix=dict(img='val2017/'), test_mode=True, pipeline=[ dict(type='LoadImageFromFile', backend_args=None), dict(type='Resize', scale=(640, 640), keep_ratio=False), dict( type='PackDetInputs', meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor')) ], backend_args=None))

这是640*640的

Anoue commented 1 year ago

就YOLOv5默认的

Anoue commented 1 year ago

val_dataloader = dict( batch_size=1, num_workers=2, persistent_workers=True, drop_last=False, sampler=dict(type='DefaultSampler', shuffle=False), dataset=dict( type='CocoDataset', data_root='./data/coco/', ann_file='annotations/instances_val2017.json', data_prefix=dict(img='val2017/'), test_mode=True, pipeline=[ dict(type='LoadImageFromFile', backend_args=None), dict(type='Resize', scale=(640, 640), keep_ratio=False), dict( type='PackDetInputs', meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor')) ], backend_args=None))

这是640*640的

我是在YOLOv5源码里面改的,没用mmdetection,用yaml文件配置的,不过问题应该不大啊,就频繁的上采样下采样感觉就会增加很多参数啊

gyyang23 commented 1 year ago

yolov5的backbone输出的是三个尺度的特征。我在mmdetection上实现的这个是基于四个尺度的特征。

在yolov5上输入neck的特征都减少到原来的1/4。在Faster RCNN上是1/8。我论文里有提到。

上采样不需要参数。

yolov5参数低的原因是进入neck的特征都减少到原来的1/4。

Anoue commented 1 year ago

那最后进Head的三个特征图是 128 256 512 还是 32 64 128呢?

gyyang23 commented 1 year ago

如果输入是[128, 256, 512],输出就是[128, 256, 512]。

yolov5所用的激活函数也要改一下。

假如yolov5用的激活函数是silu,要把afpn的激活函数改成silu

iu110 commented 1 year ago

val_dataloader = dict( batch_size=1, num_workers=2, persistent_workers=True, drop_last=False, sampler=dict(type='DefaultSampler', shuffle=False), dataset=dict( type='CocoDataset', data_root='./data/coco/', ann_file='annotations/instances_val2017.json', data_prefix=dict(img='val2017/'), test_mode=True, pipeline=[ dict(type='LoadImageFromFile', backend_args=None), dict(type='Resize', scale=(640, 640), keep_ratio=False), dict( type='PackDetInputs', meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor')) ], backend_args=None)) 这是640*640的

我是在YOLOv5源码里面改的,没用mmdetection,用yaml文件配置的,不过问题应该不大啊,就频繁的上采样下采样感觉就会增加很多参数啊

你好,不好意思打扰了,可以看一下你改后的yaml文件吗

Anoue commented 1 year ago

val_dataloader = dict( batch_size=1, num_workers=2, persistent_workers=True, drop_last=False, sampler=dict(type='DefaultSampler', shuffle=False), dataset=dict( type='CocoDataset', data_root='./data/coco/', ann_file='annotations/instances_val2017.json', data_prefix=dict(img='val2017/'), test_mode=True, pipeline=[ dict(type='LoadImageFromFile', backend_args=None), dict(type='Resize', scale=(640, 640), keep_ratio=False), dict( type='PackDetInputs', meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor')) ], backend_args=None)) 这是640*640的

我是在YOLOv5源码里面改的,没用mmdetection,用yaml文件配置的,不过问题应该不大啊,就频繁的上采样下采样感觉就会增加很多参数啊

你好,不好意思打扰了,可以看一下你改后的yaml文件吗

head: [[4, 1, Conv, [64, 1, 1]], # 80 80 [6, 1, Conv, [128, 1, 1]], # 40 40

[[10, 11], 1, ASFF_2, [64, 0]], # 128 80 80 [[10, 11], 1, ASFF_2, [128, 1]], # 256 40 40

[-2, 1, C3, [64, False]], #128 80 80 [-2, 1, C3, [128, False]], #256 40 40

[9, 1, Conv, [256, 1, 1]],

[[14, 15, 16], 1, ASFF_3, [64, 0]], [[14, 15, 16], 1, ASFF_3, [128, 1]], [[14, 15, 16], 1, ASFF_3, [256, 2]],

[17, 1, C3, [64, False]], [18, 1, C3, [128, False]], [19, 1, C3, [256, False]],

[[20, 21, 22], 1, Detect, [nc, anchors]], ]

iu110 commented 1 year ago

val_dataloader = dict( batch_size=1, num_workers=2, persistent_workers=True, drop_last=False, sampler=dict(type='DefaultSampler', shuffle=False), dataset=dict( type='CocoDataset', data_root='./data/coco/', ann_file='annotations/instances_val2017.json', data_prefix=dict(img='val2017/'), test_mode=True, pipeline=[ dict(type='LoadImageFromFile', backend_args=None), dict(type='Resize', scale=(640, 640), keep_ratio=False), dict( type='PackDetInputs', meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor')) ], backend_args=None)) 这是640*640的

我是在YOLOv5源码里面改的,没用mmdetection,用yaml文件配置的,不过问题应该不大啊,就频繁的上采样下采样感觉就会增加很多参数啊

你好,不好意思打扰了,可以看一下你改后的yaml文件吗

head: [[4, 1, Conv, [64, 1, 1]], # 80 80 [6, 1, Conv, [128, 1, 1]], # 40 40

[[10, 11], 1, ASFF_2, [64, 0]], # 128 80 80 [[10, 11], 1, ASFF_2, [128, 1]], # 256 40 40

[-2, 1, C3, [64, False]], #128 80 80 [-2, 1, C3, [128, False]], #256 40 40

[9, 1, Conv, [256, 1, 1]],

[[14, 15, 16], 1, ASFF_3, [64, 0]], [[14, 15, 16], 1, ASFF_3, [128, 1]], [[14, 15, 16], 1, ASFF_3, [256, 2]],

[17, 1, C3, [64, False]], [18, 1, C3, [128, False]], [19, 1, C3, [256, False]],

[[20, 21, 22], 1, Detect, [nc, anchors]], ]

好的,谢谢

liiicon commented 1 year ago

就YOLOv5默认的

你好,v5源码里commen用asff_2,_3怎么改呀,yolo.py如何添加呢?能看下代码吗?

Anoue commented 1 year ago

就YOLOv5默认的

你好,v5源码里commen用asff_2,_3怎么改呀,yolo.py如何添加呢?能看下代码吗?

asff_2_3,就是根据作者给的源码改的,新增了一个Level参数,然后在yaml文件中控制level的具体值 yolo.py文件中,将输入的两个或者三个特征图的通道数一起传给c1,其他都一样