ショートカット

mmdet.apis

mmdet.datasets

datasets

api_wrappers

samplers

transforms

mmdet.engine

hooks

optimizers

runner

schedulers

mmdet.evaluation

functional

mmdet.evaluation.functional.average_precision(recalls, precisions, mode='area')[ソース]

平均適合率(単一または複数のスケール)を計算します。

パラメータ
  • recalls (ndarray) – shape (num_scales, num_dets) または (num_dets, )

  • precisions (ndarray) – shape (num_scales, num_dets) または (num_dets, )

  • mode (str) – ‘area’ または ‘11points’、‘area’ は適合率-再現率曲線の下の面積を計算することを意味し、‘11points’ は [0, 0.1, …, 1] の再現率の平均適合率を計算することを意味します。

戻り値

計算された平均適合率

戻り値の型

float または ndarray

mmdet.evaluation.functional.bbox_overlaps(bboxes1, bboxes2, mode='iou', eps=1e-06, use_legacy_coordinate=False)[ソース]

bboxes1 と bboxes2 の各 bbox 間の IoU を計算します。

パラメータ
  • bboxes1 (ndarray) – Shape (n, 4)

  • bboxes2 (ndarray) – Shape (k, 4)

  • mode (str) – IOU (intersection over union) または IOF (intersection over foreground)

  • use_legacy_coordinate (bool) – mmdet v1.x の座標系を使用するかどうか。つまり、幅と高さはそれぞれ ‘x2 - x1 + 1` と ‘y2 - y1 + 1’ として計算する必要があります。関数が VOCDataset で使用されている場合は、公式の実装 http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCdevkit_18-May-2011.tar と一致するように True にする必要があります。デフォルト: False。

戻り値

Shape (n, k)

戻り値の型

ious (ndarray)

mmdet.evaluation.functional.cityscapes_classes()list[ソース]

Cityscapes のクラス名。

mmdet.evaluation.functional.coco_classes()list[ソース]

COCO のクラス名。

mmdet.evaluation.functional.coco_panoptic_classes()list[ソース]

COCO パノプティックのクラス名。

mmdet.evaluation.functional.eval_map(det_results, annotations, scale_ranges=None, iou_thr=0.5, ioa_thr=None, dataset=None, logger=None, tpfp_fn=None, nproc=4, use_legacy_coordinate=False, use_group_of=False, eval_mode='area')[ソース]

データセットの mAP を評価します。

パラメータ
  • det_results (list[list]) – [[cls1_det, cls2_det, …], …]。外側のリストは画像を示し、内側のリストはクラスごとの検出された bbox を示します。

  • annotations (list[dict]) –

    リストの各項目が画像を示す、グラウンドトゥルース注釈。注釈のキーは

    • bboxes: 形状 (n, 4) の numpy 配列

    • labels: 形状 (n, ) の numpy 配列

    • bboxes_ignore (オプション): 形状 (k, 4) の numpy 配列

    • labels_ignore (オプション): 形状 (k, ) の numpy 配列

  • scale_ranges (list[tuple] | None) – 評価するスケールの範囲([(min1, max1), (min2, max2), …] の形式)。(32, 64) の範囲は、(32**2, 64**2) の間の面積範囲を意味します。デフォルトは None。

  • iou_thr (float) – 一致したと見なされる IoU しきい値。デフォルトは 0.5。

  • ioa_thr (float | None) – 一致したと見なされる IoA しきい値。OpenImages の評価でのみ使用されます。デフォルトは None。

  • dataset (list[str] | str | None) – データセット名またはデータセットクラス。たとえば、「voc」、「imagenet_det」など、データセットによってメトリックにわずかな違いがあります。デフォルトは None。

  • logger (logging.Logger | str | None) – mAP サマリーを出力する方法。詳細は mmengine.logging.print_log() を参照してください。デフォルトは None。

  • tpfp_fn (callable | None) – 真陽性/偽陽性を判断するために使用される関数。None の場合、データセットが ‘det’ または ‘vid’ でない限り、tpfp_default() がデフォルトとして使用されます (この場合は tpfp_imagenet())。関数として与えられた場合、この関数は tp および fp を評価するために使用されます。デフォルトは None。

  • nproc (int) – TP(真陽性)とFP(偽陽性)の計算に使用するプロセス数。デフォルトは4。

  • use_legacy_coordinate (bool) – mmdet v1.xの座標系を使用するかどうか。これは、幅と高さがそれぞれ `x2 - x1 + 1` と `y2 - y1 + 1` として計算されるべきであることを意味します。デフォルトはFalse。

  • use_group_of (bool) – TPとFPを計算する際にグループを使用するかどうか。OpenImagesの評価でのみ使用されます。デフォルトはFalse。

  • eval_mode (str) – ‘area’ または ‘11points’。 ‘area’ は precision-recall曲線下の面積を計算することを意味し、 ‘11points’ は[0, 0.1, ..., 1]でのrecallの平均precisionを計算することを意味します。PASCAL VOC2007はデフォルトの評価モードとして11pointsを使用しますが、その他は ‘area’ です。デフォルトは ‘area’。

戻り値

(mAP, [dict, dict, …])

戻り値の型

tuple

mmdet.evaluation.functional.eval_recalls(gts, proposals, proposal_nums=None, iou_thrs=0.5, logger=None, use_legacy_coordinate=False)[source]

recallを計算します。

パラメータ
  • gts (list[ndarray]) – 形状(n, 4)の配列のリスト

  • proposals (list[ndarray]) – 形状(k, 4)または(k, 5)の配列のリスト

  • proposal_nums (int | Sequence[int]) – 評価対象とする上位N個のproposal数。

  • iou_thrs (float | Sequence[float]) – IoU閾値。デフォルト:0.5。

  • logger (logging.Logger | str | None) – recallの概要を出力する方法。詳細はmmengine.logging.print_log()を参照してください。デフォルト:None。

  • use_legacy_coordinate (bool) – mmdet v1.xの座標系を使用するかどうか。高さと幅の両方に"1"が追加され、wとhがそれぞれ`x2 - x1 + 1`と`y2 - y1 + 1`として計算されることを意味します。デフォルト:False。

戻り値

異なるiouとproposal数に対するrecall

戻り値の型

ndarray

mmdet.evaluation.functional.evaluateImgLists(prediction_list: list, groundtruth_list: list, args: object, backend_args: Optional[dict] = None, dump_matches: bool = False)dict[source]

obj:``cityscapesscripts.evaluationのラッパーです。

evalInstanceLevelSemanticLabeling.evaluateImgLists``。ファイルバックエンドからのgroundtruth画像のロードをサポートします。:param prediction_list: 予測txtファイルのリスト。:type prediction_list: list :param groundtruth_list: groundtruth画像ファイルのリスト。:type groundtruth_list: list :param args: におけるグローバルなオブジェクト設定

obj:cityscapesscripts.evaluation. evalInstanceLevelSemanticLabeling

パラメータ
  • backend_args (dict, optional) – URIに対応するバックエンドのプレフィックスをインスタンス化するための引数。デフォルトはNone。

  • dump_matches (bool) – matches.jsonをダンプするかどうか。デフォルトはFalse。

戻り値

計算されたメトリクス。

戻り値の型

dict

mmdet.evaluation.functional.get_classes(dataset)list[source]

データセットのクラス名を取得します。

mmdet.evaluation.functional.imagenet_det_classes()list[source]

ImageNet Detのクラス名。

mmdet.evaluation.functional.imagenet_vid_classes()list[source]

ImageNet VIDのクラス名。

mmdet.evaluation.functional.objects365v1_classes()list[source]

Objects365 V1のクラス名。

mmdet.evaluation.functional.objects365v2_classes()list[source]

Objects365 V2のクラス名。

mmdet.evaluation.functional.oid_challenge_classes()list[source]

Open Images Challengeのクラス名。

mmdet.evaluation.functional.oid_v6_classes()list[source]

Open Images V6のクラス名。

mmdet.evaluation.functional.plot_iou_recall(recalls, iou_thrs)[source]

IoU-Recallsカーブをプロットします。

パラメータ
  • recalls (ndarray or list) – 形状(k,)

  • iou_thrs (ndarray or list) – recallsと同じ形状

mmdet.evaluation.functional.plot_num_recall(recalls, proposal_nums)[source]

Proposal_num-Recallsカーブをプロットします。

パラメータ
  • recalls (ndarray or list) – 形状(k,)

  • proposal_nums (ndarray or list) – recallsと同じ形状

mmdet.evaluation.functional.pq_compute_multi_core(matched_annotations_list, gt_folder, pred_folder, categories, backend_args=None, nproc=32)[source]

マルチスレッドでパノプティックセグメンテーションのメトリクスを評価します。

panopticapiの同名の関数と同じです。

パラメータ
  • matched_annotations_list (list) – マッチしたアノテーションのリスト。各要素は、同じ画像のアノテーションのタプルで、(gt_anns, pred_anns) の形式です。

  • gt_folder (str) – ground truth画像のパス。

  • pred_folder (str) – 予測画像のパス。

  • categories (str) – データセットのカテゴリ。

  • backend_args (object) – データセットのファイルクライアント。Noneの場合、バックエンドはlocalに設定されます。

  • nproc (int) – パノプティック品質の計算に使用するプロセス数。デフォルトは32。nprocがCPUコア数を超える場合は、CPUコア数が使用されます。

mmdet.evaluation.functional.pq_compute_single_core(proc_id, annotation_set, gt_folder, pred_folder, categories, backend_args=None, print_log=False)[source]

パノプティックセグメンテーションのメトリクスを評価するシングルコア関数。

panopticapiの同名の関数と同じです。画像読み込みの関数のみがファイルクライアントを使用するように変更されています。

パラメータ
  • proc_id (int) – ミニプロセスのID。

  • gt_folder (str) – ground truth画像のパス。

  • pred_folder (str) – 予測画像のパス。

  • categories (str) – データセットのカテゴリ。

  • backend_args (object) – データセットのバックエンド。Noneの場合、バックエンドはlocalに設定されます。

  • print_log (bool) – ログを出力するかどうか。デフォルトはFalse。

mmdet.evaluation.functional.print_map_summary(mean_ap, results, dataset=None, scale_ranges=None, logger=None)[source]

各クラスのmAPと結果を出力します。

各クラスのgts/dets/recall/APとmAPを表示するテーブルが出力されます。

パラメータ
  • mean_ap (float) – eval_map() から計算されます。

  • results (list[dict]) – eval_map() から計算されます。

  • dataset (list[str] | str | None) – データセット名またはデータセットのクラス。

  • scale_ranges (list[tuple] | None) – 評価されるスケールの範囲。

  • logger (logging.Logger | str | None) – mAP サマリーを出力する方法。詳細は mmengine.logging.print_log() を参照してください。デフォルトは None。

mmdet.evaluation.functional.print_recall_summary(recalls, proposal_nums, iou_thrs, row_idxs=None, col_idxs=None, logger=None)[source]

テーブル形式でリコールを出力します。

パラメータ
  • recalls (ndarray) – bbox_recalls から計算されます。

  • proposal_nums (ndarray or list) – 上位N個のプロポーザル。

  • iou_thrs (ndarray or list) – iouの閾値。

  • row_idxs (ndarray) – 出力する行(プロポーザル数)。

  • col_idxs (ndarray) – 出力する列(iou閾値)。

  • logger (logging.Logger | str | None) – recallの概要を出力する方法。詳細はmmengine.logging.print_log()を参照してください。デフォルト:None。

mmdet.evaluation.functional.voc_classes()list[source]

PASCAL VOCのクラス名。

metrics

mmdet.models

backbones

data_preprocessors

dense_heads

detectors

layers

losses

necks

roi_heads

seg_heads

task_modules

test_time_augs

utils

mmdet.structures

structures

class mmdet.structures.DetDataSample(*, metainfo: Optional[dict] = None, **kwargs)[source]

MMDetectionのデータ構造インターフェースです。これらは、異なるコンポーネント間のインターフェースとして使用されます。

DetDataSampleの属性は、いくつかの部分に分かれています。

  • ``proposals``(InstanceData): 2段階検出器で使用される領域プロポーザル。

    検出器。

  • ``gt_instances``(InstanceData): インスタンスアノテーションのグラウンドトゥルース。

  • ``pred_instances``(InstanceData): 検出予測のインスタンス。

  • ``pred_track_instances``(InstanceData): トラッキングのインスタンス。

    予測。

  • ``ignored_instances``(InstanceData): トレーニング/テスト中に無視されるインスタンス。

    トレーニング/テスト中に無視されるインスタンス。

  • ``gt_panoptic_seg``(PixelData): パノプティックのグラウンドトゥルース。

    セグメンテーション。

  • ``pred_panoptic_seg``(PixelData): パノプティックの予測。

    セグメンテーション。

  • ``gt_sem_seg``(PixelData): セマンティックセグメンテーションのグラウンドトゥルース。

  • ``pred_sem_seg``(PixelData): セマンティックセグメンテーションの予測。

>>> import torch
>>> import numpy as np
>>> from mmengine.structures import InstanceData
>>> from mmdet.structures import DetDataSample
>>> data_sample = DetDataSample()
>>> img_meta = dict(img_shape=(800, 1196),
...                 pad_shape=(800, 1216))
>>> gt_instances = InstanceData(metainfo=img_meta)
>>> gt_instances.bboxes = torch.rand((5, 4))
>>> gt_instances.labels = torch.rand((5,))
>>> data_sample.gt_instances = gt_instances
>>> assert 'img_shape' in data_sample.gt_instances.metainfo_keys()
>>> len(data_sample.gt_instances)
5
>>> print(data_sample)

<DetDataSample(

メタ情報

データフィールド gt_instances: <InstanceData(

メタ情報 pad_shape: (800, 1216) img_shape: (800, 1196)

データフィールド labels: tensor([0.8533, 0.1550, 0.5433, 0.7294, 0.5098]) bboxes: tensor([[9.7725e-01, 5.8417e-01, 1.7269e-01, 6.5694e-01],

[1.7894e-01, 5.1780e-01, 7.0590e-01, 4.8589e-01], [7.0392e-01, 6.6770e-01, 1.7520e-01, 1.4267e-01], [2.2411e-01, 5.1962e-01, 9.6953e-01, 6.6994e-01], [4.1338e-01, 2.1165e-01, 2.7239e-04, 6.8477e-01]])

) at 0x7f21fb1b9190>

) at 0x7f21fb1b9880>
>>> pred_instances = InstanceData(metainfo=img_meta)
>>> pred_instances.bboxes = torch.rand((5, 4))
>>> pred_instances.scores = torch.rand((5,))
>>> data_sample = DetDataSample(pred_instances=pred_instances)
>>> assert 'pred_instances' in data_sample
>>> pred_track_instances = InstanceData(metainfo=img_meta)
>>> pred_track_instances.bboxes = torch.rand((5, 4))
>>> pred_track_instances.scores = torch.rand((5,))
>>> data_sample = DetDataSample(
...    pred_track_instances=pred_track_instances)
>>> assert 'pred_track_instances' in data_sample
>>> data_sample = DetDataSample()
>>> gt_instances_data = dict(
...                        bboxes=torch.rand(2, 4),
...                        labels=torch.rand(2),
...                        masks=np.random.rand(2, 2, 2))
>>> gt_instances = InstanceData(**gt_instances_data)
>>> data_sample.gt_instances = gt_instances
>>> assert 'gt_instances' in data_sample
>>> assert 'masks' in data_sample.gt_instances
>>> data_sample = DetDataSample()
>>> gt_panoptic_seg_data = dict(panoptic_seg=torch.rand(2, 4))
>>> gt_panoptic_seg = PixelData(**gt_panoptic_seg_data)
>>> data_sample.gt_panoptic_seg = gt_panoptic_seg
>>> print(data_sample)

<DetDataSample(

メタ情報

データフィールド _gt_panoptic_seg: <BaseDataElement(

メタ情報

データフィールド panoptic_seg: tensor([[0.7586, 0.1262, 0.2892, 0.9341],

[0.3200, 0.7448, 0.1052, 0.5371]])

) at 0x7f66c2bb7730>

gt_panoptic_seg: <BaseDataElement(

メタ情報

データフィールド panoptic_seg: tensor([[0.7586, 0.1262, 0.2892, 0.9341],

[0.3200, 0.7448, 0.1052, 0.5371]])

) at 0x7f66c2bb7730>

) at 0x7f66c2bb7280> >>> data_sample = DetDataSample() >>> gt_segm_seg_data = dict(segm_seg=torch.rand(2, 2, 2)) >>> gt_segm_seg = PixelData(**gt_segm_seg_data) >>> data_sample.gt_segm_seg = gt_segm_seg >>> assert ‘gt_segm_seg’ in data_sample >>> assert ‘segm_seg’ in data_sample.gt_segm_seg

class mmdet.structures.ReIDDataSample(*, metainfo: Optional[dict] = None, **kwargs)[source]

ReIDタスクのデータ構造インターフェースです。

異なるコンポーネント間のインターフェースとして使用されます。

メタフィールド
img_shape (Tuple): 対応する入力画像の形状。

可視化に使用されます。

ori_shape (Tuple): 対応する画像の元の形状。

可視化に使用されます。

num_classes (int): すべてのカテゴリの数。

ラベル形式の変換に使用されます。

データフィールド

gt_label (LabelData): グラウンドトゥルースラベル。 pred_label (LabelData): 予測ラベル。 scores (torch.Tensor): モデルの出力。

set_gt_label(value: Union[numpy.ndarray, torch.Tensor, Sequence[numbers.Number], numbers.Number])mmdet.structures.reid_data_sample.ReIDDataSample[source]

gt_labelのラベルを設定します。

set_gt_score(value: torch.Tensor)mmdet.structures.reid_data_sample.ReIDDataSample[source]

gt_labelのスコアを設定します。

class mmdet.structures.TrackDataSample(*, metainfo: Optional[dict] = None, **kwargs)[source]

MMDetectionにおけるトラッキングタスクのデータ構造インターフェースです。異なるコンポーネント間のインターフェースとして使用されます。

このデータ構造は、ある程度、複数の DetDataSample のラッパーと見なすことができます。具体的には、video_data_samples というプロパティのみが含まれており、これは DetDataSample のリストで、それぞれが単一のフレームに対応しています。単一のフレームのプロパティを取得したい場合は、まずインデックスを使用して対応する DetDataSample を取得し、次にフレームのプロパティ(gt_instancespred_instances など)を取得する必要があります。メタ情報に関しては、DetDataSample とは異なり、各値はメタ情報キーに対応し、各要素は単一のフレームの情報に対応するリストとなります。

>>> import torch
>>> from mmengine.structures import InstanceData
>>> from mmdet.structures import DetDataSample, TrackDataSample
>>> track_data_sample = TrackDataSample()
>>> # set the 1st frame
>>> frame1_data_sample = DetDataSample(metainfo=dict(
...         img_shape=(100, 100), frame_id=0))
>>> frame1_gt_instances = InstanceData()
>>> frame1_gt_instances.bbox = torch.zeros([2, 4])
>>> frame1_data_sample.gt_instances = frame1_gt_instances
>>> # set the 2nd frame
>>> frame2_data_sample = DetDataSample(metainfo=dict(
...         img_shape=(100, 100), frame_id=1))
>>> frame2_gt_instances = InstanceData()
>>> frame2_gt_instances.bbox = torch.ones([3, 4])
>>> frame2_data_sample.gt_instances = frame2_gt_instances
>>> track_data_sample.video_data_samples = [frame1_data_sample,
...                                         frame2_data_sample]
>>> # set metainfo for track_data_sample
>>> track_data_sample.set_metainfo(dict(key_frames_inds=[0]))
>>> track_data_sample.set_metainfo(dict(ref_frames_inds=[1]))
>>> print(track_data_sample)
<TrackDataSample(

メタ情報 key_frames_inds: [0] ref_frames_inds: [1]

データフィールド video_data_samples: [<DetDataSample(

メタ情報 img_shape: (100, 100)

データフィールド gt_instances: <InstanceData(

メタ情報

データフィールド bbox: tensor([[0., 0., 0., 0.],

[0., 0., 0., 0.]])

) at 0x7f639320dcd0>

) at 0x7f64bd223340>, <DetDataSample(

メタ情報 img_shape: (100, 100)

データフィールド gt_instances: <InstanceData(

メタ情報

データフィールド bbox: tensor([[1., 1., 1., 1.],

[1., 1., 1., 1.], [1., 1., 1., 1.]])

) at 0x7f64bd128b20>

) at 0x7f64bd1346d0>]

) at 0x7f64bd2237f0> >>> print(len(track_data_sample)) 2 >>> key_data_sample = track_data_sample.get_key_frames() >>> print(key_data_sample[0].frame_id) 0 >>> ref_data_sample = track_data_sample.get_ref_frames() >>> print(ref_data_sample[0].frame_id) 1 >>> frame1_data_sample = track_data_sample[0] >>> print(frame1_data_sample.gt_instances.bbox) tensor([[0., 0., 0., 0.],

[0., 0., 0., 0.]])

>>> # Tensor-like methods
>>> cuda_track_data_sample = track_data_sample.to('cuda')
>>> cuda_track_data_sample = track_data_sample.cuda()
>>> cpu_track_data_sample = track_data_sample.cpu()
>>> cpu_track_data_sample = track_data_sample.to('cpu')
>>> fp16_instances = cuda_track_data_sample.to(
...     device=None, dtype=torch.float16, non_blocking=False,
...     copy=False, memory_format=torch.preserve_format)
clone()mmengine.structures.base_data_element.BaseDataElement[source]

現在のデータ要素をディープコピーします。

戻り値

現在のデータ要素のコピー。

戻り値の型

BaseDataElement

cpu()mmengine.structures.base_data_element.BaseDataElement[source]

データ内のすべてのテンソルを CPU に変換します。

cuda()mmengine.structures.base_data_element.BaseDataElement[source]

データ内のすべてのテンソルを GPU に変換します。

detach()mmengine.structures.base_data_element.BaseDataElement[source]

データ内のすべてのテンソルをデタッチします。

npu()mmengine.structures.base_data_element.BaseDataElement[source]

データ内のすべてのテンソルを NPU に変換します。

numpy()mmengine.structures.base_data_element.BaseDataElement[source]

データ内のすべてのテンソルを np.ndarray に変換します。

to(*args, **kwargs)mmengine.structures.base_data_element.BaseDataElement[source]

data_fields 内のすべてのテンソルに同じ名前の関数を適用します。

to_tensor()mmengine.structures.base_data_element.BaseDataElement[source]

データ内のすべての np.ndarray をテンソルに変換します。

bbox

mask

mmdet.testing

mmdet.visualization

mmdet.utils

class mmdet.utils.AvoidOOM(to_cpu=True, test=False)[source]

PyTorch の CUDA Out of Memory エラーが発生した場合、入力を FP16 および CPU に変換しようとします。次の手順を実行します。

  1. まず、torch.cuda.empty_cache() を呼び出した後に再試行します。

  2. それでも失敗する場合は、入力を変換して再試行します。

FP16 にします。

  1. それでも失敗する場合は、入力を CPU に変換しようとします。

この場合、関数が CPU 実装にディスパッチされることを期待します。

パラメータ
  • to_cpu (bool) – OOM エラーが発生した場合に出力を CPU に変換するかどうか。これにより、コードが大幅に遅くなります。デフォルトは True です。

  • test (bool) – ユニットテストで軽量データを使用できる _ignore_torch_cuda_oom 操作をスキップします。ユニットテストでのみ使用します。デフォルトは False です。

>>> from mmdet.utils.memory import AvoidOOM
>>> AvoidCUDAOOM = AvoidOOM()
>>> output = AvoidOOM.retry_if_cuda_oom(
>>>     some_torch_function)(input1, input2)
>>> # To use as a decorator
>>> # from mmdet.utils import AvoidCUDAOOM
>>> @AvoidCUDAOOM.retry_if_cuda_oom
>>> def function(*args, **kwargs):
>>>     return None

```

