Krasjet-Yu / YOLO-FaceV2

YOLO-FaceV2: A Scale and Occlusion Aware Face Detector
183 stars 23 forks source link

其他轻量级网络的配置文件 #20

Open TryHard-LL opened 2 years ago

TryHard-LL commented 2 years ago

你好, 1.对于其他轻量级网络对应的配置文件或者调试版本你这边有吗?相比于yolov5face在同样的轻量级backbone前提下,本算法是否有提高? 2.本文中有多个不同比列的anchor生成策略,这会不会带来时间(推理)速度慢的问题? 谢谢~

TryHard-LL commented 2 years ago

image

Krasjet-Yu commented 2 years ago

针对第一个问题:这里目前只提供了s版本的配置文件以及调整的参数。我们和yolov5face不是相同的backbone,精度和速度这方面您可以自行跑一下进行比较能有更直观的理解。 第二个问题:不理解您说的不同比例anchor生成策略是指什么?我们的anchor是提前根据网络计算好的,并不需要去占用模型的推理。 针对您的图片,我们在readme中已经提供了训练策略,17epochs并未完全充分训练,建议您可查看tensorboard

TryHard-LL commented 2 years ago

1.我明白您们现在中的backbone是跟yolo5face是不同的。我以意思是您这边有打算在轻量级网络上进行一些训练与性能对比吗?

2.关于锚框的生成,若需要生成的候选锚框更多,那么不就在一定程度上增加了整体流程了吗?

对于下方我的图片,我是想表达,您这个算法在文章中给的配置前提下是可行的,有效的。但是,当我自己修改为轻量级网络,如yolov5n中的网络配置时,添加上您在文章中提出的MultiSEAM模块后,发现前50个epoch,仅能得到不太明显的性能,或许是我的参数配置有问题~~,希望您这边有机会可以提供更多轻量级网络相关的参数配置。 谢谢~~

以下附基于yolov5n初步得到的结果。

D93@ A}FXXGSJH7SE_E@Y T

Krasjet-Yu commented 2 years ago

嗯嗯,我明白您的意思了,若增加锚框的数量确实会占用一部分推理时间,但是也会提升性能,这个可以权衡一下。 另外我们当时确实仅在s模型中做了实验。我们后续会对n,m,l等模型做一些训练和性能对比。做进一步的完善。 这里非常感谢您的建议!

Daipuwei commented 2 years ago

image

您好,请问能分享下您这个yolov5n的配置文件吗?我这边也尝试了下,直接从yolov5代码中直接复制yolov5n的配置文件做替换,跑训练提示报错,说的是bn层bacthsize为1报错了

TryHard-LL commented 2 years ago

image

您好,请问能分享下您这个yolov5n的配置文件吗?我这边也尝试了下,直接从yolov5代码中直接复制yolov5n的配置文件做替换,跑训练提示报错,说的是bn层bacthsize为1报错了 您好,我仅是简单修改了下,没有进行后续细节优化,配置文件如下~: `# parameters nc: 1 # number of classes depth_multiple: 1.0 # model depth multiple width_multiple: 1.0 # layer channel multiple

anchors

anchors:

YOLOv5 backbone

backbone:

[from, number, module, args]

[[-1, 1, StemBlock, [32, 3, 2]], # 0-P2/4 [-1, 1, ShuffleV2Block, [128, 2]], # 1-P3/8 [-1, 3, ShuffleV2Block, [128, 1]], # 2 [-1, 1, ShuffleV2Block, [256, 2]], # 3-P4/16 [-1, 7, ShuffleV2Block, [256, 1]], # 4 [-1, 1, ShuffleV2Block, [512, 2]], # 5-P5/32 [-1, 3, ShuffleV2Block, [512, 1]], # 6 ]

YOLOv5 head

head: [[-1, 1, Conv, [128, 1, 1]], [-1, 1, nn.Upsample, [None, 2, 'nearest']], [[-1, 4], 1, Concat, [1]], # cat backbone P4 [-1, 1, C3, [128, False]], # 10

[-1, 1, Conv, [128, 1, 1]], [-1, 1, nn.Upsample, [None, 2, 'nearest']], [[-1, 2], 1, Concat, [1]], # cat backbone P3 [-1, 1, C3, [128, False]], # 14 (P3/8-small)

[-1, 1, Conv, [128, 3, 2]], [[-1, 11], 1, Concat, [1]], # cat head P4 [-1, 1, C3, [128, False]], # 17 (P4/16-medium)

[-1, 1, Conv, [128, 3, 2]], [[-1, 7], 1, Concat, [1]], # cat head P5 [-1, 1, C3, [128, False]], # 20 (P5/32-large)

=========================

[14, 1, MultiSEAM, [128, 1, 3, [2, 3, 4], 16]], [ -1, 1, Conv, [ 128, 1, 1 ] ], # 22 [ 17, 1, MultiSEAM, [ 128, 1, 3, [ 2, 3, 4 ], 16 ] ], [ -1, 1, Conv, [ 128, 1, 1 ] ], # 24 [ 20, 1, MultiSEAM, [ 128, 1, 3, [ 2, 3, 4 ], 16 ] ], [ -1, 1, Conv, [ 128, 1, 1 ] ], # 26

===========================

[[22, 24, 26], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) ]

`

