データの登録

このステップでは、3次元アノテーションのサンプルデータを使って、プロジェクトにデータを登録します。

3次元プロジェクトは、KITTI形式またはAnnofab 点群形式(KITTIベース)のデータに対応しています。サンプルデータはPandaSetのシーケンス001~003を改変したデータです。シーケンス001,002はプロジェクト作成時に利用した「PandaSet」テンプレートと同じデータです。

シーケンス001,002のデータは既にプロジェクトに存在するので、シーケンス003のデータをプロジェクトに登録しましょう。

登録するデータの準備

以下の通り操作して、シーケンス003のZIPファイルを生成してください。

$ curl -OL https://github.com/kurusugawa-computer/annofab-sample-data-3dpc/archive/refs/heads/main.zip

$ unzip main.zip

$ ls annofab-sample-data-3dpc-main/
001  002  003  README.md

$ cd annofab-sample-data-3dpc-main/

$ tree 003
003
├── annofab_inputdata.conf
├── calib-back_camera
│   ├── 003-0.txt
│   └── 003-10.txt
├── calib-front_camera
│   ├── 003-0.txt
│   └── 003-10.txt
├── calib-left_camera
│   ├── 003-0.txt
│   └── 003-10.txt
├── calib-right_camera
│   ├── 003-0.txt
│   └── 003-10.txt
├── image-back_camera
│   ├── 003-0.jpg
│   └── 003-10.jpg
├── image-front_camera
│   ├── 003-0.jpg
│   └── 003-10.jpg
├── image-left_camera
│   ├── 003-0.jpg
│   └── 003-10.jpg
├── image-right_camera
│   ├── 003-0.jpg
│   └── 003-10.jpg
├── scene.meta
└── velodyne
    ├── 003-0.bin
    └── 003-10.bin

9 directories, 20 files

$ cd 003
$ zip -r ../003.zip *


シーケンス003の中身

シーケンス003のフォルダ構成やファイルを簡単に説明します。

  • velodyne/*.bin:点群データ
  • image-_/_.jpg:カメラ画像
  • calib-_/_.txt:カメラのキャリブレーション情報
  • scene.meta:フォルダのマッピング情報やカメラの視野角情報など
  • annofab_inputdata.conf:入力データIDのプレフィックスなど、入力データの登録用の設定情報

詳細はAnnofab 点群形式(KITTIベース)または3次元プロジェクトの入力データ登録を参照してください。

入力データ/補助情報の登録

入力データ画面に遷移して、「入力データをアップロード」ボタンを押してください。そして、モーダルダイアログで003.zipをアップロードしてください。数分待つと入力データと補助情報が登録されます。

登録処理が完了すると、入力データが2件追加されます。入力データ名「003-0.bin」の「入力データ詳細」を押して、補助情報も登録されていることを確認してください。

タスクの作成

登録された入力データ2件を含むタスク「003」を作成します。タスク一覧画面の「タスクを作成」ボタンを押してください。

入力データとタスクの関係をCSVで指定して、タスクを作成します。以下の通り操作してください。

  1. 「入力データをCSVで個別に指定」タブを選択する
  2. foo.csv(以下参照)を作成する。
    • 1列目がタスクID、2列目は空欄(どのような値でもよい)、3列目は入力データID
  3. アップロードするCSVにfoo.csvを選択して、「タスクを作成」ボタンを押す。

003,,003-0
003,,003-10

数分待つとタスク「003」が作成されます。アノテーションエディタを開いて、正しくデータが登録されていることを確認してください。

補足

annofab-3dpc-editor-cliを利用してデータを登録する

複数のシーケンスをAnnofabに登録する場合は、annofab-3dpc-editor-cliを使うと便利です。annofab-3dpc-editor-cliはAnnofabの3次元プロジェクトを操作するCLIです。

以下のコマンドは、シーケンス003の入力データと補助情報を登録して、タスクまで作成します。このコマンドをシェルスクリプトなどに記載すれば、複数のシーケンスを1回の操作でAnnofabに登録できます。

詳細はanno3d project upload_sceneコマンドを参照してください。

$ cd annofab-sample-data-3dpc-main/
  
$ anno3d project upload_scene --project_id ${ANNOFAB_PROJECT_ID} \
  --task_id_prefix scene1-"003" \
  --sensor_height 0 \
  --upload_kind task \
  --scene_path 003/scene.meta \
  --force

📘

anno3d project upload_sceneコマンドでは、annofab_inputdata.confは不要です。annofab_inputdata.confに記載されている情報は、コマンドライン引数で指定します。

annofab-cliを利用してタスクを作成する

作成したいタスクが数件の場合は、annofabcli task putコマンドを利用すると便利です。

以下のコマンドは、タスク003を作成しています。コマンドに入力データIDとタスクIDを直接指定できるので、「CSVを作成してアップロードする」方法よりも、操作が簡単です。

$ annofabcli task put --project_id ${ANNOFAB_PROJECT_ID} \
 --json '{"003":["003-0","003-10"]}'

まとめ

以上で、3次元アノテーションのチュートリアルは終了です。このチュートリアルでは、「PandaSet」テンプレートを利用してプロジェクトを作成し、3次元アノテーションエディタでバウンディングボックス、セマンティック/インスタンスセグメント、検査コメントを作成しました。また、サンプルデータを利用して3次元プロジェクトにデータを登録しました。

3次元アノテーションエディタには多くの機能があります。今回紹介した3次元アノテーションエディタの機能は、全体の半分以下です。是非マニュアルを参照して、いろいろな機能を使ってみてください。