1.总体
configs\resnet\resnet18_8xb32_in1k.py
以此为例:
_base_ = [
'../_base_/models/resnet18.py', '../_base_/datasets/imagenet_bs32.py',
'../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py'
]
官方:
_base_ = [
'../_base_/models/resnet50.py', # 模型
'../_base_/datasets/imagenet_bs32.py', # 数据
'../_base_/schedules/imagenet_bs256.py', # 训练策略
'../_base_/default_runtime.py' # 默认运行设置
]
不喜欢简约版,因为需要来回翻找,而且最好别修改源代码,导致后续乱套。故将这个文件路径作为配置参数,运行一遍train,因为很多参数没配置,故肯定报错,但是会得到一个完整版文件,在tools\work_dirs中。
复制到configs\resnet中因为都是同类,只不过复制进去的是完整版,并改名防止重名。
以下是配置好的结果,结合实操理解。
# ../_base_/models/resnet18.py
model = dict(
type='ImageClassifier',
backbone=dict(
type='ResNet',
depth=18,
num_stages=4,
out_indices=(3, ),
style='pytorch'),
neck=dict(type='GlobalAveragePooling'),
head=dict(
type='LinearClsHead',
num_classes=102,
in_channels=512,
loss=dict(type='L1Loss', loss_weight=1.0),#L1Loss CrossEntropyLoss
topk=(1, 5)))
# ../_base_/datasets/imagenet_bs32.py
dataset_type = 'ImageNet'
img_norm_cfg = dict(
mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
train_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='RandomResizedCrop', size=224),
dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),
dict(
type='Normalize',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
to_rgb=True),
dict(type='ImageToTensor', keys=['img']),
dict(type='ToTensor', keys=['gt_label']),
dict(type='Collect', keys=['img', 'gt_label'])
]
test_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='Resize'