CenterPoint ソースコードの解釈処理 (1)

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_fields2 つのキーを返します
  • _load_bboxes_ Depth: 2.5D ボックス注釈をロードし、center2d、depths2 つのキーを返します。
  • _load_labels_3d: ロードラベルアノテーション、返されたgt_labels_3dキー
  • _load_attr_labels: ロードラベル属性、返されたattr_labelsキー
  • _load_masks_3d: 3D マスク注釈をロードし、pts_instance_mask、pts_mask_fields2 つのキーを返します。
  • _load_semantic_seg_3d: 3D セマンティック セグメンテーション アノテーションをロードし、pts_semantic_mask、pts_seg_fields2 つのキーを返します
  • __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、points3 つのキーが含まれます
  • __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_horizo​​ntal (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.DataContainermeta_keys (Sequence[str]、オプション): に変換するために使用され、 に保存されるメインキーdata[img_metas]

12.3 内部クラス関数

  • __call__: 結果内のキーワードを収集します
  • __repr__: モジュールを説明する文字列を返します。

つづくCenterPointのソースコード解釈処理(2)

おすすめ

転載: blog.csdn.net/weixin_36354875/article/details/127757667