注記

  1. 入力が GPU 上にある場合でも、出力は CPU 上にある可能性があります。CPU での処理

    により、コードが大幅に遅くなります。

  2. 入力を CPU に変換する場合、各引数のみを調べます

    変換のために .device および .to があるかどうかを確認します。テンソルのネストされた構造はサポートされていません。

  3. 関数は複数回呼び出される可能性があるため、

    ステートレスである必要があります。

retry_if_cuda_oom(func)[source]

pytorch の CUDA OOM エラーが発生した後、関数自体を再試行させます。

実装ロジックは、https://github.com/facebookresearch/detectron2/blob/main/detectron2/utils/memory.py を参照してください。

パラメータ

func – テンソルライクなオブジェクトを引数として取るステートレスな呼び出し可能オブジェクト。

戻り値

OOM が発生した場合に func を再試行する呼び出し可能オブジェクト。

戻り値の型

func

mmdet.utils.all_reduce_dict(py_dict, op='sum', group=None, to_float=True)[source]

Python の辞書オブジェクトに all reduce 関数を適用します。

コードは、https://github.com/Megvii- BaseDetection/YOLOX/blob/main/yolox/utils/allreduce_norm.py から変更されています。

注:異なるランクの py_dict に同じキーがあり、値が同じ形状であることを確認してください。現在、nccl バックエンドのみをサポートしています。

