文章目录
阿里-TinyNAS
https://github.com/alibaba/lightweight-neural-architecture-search
- 聚焦NAS,进行合理的模块划分;
- 更偏向算法使用平台,搜索得到精度较好的模型结构,通过该项目得到damoyolo 的
backbone
结构;
使用流程
步骤一:搜索模型结构
python tools/search.py configs/classification/R50_FLOPs.py
configs/classification/R50_FLOPs.py
# Copyright (c) Alibaba, Inc. and its affiliates.
# The implementation is also open-sourced by the authors, and available at
# https://github.com/alibaba/lightweight-neural-architecture-search.
work_dir = './save_model/R50_R224_FLOPs41e8/'
log_level = 'INFO' # INFO/DEBUG/ERROR
log_freq = 1000
""" image config """
image_size = 224 # 224 for Imagenet, 480 for detection, 160 for mcu
""" Model config """
model = dict(
type = 'CnnNet',
structure_info = [
{
'class': 'ConvKXBNRELU', 'in': 3, 'out': 32, 's': 2, 'k': 3}, \
{
'class': 'SuperResK1KXK1', 'in': 32, 'out': 256, 's': 2, 'k': 3, 'L': 1, 'btn': 64}, \
{
'class': 'SuperResK1KXK1', 'in': 256, 'out': 512, 's': 2, 'k': 3, 'L': 1, 'btn': 128}, \
{
'class': 'SuperResK1KXK1', 'in': 512, 'out': 768, 's': 2, 'k': 3, 'L': 1, 'btn': 256}, \
{
'class': 'SuperResK1KXK1', 'in': 768, 'out': 1024, 's': 1, 'k': 3, 'L': 1, 'btn': 256}, \
{
'class': 'SuperResK1KXK1', 'in': 1024, 'out': 2048, 's': 2, 'k': 3, 'L': 1, 'btn': 512}, \
]
)
""" Budget config """
budgets = [
dict(type = "flops", budget = 41e8),
dict(type = "layers",budget = 49),
dict(type = "model_size", budget = 25.55e6)
]
""" Score config """
score = dict(type = 'madnas', multi_block_ratio = [0,0,0,0,1])
""" Space config """
space = dict(
type = 'space_k1kxk1',
image_size = image_size,
)
""" Search config """
search=dict(
minor_mutation =