CenterPoint ソースコードの解釈処理 (1)
参考文献:
1. 論文の早読み – CenterPoint
2. LIDAR 点群の 3D ターゲット検出の概要 (CenterPoint ソース コード分析)
3. mmdetection3d での CenterPoint の実装
4. 原文の CenterPoint 完全翻訳
この記事では、mmdetection3d プロジェクトの構成ページ configs/centerpoint モデルを使用します。
centerpoint_02pillar_second_secfpn_4x8_cyclic_20e_nus.py
1. データ処理部分(主に点群) – train_pipeline プロセス
1.ファイルからポイントをロード
1.1 機能: ファイルから点群を読み込みます。
1.2 初期化パラメータ
- coord_type: 座標系のタイプ、オプションの「LIDAR」、「DEPTH」、「CAMERA」
- load_dim: データ読み込みディメンション。デフォルトは 6 で、nuscenes データセットは 5 に設定されます。
- use_dim: 使用する次元。デフォルトは [0,1,2]、xyz のみが使用されます。
- shift_height: 高さの変換を使用する必要がありますか。デフォルトは false です。
- use_color: カラー機能を使用する必要がありますか。デフォルトは false です。
- file_client_args: (オプションのパラメータ) ファイル クライアント設定。デフォルトでは、ディスク方式が使用されます。つまり、ファイル パスが指定されている場合は、それを直接読み取ります。
1.3 クラス内の関数(以下すべて__init__を省略)
- _load_points: 点群データをロードします
__call__
: ファイルから点群データを取得するコールバック関数。結果は点群データを含む辞書です。__repr__
: モジュールの説明文字列を返します。
2. マルチスイープからのロードポイント
2.1 機能: マルチフレーム点群データの読み込み
2.2 初期化パラメータ
- weaks_num: フレーム数、デフォルトは 10
- load_dim: デフォルトは 5
- use_dim: デフォルト [0、1、2、4]、タイムスタンプに対応する 4 つの次元の差
- time_dim: 各ポイントのタイムスタンプの次元、デフォルトは 4
- file_client_args: 上記と同じ
- Pad_empty_掃引: 点群が空の場合、キーフレームを繰り返すかどうか、デフォルトは false です。
- Remove_close: 最も近い点を削除します。デフォルトは false
- test_mode: true の場合、ランダムにサンプリングされず、最も近い N フレームのみが選択されます。デフォルトは false です。
2.3 クラス内の関数
- _load_points: 点群データをロードします
- _remove_close: 原点から特定の半径にあるすべての点を削除します
__call__
: ファイルから点群データを取得するコールバック関数。結果は点群データを含む辞書です。__repr__
: モジュールの説明文字列を返します。
3.Annotations3D をロードする
3.1 機能: 3D 注釈ボックスをロードし、インスタンス マスクと点群セマンティック マスクを関連フィールドにカプセル化します。
3.2 初期化パラメータ
- with_bbox_3d: 3D ボックスをロードするかどうか、デフォルトは true です
- with_label_3d: 3D ボックスのラベルをロードするかどうか、デフォルトは true です
- with_attr_label: 属性ラベルをロードするかどうか。デフォルトは false です。
- with_mask_3d: 点群 3D インスタンス マスクをロードするかどうか。デフォルトは false です。
- with_seg_3d: 点群 3D セマンティック マスクをロードするかどうか。デフォルトは false です。
- with_bbox: 2D ボックスをロードするかどうか、デフォルトは false
- with_label: 2D ラベルをロードするかどうか、デフォルトは false
- with_mask: 2D インスタンス マスクをロードするかどうか。デフォルトは false です。
- with_seg: 2D セマンティック マスクをロードするかどうか。デフォルトは false です。
- with_bbox_ Depth: 2.5D ボックスをロードするかどうか、デフォルトは false
- Poly2mask: ポリゴンを label に変換するかどうか
二进制掩码
。デフォルトは true です。 - seg_3d_dtype: 3D セマンティック マスク タイプ、デフォルトは int64
- file_client_args
3.3 クラス内の関数
以下の処理関数の具体的な処理は mmdet3d.CustomDataset クラス内で行われます。
- _load_bboxes_3d: 3D ボックスの注釈をロードし、
gt_bboxes_3d、bbox3d_fields
2 つのキーを返します - _load_bboxes_ Depth: 2.5D ボックス注釈をロードし、
center2d、depths
2 つのキーを返します。 - _load_labels_3d: ロードラベルアノテーション、返された
gt_labels_3d
キー - _load_attr_labels: ロードラベル属性、返された
attr_labels
キー - _load_masks_3d: 3D マスク注釈をロードし、
pts_instance_mask、pts_mask_fields
2 つのキーを返します。 - _load_semantic_seg_3d: 3D セマンティック セグメンテーション アノテーションをロードし、
pts_semantic_mask、pts_seg_fields
2 つのキーを返します __call__
: 複数の種類のアノテーション結果のうち 1 つを返します。__repr__
: モジュールの説明文字列を返します。
4. オブジェクトサンプル
4.1 機能: グラウンド トゥルース (gt) オブジェクトをデータにサンプリングする
4.2 初期化パラメータ
- db_sampler (dict): ベンチマーク データ サンプラーの構成
- Sample_2d (bool): 2D 画像のパッチを画像にコピーするかどうか。マルチモーダル カットアンドペーストの場合、true に設定する必要があります。デフォルトは false です。
- use_ground_plane (bool): 3D ラベルを調整するためにグランド プレーンを使用するかどうか、デフォルトは false
4.3 クラス内の関数
- Remove_points_in_boxes (静的関数): サンプリングされた Bbox 内の点群を削除します。
__call__
: 実数値オブジェクトをデータにサンプリングし、返された結果にはgt_bboxes_3d、gt_labels_3d、points
3 つのキーが含まれます__repr__
: モジュールの説明文字列を返します。
5.グローバルRotScaleTrans
5.1 機能: 3D シーン アプリケーションのグローバル座標系での回転、ズーム、および移動
5.2 初期化パラメータ
- rot_range (list[float]): 回転角度範囲、デフォルト [-0.78539816, 0.78539816] ( に近い
[-pi/4, pi/4]
) - scale_ratio_range (list[float]): スケーリング係数、デフォルト [0.95, 1.05]
- translation_std (list[float]): 翻訳ノイズのラベル付けの差。シーンはノイズを追加することでランダムに翻訳されます。ノイズ方法はガウス分布からサンプリングされます。デフォルトは [0, 0, 0]
- shift_height (bool): 高さの値をシフトするかどうか。デフォルトは false です。
5.3 クラス内の関数
- _trans_bbox_points: bbox と点群を変換します
- _rot_bbox_points: Bbox と点群を回転します
- _scale_bbox_points: スケール bbox と点群
- _random_scale: スケール係数をランダムに設定します
- update_transform: 変換行列を更新します。
__call__
: bbox および点群の回転、拡大縮小、移動__repr__
:
6.ランダムフリップ3D
6.1 機能: 点群と bbox をランダムに反転します。
注: 入力辞書に「flip」キーワードが含まれている場合、フラグが使用されます。それ以外の場合は、init で指定された比率によってランダムに決定されます。
6.2 初期化パラメータ
- sync_2d (ブール値、オプション): 2D 画像に反転を適用するかどうか。true の場合、3D での相対反転を 2D 画像に適用します。false の場合、2D 画像を独立してランダムに回転するかどうかを決定します。デフォルトは true です。
- flick_ratio_bev_horizontal (float、オプション): 水平方向の反転率、デフォルトは 0.0
- flick_ratio_bev_vertical (float、オプション): 垂直方向の反転率、デフォルトは 0.0
**kwargs
: 変更可能なキーと値のペアのパラメーター
6.3 クラス内の関数
- random_flip_data_3d: ランダムなフリップ 3D データ
- update_transform: 変換行列を更新します。
__call__
: 2D 画像とその注釈を反転しながら、点群 (bbox3d_fields) を反転します。__repr__
7. PointsRangeFilter
7.1 機能: 範囲による点群のフィルター
7.2 初期化パラメータ
- point_cloud_range (list[float]): 点群範囲
7.3 クラス内の関数
__call__
: 点群を範囲でフィルタリングします__repr__
8. オブジェクト範囲フィルター
8.1 機能: 範囲ごとに障害物をフィルタリング
8.2 初期化パラメータ
- point_cloud_range (list[float]): 点群範囲
8.3 クラス内の関数
__call__
: 点群を範囲でフィルタリングします__repr__
9. オブジェクト名フィルター
9.1 機能: カテゴリ名に従って真値障害をフィルタリングします。
9.2 初期化パラメータ
- class (list[str]): トレーニングのために保持する必要があるクラス名のリスト
9.3 クラス内の関数
__call__
: 障害物を名前でフィルタリングします__repr__
10.ポイントシャッフル
10.1 機能: 入力点群の順序を入れ替える(シャッフル)
10.2 初期化パラメータ: なし
10.3 クラス内の関数
__call__
: 点群のソートを中断します__repr__
11. デフォルトフォーマットバンドル3D
11.1 機能: デフォルトで 3D 情報をフォーマットしてパックする
注: これは、主に「proposals」、「gt_bboxes」、「gt_labels」、「gt_masks」、および「gt_semantic_seg」を含む、ボクセルの共通フィールドをフォーマットするためのパイプラインを簡素化します。フィールド型の変換は次のとおりです。
- img: (1)transpose, (2)to tensor, (3)to DataContainer (stack=True)
- proposals: (1)to tensor, (2)to DataContainer
- gt_bboxes: (1)to tensor, (2)to DataContainer
- gt_bboxes_ignore: (1)to tensor, (2)to DataContainer
- gt_labels: (1)to tensor, (2)to DataContainer
11.2 初期化パラメータ
- class_names: クラスのリスト
- with_gt(bool): true 値を使用するかどうか。デフォルトは true です。
- with_label(bool): ラベルを使用するかどうか、デフォルトは true
11.3 クラス内の関数
__call__
: 汎用フィールドの変換と書式設定を実行し[results]
、__repr__
: モジュールを説明する文字列を返します。
12.コレクト3D
12.1 機能: 特定のタスクに関するデータローダーからデータを収集する
注:
1) このタイプは通常、データ ローダー パイプライン最后阶段
、「img」、「proposals」、「gt_bboxes」、「gt_bboxes_ignore」、「gt_labels」、「gt_masks」などの典型的なキーワード セットとして使用されます。 2) 常に挿入され
ますimg_meta
。データ項目、内容は に依存しmeta_keys
、デフォルトには以下が含まれます。
- 'img_shape': 网络中输入图像尺寸,类型 tuple ,维度(h, w, c). 注意图像在
右/下可能是0扩充(pad)
- 'scale_factor': 预处理尺度
- 'flip': 图像是否翻转
- 'filename': 图像文件名路径
- 'ori_shape': 图像原始形状,tuple (h, w, c)
- 'pad_shape': 扩充后图像尺寸
- 'lidar2img': lidar 到 图像旋转矩阵
- 'depth2img': depth 到图像旋转矩阵
- 'cam2img': 相机坐标系到图像坐标洗旋转矩阵
- 'pcd_horizontal_flip': 点云是否水平翻转
- 'pcd_vertical_flip': 点云是否垂直翻转
- 'box_mode_3d': 3D box 模式
- 'box_type_3d': 3D box 类型
- 'img_norm_cfg': 正则化信息dict
- mean: 每个channel平均值
- std: 每个channel标准差
- to_rgb: 是否由bgr转换为rgb
- 'pcd_trans': 点云旋转矩阵
- 'sample_idx': 样本关键帧索引
- 'pcd_scale_factor': 点云尺度因子
- 'pcd_rotation': 点云旋转
- 'pts_filename': 点云文件路径名
12.2 初期化パラメータ
- キー (Sequence[str]): 収集されたキーワード
mmcv.DataContainer
meta_keys (Sequence[str]、オプション): に変換するために使用され、 に保存されるメインキーdata[img_metas]
。
12.3 内部クラス関数
__call__
: 結果内のキーワードを収集します__repr__
: モジュールを説明する文字列を返します。