mmdet.apis¶
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.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.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。
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_instances
やpred_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
- numpy() → 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 に変換しようとします。次の手順を実行します。
まず、torch.cuda.empty_cache() を呼び出した後に再試行します。
それでも失敗する場合は、入力を変換して再試行します。
FP16 にします。
それでも失敗する場合は、入力を 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
注記
- 入力が GPU 上にある場合でも、出力は CPU 上にある可能性があります。CPU での処理
により、コードが大幅に遅くなります。
- 入力を CPU に変換する場合、各引数のみを調べます
変換のために .device および .to があるかどうかを確認します。テンソルのネストされた構造はサポートされていません。
- 関数は複数回呼び出される可能性があるため、
ステートレスである必要があります。
- 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.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_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.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.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