Daipuwei commented 2 years ago

image

您好,请问能分享下您这个yolov5n的配置文件吗?我这边也尝试了下,直接从yolov5代码中直接复制yolov5n的配置文件做替换,跑训练提示报错,说的是bn层bacthsize为1报错了 您好,我仅是简单修改了下,没有进行后续细节优化,配置文件如下~: `# parameters nc: 1 # number of classes depth_multiple: 1.0 # model depth multiple width_multiple: 1.0 # layer channel multiple

anchors

anchors:

  • [4,5, 8,10, 13,16] # P3/8
  • [23,29, 43,55, 73,105] # P4/16
  • [146,217, 231,300, 335,433] # P5/32

YOLOv5 backbone

backbone:

[from, number, module, args]

[[-1, 1, StemBlock, [32, 3, 2]], # 0-P2/4 [-1, 1, ShuffleV2Block, [128, 2]], # 1-P3/8 [-1, 3, ShuffleV2Block, [128, 1]], # 2 [-1, 1, ShuffleV2Block, [256, 2]], # 3-P4/16 [-1, 7, ShuffleV2Block, [256, 1]], # 4 [-1, 1, ShuffleV2Block, [512, 2]], # 5-P5/32 [-1, 3, ShuffleV2Block, [512, 1]], # 6 ]

YOLOv5 head

head: [[-1, 1, Conv, [128, 1, 1]], [-1, 1, nn.Upsample, [None, 2, 'nearest']], [[-1, 4], 1, Concat, [1]], # cat backbone P4 [-1, 1, C3, [128, False]], # 10

[-1, 1, Conv, [128, 1, 1]], [-1, 1, nn.Upsample, [None, 2, 'nearest']], [[-1, 2], 1, Concat, [1]], # cat backbone P3 [-1, 1, C3, [128, False]], # 14 (P3/8-small)

[-1, 1, Conv, [128, 3, 2]], [[-1, 11], 1, Concat, [1]], # cat head P4 [-1, 1, C3, [128, False]], # 17 (P4/16-medium)

[-1, 1, Conv, [128, 3, 2]], [[-1, 7], 1, Concat, [1]], # cat head P5 [-1, 1, C3, [128, False]], # 20 (P5/32-large)

=========================

[14, 1, MultiSEAM, [128, 1, 3, [2, 3, 4], 16]], [ -1, 1, Conv, [ 128, 1, 1 ] ], # 22 [ 17, 1, MultiSEAM, [ 128, 1, 3, [ 2, 3, 4 ], 16 ] ], [ -1, 1, Conv, [ 128, 1, 1 ] ], # 24 [ 20, 1, MultiSEAM, [ 128, 1, 3, [ 2, 3, 4 ], 16 ] ], [ -1, 1, Conv, [ 128, 1, 1 ] ], # 26

===========================

[[22, 24, 26], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) ]

`

兄弟能加vx交流吗?我的微信是:daipuwei-ai

Krasjet-Yu commented 2 years ago

您这是yolol的配置。我们的yolo-facev2是在YOLOv5 v5.0的基础上改进的,backbone不一样导致了下采样可能不一样,所以你要保证在运行到MultiSEAM的时候能够有足够大的feat size能进行MultiSEAM的下采样。针对这个问题解决方案,您是可以尝试debug一下去定位在哪块代码有问题,您可以先把断点打在forward_once那里看一下是否是因为feat size大小的问题。

TryHard-LL commented 2 years ago

您这是yolol的配置。我们的yolo-facev2是在YOLOv5 v5.0的基础上改进的,backbone不一样导致了下采样可能不一样,所以你要保证在运行到MultiSEAM的时候能够有足够大的feat size能进行MultiSEAM的下采样。针对这个问题解决方案,您是可以尝试debug一下去定位在哪块代码有问题,您可以先把断点打在forward_once那里看一下是否是因为feat size大小的问题。

好嘞,我之前仅做了初步尝试,后续没有再进行细节修改,完了我再看看细节,谢谢~

TryHard-LL commented 2 years ago

还是希望你们团队给出自己在其它backbone上的一些配置文件,相比我们肯定了解更深入~