timm documentation
Adaptar e Exportar Modelos
Adaptar e Exportar Modelos
Canais de Entrada
Defina in_chans para o número de canais que seu modelo receberá. Para um checkpoint não-RGB, o input_size[0] da configuração pré-treinada deve descrever a contagem de canais do checkpoint de origem. Por exemplo, para usar duas imagens empilhadas de 13 bandas com um checkpoint ResNet-18 correspondente de 13 bandas:
import timm
model = timm.create_model(
'resnet18',
pretrained=True,
in_chans=26,
num_classes=10,
pretrained_cfg_overlay={
'file': 'path/to/your_13_band_resnet18.pth',
'input_size': (13, 224, 224),
'num_classes': 10,
},
)Este exemplo requer um checkpoint próprio com a arquitetura correspondente e o número de classes de origem. Os pesos da convolução de entrada são repetidos ou truncados na ordem dos canais e, em seguida, multiplicados pela razão entre os canais de origem e de destino. Assim, uma conversão de 13 para 26 repete os pesos duas vezes e os escala por 1/2; cópias repetidas do mesmo quadro preservam a resposta da convolução de entrada. Uma conversão de 13 para 11 mantém os primeiros 11 canais e escala por 13/11. Contagens de canais correspondentes são carregadas sem alterações. A conversão para um único canal soma os pesos dos canais de origem.
Para conversão direta de pesos, especifique explicitamente as mesmas informações de origem:
from timm.models import adapt_input_conv
temporal_weights = adapt_input_conv(26, pretrained_weights, base_chans=13)base_chans descreve os canais físicos da imagem, que podem diferir da dimensão de entrada da convolução do tronco space-to-depth. O padrão RGB existente e a conversão space-to-depth para cinza continuam sendo suportados; outras conversões de canais space-to-depth ainda usam o fallback de formato não suportado durante o carregamento. A seleção específica por banda, o correspondência semântica de bandas e a normalização não são inferidos: organize as bandas e o pré-processamento para o seu sensor e tarefa.
Salvar Modelos Adaptados
model.pretrained_cfg continua descrevendo o checkpoint de origem após a adaptação.
O modelo atual expõe in_chans e num_classes. Um dicionário _traits pertencente à instância registra seu img_size nominal, a restrição fixed_input_size e o caminho first_conv. O dicionário separado _model_args registra os argumentos de construção
para exportação. Os métodos set_input_size() suportados atualizam os traits e
os argumentos de reconstrução juntos.
Use timm.models.get_model_traits(model) para inspecionar uma cópia das características, além dos
atributos atuais in_chans e num_classes. Essas contagens são lidas dos
atributos em vez de serem duplicadas em _traits, de modo que os resets do classificador continuem refletidos. timm.models.get_model_input_config(model) resolve a configuração de entrada a
partir dessas características, e timm.models.get_model_args(model) retorna os argumentos de reconstrução.
A exportação para o Hub grava uma nova configuração descrevendo os pesos salvos sem alterar a configuração de origem ativa. Passe o pré-processamento usado para o modelo adaptado:
from timm.models import save_for_hf
save_for_hf(model, 'my_model', data_config=data_config)
restored = timm.create_model('local-dir:my_model', pretrained=True)Os scripts integrados de treinamento, validação, inferência e benchmark resolvem as configurações de entrada em relação ao modelo atual. Os auxiliares existentes resolve_data_config e resolve_model_data_config mantêm seu comportamento de configuração de origem.
Argumentos de Construção Exportados
O registro de fábrica armazena argumentos de construção, como dimensões de ativação, normalização e incorporação. A exportação exclui a colocação de dispositivo/tipo de dados e a regularização de treinamento capturada: drop_rate, drop_path_rate, drop_block_rate e *_drop_rate. Portanto, o recarregamento usa os padrões de regularização da arquitetura, a menos que o chamador forneça novos valores. A exportação explícita de model_args pode reter uma taxa quando isso for intencional.
Argumentos chamáveis não podem ser serializados de forma confiável. Prefira nomes de strings registrados ao construir um modelo, ou forneça um nome equivalente ao exportar:
import torch.nn as nn
model = timm.create_model('resnet18', act_layer=nn.SiLU)
save_for_hf(model, 'my_silu_resnet', model_args={'act_layer': 'silu'})Sem uma substituição serializável, o export gera um erro que indica o argumento. Removê-lo silenciosamente poderia reconstruir um modelo diferente, mesmo que seus pesos sejam carregados com sucesso.
Update on GitHub