---
title: ZODデータのアップロード
slug: api-guide/ja/zod
docTags: 
createdAt: 2024-12-16T14:25:49.794Z
---

このチュートリアルでは、[Zenseact Open Dataset（ZOD）](https://zod.zenseact.com/)を使用してさまざまな[概要](docId\:M9gJ_7GE3M0jf7hvLohJ2)をアップロードする手順を説明します。このページの目的は、記録データをKognicシーンに変換するために必要な手順をいくつか示すことです。

:::ExpandableHeading
## 前提条件と依存関係

1\. このガイドに沿って進めるには、[Zenseact Open Dataset](https://zod.zenseact.com/download/)からデータをダウンロードする必要があります。データは以下のように構成されている必要があります：

```text
zod
├── sequences
│   ├── 000000
│   ├── 000002
│   ├── ...
└── trainval-sequences-mini.json
```

2\. また、データを読み込むためのいくつかの抽象化を提供するZOD PythonパッケージをPyPIからインストールする必要があります：

```bash
pip install zod
```

3\. Kognicアカウントと、KognicのPythonクライアントがインストールされている必要があります。まだ完了していない場合は、[クイックスタート](docId\:WYm9o4UavbHvEioJEw8Ze)ガイドをお読みください。
:::

このガイドでは、このページのすべてのスニペットの完全なソースファイルを含む[Kognic IO ZODサンプルリポジトリ](https://github.com/annotell/kognic-io-examples-python/blob/30c725ad38a1e5a163c28f10163022d4d522acc8/examples/zod)のサンプルコードを使用して、ZODデータを使用したシーンのアップロードプロセスを説明します。データが利用可能でKognic認証が設定されている場合、サンプルは実行可能です。

::::Tabs
:::Tab{title="Cameras Sequence"}
サンプルコードでは、トップレベルでKognic IOクライアントを初期化し、関数を使用してZODデータから（場合によっては複数の）シーンを一度に作成します。

```python
if __name__ == "__main__":
    client = KognicIOClient()

    upload_cameras_sequence_scenes(
        zod_path=Path("/path/to/zod"),  # change me
        zod_version="mini",
        client=client,
        max_nr_scenes=1,
        max_nr_frames=10,
        dryrun=False,
    )
```
:::

:::Tab{title="Lidars and Cameras Sequence"}
この例は、カメラのみのシーケンスと大枠で同じ構造に従い、以下が追加されています：

- LiDARセンサー
- 2Dと3Dの[座標系](docId:3jKwDhQCmVNvBuZboUZMr)間の投影を可能にする[キャリブレーション概要](docId:40uJEbw5cST4e4djxsgty)
- ZODのパック済みNumPy配列からの点群の変換
- 各フレームの自車両ポーズの変換

前述と同様に、トップレベルでKognic IOクライアントを初期化し、関数を使用してZODデータから（場合によっては複数の）シーンを一度に作成します。
:::

:::Tab{title="Aggregated Lidars and Cameras Sequence"}
この例は、LiDARとカメラのシーケンス例と同じ構造に従っています。

[集約LiDARとカメラシーケンス](docId\:l_TirodKSb1iH5Y5CTH9z)は、LiDARデータがフレーム全体にわたって単一の点群に集約される、LiDAR＋カメラシーケンスシーンの特殊なケースです。これにより、すべてのフレームにわたってシーン全体を表す密な静的点群が得られます。

集約シーンは、すべてのフレームに点群を提供してKognicプラットフォームに集約を処理させることで作成できます。または、最初のフレームに点群を指定し、その後のフレームには何も指定しないことで、事前集約してアップロードすることもできます。

ZODデータの場合、フレームごとの点群のみが利用可能なため、サンプルではすべてのフレームに点群をアップロードし、集約をプラットフォームに委ねます。そのため、以下の点を除いて、LiDAR＋カメラシーケンスの例と非常に似ています：

1\. シーンタイプが異なります：LidarsAndCamerasSequenceの代わりにAggregatedLidarsAndCamerasSequenceを使用します。
:::
::::

```python
def convert_scene(zod_sequence: ZodSequence, external_id: str, max_nr_frames: int) -> AggregatedLidarsAndCamerasSequence:
    frames = convert_frames(zod_sequence, max_nr_frames)
    return AggregatedLidarsAndCamerasSequence(external_id=external_id, frames=frames, calibration_id="<to be set later>")
```

2\. `Frames`は集約シーン固有の型です。

```python
frames.append(
    ALCSFrame(
        relative_timestamp=ns_to_ms(frame_ts_ns) - start_ts_ms,
        frame_id=str(frame_ts_ns),
        images=[convert_zod_camera_frame_to_image(camera_frame)],
        point_clouds=[point_cloud],
        ego_vehicle_pose=convert_to_ego_vehicle_pose(ego_pose),
        unix_timestamp=frame_ts_ns,
    )
)
```

3\. 自車両ポーズデータが必須です。

それ以外の点では、2つのアプローチは非常に似ています。`Lidars and Cameras Sequence`タブを参照してください。