パラメータ
  • py_dict (dict) – all reduce 操作が適用される辞書。

  • op (str) – 演算子。'sum' または 'mean' のいずれかです。デフォルト:'sum'

  • group (torch.distributed.group, optional) – 分散グループ。デフォルト:None。

  • to_float (bool) – 辞書のすべての値を float に変換するかどうか。デフォルト:True。

戻り値

削減された Python の辞書オブジェクト。

戻り値の型

OrderedDict

mmdet.utils.allreduce_grads(params, coalesce=True, bucket_size_mb=- 1)[source]

勾配を allreduce します。

パラメータ
  • params (list[torch.Parameters]) – モデルのパラメータのリスト

  • coalesce (bool, optional) – パラメータ全体を allreduce するかどうか。デフォルトは True です。

  • bucket_size_mb (int, optional) – バケットのサイズ。単位は MB です。デフォルトは -1 です。

mmdet.utils.collect_env()[source]

実行環境の情報を収集します。

mmdet.utils.compat_cfg(cfg)[source]

この関数は、設定の互換性を保つために、いくつかのフィールドを変更します。

たとえば、非推奨になる一部の引数を正しいフィールドに移動します。

mmdet.utils.find_latest_checkpoint(path, suffix='pth')[source]

作業ディレクトリから最新のチェックポイントを見つけます。

