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.65k stars 2.87k forks source link

NAS of Picodet really sota? #6251

Open 2050airobert opened 2 years ago

2050airobert commented 2 years ago

问题确认 Search before asking

请提出你的问题 Please ask your question

Hi, 这里有几个问题,尤其是: 1 在检测数据集上训练one-shot超网 , 这具体是指同时训练六个或者更多个不同的检测网络结构吗? 2 使用EA(evolutionary algorithm,进化算法)算法对训练好的超网络进行架构搜索。 这个是六个网络同时进行的,还是六个网络单独训练,结果出来后,再次使用EA算法演进出最优网络。或者更简单的可以粗略认为就是选出这多个网络中训练结果最好的一个呢? 3 请问是否有这个NAS具体的步骤说明和相关的源码部分,可以发下具体链接和代码位置吗? 多谢 BR

2050airobert commented 2 years ago

none

2050airobert commented 2 years ago

@yghstill @ZeyuChen @QingshuChen @sjtubinlong @yghstill anyone could help ? tks

zhiboniu commented 2 years ago
  1. 受限于数据协议,AI Challenger数据集需要自己去官网下载。
  2. 是需要下载到本地训练的
2050airobert commented 2 years ago

谢谢,还漏掉了前面三个关于nas相关的具体问题,能帮忙回答下吗?

RachelXu7 commented 2 years ago

1 在检测数据集上训练one-shot超网 , 这具体是指同时训练六个或者更多个不同的检测网络结构吗?

训练的网络结构是不同的,比如channel数不同,block数量不同,block不同,但一般共用一套网络结构(supernet)代码,只是每个iteration会随机选择一个网络结构(subnet)训练。

  1. 使用EA(evolutionary algorithm,进化算法)算法对训练好的超网络进行架构搜索。 这个是六个网络同时进行的,还是六个网络单独训练,结果出来后,再次使用EA算法演进出最优网络。或者更简单的可以粗略认为就是选出这多个网络中训练结果最好的一个呢?

根据问题1的解答,supernet训练完每个subnet会有其对应的精度,EA做的事就是寻找满足条件中最优的那个subnet。如果subnet一共只有6个,可以验证完他们的精度后选出最优,但实际上一般subnet有成千上万甚至更多,所以是没办法全部验证完的,所以只能利用EA算法尽量收敛找出相对比较优的。

3 请问是否有这个NAS具体的步骤说明和相关的源码部分,可以发下具体链接和代码位置吗?

我们会尽快发布开源代码~感谢~

2050airobert commented 2 years ago

@RachelXu7 tks anyway 这里还有个问题, 1 我理解您说的subnet应该会有很多,结构或者参数都不太相同,但是会不会连主干的网络架构也可以选择不同的呢,类似autoML可以遍历几乎目前大多数的网络结构?还是只能选择一种结构,而subnet只是具体结构细节和参数的略微调整? 2 您论文里提到的6个不同的网络,是指我1种提到的意思吗?还是? 为何选择6个呢? 3 NAS源码预期大致在哪一周能release public呢? tks

RachelXu7 commented 2 years ago
  1. 粒度可以不同,比如某些搜索只关注channel数,那主干网络结构是相同的;或者是block内部级别的,比如可以在内部选择使用不同的module;又或者是整个block级别的,可以选择block1也可以选择block2,3,4,...等等。这要看你怎么构建你的超网络了。
  2. 论文里不是说6个网络,而是每个block中channel数的选择有6个,如果这个网络有10个block,那么这个超网络就有6的10次方个subnet。这6个比例对于channel的设计是比较合理且直观的。
  3. 7月应该可以并且会有升级~
2050airobert commented 2 years ago

认真拜读了您的作品,有两个问题想请教下 1 ShuffleNetV2【10_ShuffleNetV2】是在移动端上计算高效。本文在此基础上改进了网络结构并提出了一种新的主干网络,称为 Enhanced ShuffleNet (ESNet),性能优于ShuffleNetV2。 --- 从论文后续的消融实验中发现该网络导致map掉了点,那么计算量提升了多少呢? 2 本文提出一种改进的用于检测的 One-Shot Neural Architecture Search (NAS)方法,;来自动找到目标检测的最优架构。本文直接在检测数据集上训练超网络,从而显着节省计算量并优化检测性能。本文中NAS生成的模型实现了更好的效率精度均衡。 -- 这里提到的NAS 实际上并没有提到提升了多少map,消融实验或者其他地方展现出有什么好处? 麻烦您指点下上面两个问题,多谢

2050airobert commented 2 years ago

HI, 请问下,为什么picodet 模型只看率了 strip=1 和 =2的情况。 第二,这两种情况分别用在哪,有什么作用呢? image 第三,这里的strip=2的情况 a图,是指所有的conv 都是strip=2的处理吗? 第四,在训练supernet的过程中,会同时采样出不同配置的子网络出来,而且每个training iteration会更换不同的子网络,而子网络可能channnel甚至block结构都不同,那么这样的结果就是训练supernet的过程实际上同时训练了成千上万个子网络?这个时间会很长的吧,比如rtx3090 双卡,大概需要多少小时呢? 第五,在训练过程中,如何保证每个子网络能够被训练的epcho数量足够,并且更新的权重到自己这个网络上,而没有互相被下次迭代的其他子网络干扰? 每次training iteration的结果权重都要单独保存吗?
BR