参考 ultralytics/utils/torch_utils.py
注
このファイルはhttps://github.com/ultralytics/ultralytics/blob/main/ ultralytics/utils/ torch_utils .pyにあります。もし問題を発見したら、Pull Request🛠️ を投稿して修正にご協力ください。ありがとうございました!
ultralytics.utils.torch_utils.ModelEMA
https://github.com/rwightman/pytorch-image-models から更新された指数移動平均(EMA)
モデルstate_dict内のすべての移動平均を保持する(パラメータとバッファ)。
EMAの詳細については、https://www.tensorflow.org/api_docs/python/tf/train/ExponentialMovingAverage を参照。
EMAを無効にするには enabled
属性を False
.
ソースコード ultralytics/utils/torch_utils.py
__init__(model, decay=0.9999, tau=2000, updates=0)
EMAを作る。
ソースコード ultralytics/utils/torch_utils.py
update(model)
EMAパラメータを更新する。
ソースコード ultralytics/utils/torch_utils.py
update_attr(model, include=(), exclude=('process_group', 'reducer'))
アトリビュートを更新し、オプティマイザを取り除いたモデルを保存します。
ultralytics.utils.torch_utils.EarlyStopping
指定したエポック数が経過しても改善が見られない場合に学習を停止する早期停止クラス。
ソースコード ultralytics/utils/torch_utils.py
__call__(epoch, fitness)
トレーニングを中止するかどうかを確認する。
パラメーター
名称 | タイプ | 説明 | デフォルト |
---|---|---|---|
epoch |
int
|
トレーニングの現在のエポック |
必須 |
fitness |
float
|
現在のエポックのフィットネス値 |
必須 |
リターンズ
タイプ | 説明 |
---|---|
bool
|
トレーニングを停止する場合は真、そうでない場合は偽 |
ソースコード ultralytics/utils/torch_utils.py
__init__(patience=50)
早期停止オブジェクトを初期化する。
パラメーター
名称 | タイプ | 説明 | デフォルト |
---|---|---|---|
patience |
int
|
フィットネスの向上が止まってから停止するまでのエポック数。 |
50
|
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.torch_distributed_zero_first(local_rank)
分散トレーニングの全プロセスを、それぞれのlocal_masterが何かをするのを待つようにするデコレーター。
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.smart_inference_mode()
torch.inference_mode() デコレータを適用 iftorch>=1.9.0 elsetorch.no_grad() デコレータを適用。
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_cpu_info()
システムCPU情報、すなわち'Apple M2'を文字列で返す。
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.select_device(device='', batch=0, newline=False, verbose=True)
指定された引数に基づいて、適切なPyTorch デバイスを選択する。
この関数は、デバイスを指定する文字列またはtorch.device オブジェクトを受け取り、選択されたデバイスを表すtorch.device オブジェクトを返します。 を返します。この関数はまた、使用可能なデバイスの数を検証し、要求されたデバイスが使用可能でない場合は例外を発生させます。 例外を発生させます。
パラメーター
名称 | タイプ | 説明 | デフォルト |
---|---|---|---|
device |
str | device
|
デバイス文字列またはtorch.device オブジェクト。 オプションは'None'、'cpu'、'cuda'、または'0'、'0,1,2,3'。デフォルトは空の文字列です。 を自動選択します。 |
''
|
batch |
int
|
モデルで使用されているバッチサイズ。デフォルトは0です。 |
0
|
newline |
bool
|
True の場合、ログ文字列の最後に改行を追加する。デフォルトはFalseです。 |
False
|
verbose |
bool
|
Trueの場合、デバイス情報をログに記録する。デフォルトはTrue。 |
True
|
リターンズ
タイプ | 説明 |
---|---|
device
|
選択されたデバイス。 |
レイズ
タイプ | 説明 |
---|---|
ValueError
|
指定されたデバイスが利用できない場合、または複数の GPU を使用する場合にバッチサイズがデバイス数の倍数でない場合。 バッチサイズが |
例を挙げよう:
注
使用するGPUを指定するための環境変数 'CUDA_VISIBLE_DEVICES' を設定します。
ソースコード ultralytics/utils/torch_utils.py
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
|
ultralytics.utils.torch_utils.time_sync()
ultralytics.utils.torch_utils.fuse_conv_and_bn(conv, bn)
Conv2d() と BatchNorm2d() のレイヤーを融合 https://tehnokv.com/posts/fusing-batchnorm-and-conv/.
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.fuse_deconv_and_bn(deconv, bn)
ConvTranspose2d() と BatchNorm2d() のレイヤーを融合。
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.model_info(model, detailed=False, verbose=True, imgsz=640)
モデル情報。
imgszはintまたはリスト、すなわちimgsz=640またはimgsz=[640, 320]である。
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_num_params(model)
ultralytics.utils.torch_utils.get_num_gradients(model)
ultralytics.utils.torch_utils.model_info_for_loggers(trainer)
有用なモデル情報を含むモデル情報dictを返します。
例
YOLOv8n ロガー向け情報
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_flops(model, imgsz=640)
YOLO モデルの FLOPs を返す。
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_flops_with_torch_profiler(model, imgsz=640)
モデルのFLOPを計算する(thopパッケージの代替だが、残念ながら2~10倍遅い)。
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.initialize_weights(model)
モデルの重みをランダムな値に初期化する。
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.scale_img(img, ratio=1.0, same_shape=False, gs=32)
形状 img(bs,3,y,x) の画像tensor を、与えられた比率とグリッドサイズ gs に基づいてスケーリングし、パディングする。 元の形状を保持する。
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.make_divisible(x, divisor)
ultralytics.utils.torch_utils.copy_attr(a, b, include=(), exclude=())
オブジェクト 'b' の属性をオブジェクト 'a' にコピーする。
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_latest_opset()
このバージョンのPyTorch でサポートされている、2 番目に新しいONNX オプセットのバージョンを、成熟度を調整して返す。
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.intersect_dicts(da, db, exclude=())
da値を使用して、「除外」キーを除く、形状が一致する交差キーの辞書を返す。
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.is_parallel(model)
ultralytics.utils.torch_utils.de_parallel(model)
ultralytics.utils.torch_utils.one_cycle(y1=0.0, y2=1.0, steps=100)
y1 から y2 https://arxiv.org/pdf/1812.01187.pdf までの正弦波ランプのラムダ関数を返す。
ultralytics.utils.torch_utils.init_seeds(seed=0, deterministic=False)
乱数生成器(RNG)の種を初期化 https://pytorch.org/docs/stable/notes/randomness.html.
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.strip_optimizer(f='best.pt', s='')
オプティマイザを'f'から取り除いてトレーニングを終了し、オプションで's'として保存する。
パラメーター
名称 | タイプ | 説明 | デフォルト |
---|---|---|---|
f |
str
|
オプティマイザを取り除くモデルのファイルパス。デフォルトは 'best.pt' です。 |
'best.pt'
|
s |
str
|
オプティマイザを取り除いたモデルを保存するファイルパス。省略した場合は 'f' が上書きされます。 |
''
|
リターンズ
タイプ | 説明 |
---|---|
None
|
なし |
例
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.convert_optimizer_state_dict_to_fp16(state_dict)
指定したオプティマイザの state_dict を FP16 に変換します。tensor の変換では 'state' キーに注目します。
この方法は、「param_groups」にtensor 以外のデータが含まれているため、「param_groups」を変更することなく、ストレージサイズを削減することを目的としている。
ソースコード ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.profile(input, ops, n=10, device=None)
Ultralytics 速度、メモリ、FLOPsプロファイラ。