パラメータ
  • path (str) – チェックポイントを見つけるパス。

  • suffix (str) – ファイル拡張子。デフォルトは pth です。

戻り値

最新のチェックポイントのファイルパス。

戻り値の型

latest_path(str | None)

参考文献

1

https://github.com/microsoft/SoftTeacher /blob/main/ssod/utils/patch.py

mmdet.utils.get_caller_name()[source]

呼び出し元のメソッド名を取得します。

mmdet.utils.get_test_pipeline_cfg(cfg: Union[str, mmengine.config.config.ConfigDict])mmengine.config.config.ConfigDict[ソース]

設定全体からテストデータセットのパイプラインを取得します。

パラメータ

cfg (str または ConfigDict) – 設定全体。設定ファイルまたはConfigDictを指定できます。

戻り値

テストデータセットの設定。

戻り値の型

ConfigDict

mmdet.utils.imshow_mot_errors(*args, backend: str = 'cv2', **kwargs)[ソース]

入力画像上に誤ったトラックを表示します。

パラメータ

backend (str, optional) – 可視化のバックエンド。デフォルトは'cv2'です。

mmdet.utils.log_img_scale(img_scale, shape_order='hw', skip_square=False)[ソース]

画像サイズをログに記録します。

パラメータ
  • img_scale (tuple) – ログに記録する画像サイズ。

  • shape_order (str, optional) – 画像形状の順序。(高さ、幅)の場合は'hw'、(幅、高さ)の場合は'wh'。デフォルトは'hw'です。

  • skip_square (bool, optional) – 正方形のimg_scaleの場合にログをスキップするかどうか。デフォルトはFalseです。

