timm documentation
モデルの適応とエクスポート
モデルの適応とエクスポート
入力チャネル
in_chansを、モデルが受け取るチャネル数に設定します。非RGBのチェックポイントの場合、その事前学習済み設定のinput_size[0]は、ソースチェックポイントのチャネル数を表す必要があります。例えば、13バンドの画像を2枚重ねて、対応する13バンドのResNet-18チェックポイントを使用するには:
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,
},
)この例では、対応するアーキテクチャとソースのクラス数を持つ独自のチェックポイントが必要です。入力畳み込みの重みは、チャネル順で繰り返しまたは切り詰められ、その後、ソースからターゲットへのチャネル比で乗算されます。したがって、13から26への変換では、重みが2回繰り返され、1/2でスケーリングされます。同じフレームの繰り返しコピーにより、入力畳み込みの応答が保持されます。13から11への変換では、最初の11チャネルが保持され、13/11でスケーリングされます。チャネル数が一致する場合、変更なしで読み込まれます。1チャネルへの変換では、ソースチャネルの重みが合計されます。
直接の重み変換を行う場合は、ソース情報を明示的に指定します:
from timm.models import adapt_input_conv
temporal_weights = adapt_input_conv(26, pretrained_weights, base_chans=13)base_chans describes physical image channels, which can differ from a
space-to-depth stem’s convolution input dimension. The existing RGB default and
space-to-depth grayscale conversion remain supported; other space-to-depth
channel conversions still use the unsupported-format fallback during loading.
Band-specific selection, semantic band matching, and normalization are not
inferred: arrange the bands and preprocessing for your sensor and task.
適応済みモデルの保存
model.pretrained_cfg は、適応後もソースチェックポイントの記述を維持します。
現在のモデルは in_chans と num_classes を公開しています。インスタンスが所有する _traits 辞書は、その名目上の img_size、fixed_input_size 制約、および first_conv パスを記録します。別個の _model_args 辞書は、エクスポート用の構築引数を記録します。サポートされている set_input_size() メソッドは、traits と再構築引数をまとめて更新します。
timm.models.get_model_traits(model) を使用すると、特性のコピーと、現在の in_chans および num_classes 属性を調べることができます。これらのカウントは _traits に重複して保存されるのではなく、属性から読み取られるため、分類器のリセットが反映され続けます。timm.models.get_model_input_config(model) はこれらの特性から入力設定を解決し、timm.models.get_model_args(model) は再構築用の引数を返します。
Hub exportは、ライブのソース設定を変更せずに、保存された重みを記述する新しい設定を書き込みます。適応済みモデルに使用された前処理を渡します:
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)組み込みの学習、検証、推論、ベンチマークのスクリプトは、現在のモデルに対して入力設定を解決します。既存のresolve_data_configおよびresolve_model_data_configヘルパーは、ソース設定の動作を維持します。
エクスポートされた構築引数
ファクトリは、活性化、正規化、埋め込み次元などの構築引数を記録します。エクスポートでは、デバイス/dtype の配置と、キャプチャされた訓練時の正則化パラメータ、すなわち drop_rate、drop_path_rate、drop_block_rate、および *_drop_rate が除外されます。したがって、再読み込み時には、呼び出し側が新しい値を指定しない限り、アーキテクチャの正則化のデフォルト値が使用されます。意図的な場合、明示的なエクスポートの model_args を使用して、特定のレートを保持できます。
Callable引数は信頼性のあるシリアライズができません。モデルを構築する際は、登録済みの文字列名を優先的に使用するか、エクスポート時に同等の名前を指定してください。
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'})シリアライズ可能な代替物が存在しない場合、exportは該当する引数名を指定してエラーを発生させます。 これを無視して削除すると、重みが正常にロードされた場合でも、異なるモデルが再構築される可能性があります。
Update on GitHub