戻り値

ログ記録が完了したかどうか。

戻り値の型

bool

mmdet.utils.reduce_mean(tensor)[ソース]

異なるGPU上でのテンソルの平均を取得します。

mmdet.utils.register_all_modules(init_default_scope: bool = True)None[ソース]

mmdetのすべてのモジュールをレジストリに登録します。

パラメータ

init_default_scope (bool) – mmdetのデフォルトスコープを初期化するかどうか。init_default_scope=Trueの場合、グローバルのデフォルトスコープはmmdetに設定され、すべてのレジストリはmmdetのレジストリノードからモジュールを構築します。レジストリの詳細については、https://github.com/open-mmlab/mmengine/blob/main/docs/en/tutorials/registry.mdを参照してください。デフォルトはTrueです。

mmdet.utils.replace_cfg_vals(ori_cfg)[ソース]

文字列「${key}」を対応する値に置き換えます。

設定内の「${key}」をori_cfg.keyの値に置き換えます。また、連鎖した${key}の置換もサポートします。たとえば、「${key0.key1}」をcfg.key0.key1の値に置き換えます。コードは`vars.py < https://github.com/microsoft/SoftTeacher/blob/main/ssod/utils/vars.py>`_ # noqa: E501 から変更されています

パラメータ

ori_cfg (mmengine.config.Config) – ファイルから生成された「${key}」を含む元の設定。

戻り値

対応する値で置き換えられた「${key}」を含む設定。

戻り値の型

updated_cfg [mmengine.config.Config]

mmdet.utils.setup_cache_size_limit_of_dynamo()[ソース]

dynamoのキャッシュサイズ制限を設定します。

注意: オブジェクト検出アルゴリズムにおける損失計算および後処理部分の動的な形状のため、これらの関数は実行するたびにコンパイルする必要があります。torch._dynamo.config.cache_size_limitに大きな値を設定すると、コンパイルが繰り返され、トレーニングとテストの速度が低下する可能性があります。したがって、cache_size_limitのデフォルト値を小さく設定する必要があります。経験的な値は4です。

mmdet.utils.setup_multi_processes(cfg)[ソース]

マルチプロセス環境変数を設定します。

mmdet.utils.split_batch(img, img_metas, kwargs)[ソース]

タグでdata_batchを分割します。

コードは <https://github.com/microsoft/SoftTeacher/blob/main/ssod/utils/structure_utils.py> # noqa: E501 から変更されています。

パラメータ
  • img (Tensor) – (N, C, H, W)形状の入力画像をエンコードするテンソル。通常、これらは平均中心化され、標準偏差でスケーリングされている必要があります。

  • img_metas (list[dict]) – 各辞書に'img_shape'、'scale_factor'、'flip'が含まれ、さらに'filename'、'ori_shape'、'pad_shape'、'img_norm_cfg'も含まれる可能性がある画像情報辞書のリスト。これらのキーの値の詳細については、mmdet.datasets.pipelines.Collectを参照してください。

  • kwargs (dict) – 具体的な実装に固有の辞書。

戻り値

タグで分割されたdata_batchの辞書

例えば、'sup'、'unsup_teacher'、'unsup_student'など。

戻り値の型

data_groups (辞書)

mmdet.utils.sync_random_seed(seed=None, device='cuda')[ソース]

異なるランクが同じシードを共有するようにします。

すべてのワーカーがこの関数を呼び出す必要があります。そうしないと、デッドロックが発生します。このメソッドは通常、DistributedSamplerで使用されます。これは、シードが分散グループ内のすべてのプロセスで同一である必要があるためです。

分散サンプリングでは、異なるランクがデータセット内で重複しないデータをサンプリングする必要があります。したがって、この関数は、各ランクが同じシードに基づいて同じ順序でデータインデックスをシャッフルするようにするために使用されます。これにより、異なるランクが異なるインデックスを使用して、同じデータリストから重複しないデータを選択できるようになります。

パラメータ
  • seed (int, Optional) – シード。デフォルトはNoneです。

  • device (str) – シードを配置するデバイス。デフォルトは'cuda'です。

戻り値

使用するシード。

戻り値の型

int

mmdet.utils.update_data_root(cfg, logger=None)[ソース]

環境変数MMDET_DATASETSに従ってデータルートを更新します。

環境変数MMDET_DATASETSが設定されている場合、MMDET_DATASETSに従ってcfg.data_rootを更新します。それ以外の場合は、cfg.data_rootをデフォルトとして使用します。

パラメータ
  • cfg (Config) – 変更する必要があるモデル設定

  • logger (logging.Logger | str | None) – メッセージを出力する方法