Mở rộng khả năng nhận diện trên các nền tảng AV với NVIDIA Omniverse NuRec

Một lớp cảm nhận (perception stack) được định hình bởi phương tiện vận hành nó. Khi chuyển cùng một phần mềm sang một dòng xe mới—ví dụ, từ SUV sang sedan hoặc một biến thể xe khác trong danh mục sản phẩm—cách nó cảm nhận thế giới sẽ thay đổi. Vị trí đặt cảm biến, hiệu chuẩn, trường nhìn, các vật che khuất, hình học thân xe, thời gian và phạm vi bao phủ đều thay đổi. Một đèn giao thông có thể xuất hiện ở một phần khác của khung hình. Một lề đường có thể trở nên khó nhìn hơn. Một người đi bộ gần rìa phạm vi bao phủ có thể trở nên khó xác định. Khi một ngăn xếp lái tự động mở rộng sang các dòng xe và biến thể mới, các nhà phát triển phải tính đến những khác biệt này ngay cả khi ngăn xếp cảm nhận cơ bản vẫn giữ nguyên.

Việc thu thập và gán nhãn một bộ dữ liệu thực tế mới cho mỗi dòng xe là tốn kém và có thể không khả thi trong giai đoạn đầu của quá trình phát triển xe. Các đội xe mới có thể chưa sẵn có, và các điều kiện hiếm hoi không phải lúc nào cũng có thể được ghi lại. Dữ liệu lái xe thực tế vẫn rất quan trọng để xác thực và kiểm tra hiệu suất hệ thống, nhưng dữ liệu tổng hợp có thể giúp các nhóm thích ứng các mô hình trước khi có sẵn một bộ dữ liệu đầy đủ cho dòng xe mục tiêu.

Thách thức trong việc thích ứng dòng xe là chuẩn bị phần mềm nhận thức cho một phương tiện có thể chưa tồn tại, và mở rộng phần mềm đó qua các biến thể nền tảng mà không cần thu thập và gán nhãn một tập dữ liệu lớn cho từng loại.

NVIDIA Omniverse NuRec giúp quá trình này trở nên thực tế hơn. Nó bắt đầu từ các chuyến lái thực tế đã được ghi lại, tái tạo từng khung cảnh, và hiển thị các góc nhìn camera mới cho cấu hình xe mục tiêu.

Các nhà phát triển có thể tái sử dụng dữ liệu thực tế để đặt ra các câu hỏi như:

  1. Kịch bản này sẽ trông như thế nào từ góc nhìn của xe mục tiêu?
  2. Những hệ thống lái hiện có nào bao phủ tốt chiếc xe mới?
  3. Những thay đổi về hình học tạo ra các điểm yếu ở đâu?
  4. Những khoảng trống nào cần thu thập dữ liệu thực tế?

Bài viết này trình bày cách điều chỉnh một bộ cảm nhận (perception stack) cho một bộ cảm biến mới bằng cách sử dụng dữ liệu lái xe hiện có, thông qua bốn bước sau:

  1. Kết hợp một hành trình đã được tái tạo với cấu hình rig mục tiêu.
  2. Tạo hình ảnh các góc nhìn mục tiêu.
  3. Tinh chỉnh các khung hình với NVIDIA Harmonizer.
  4. Huấn luyện mô hình nhận thức trên đầu ra.

Hướng dẫn này sử dụng các cảnh được tái tạo từ Bộ dữ liệu Physical AI NuRec của NVIDIA để hoàn thành bốn bước.

Cách NuRec hỗ trợ thích ứng với dòng xe

NuRec sử dụng kỹ thuật làm nổi bật Gaussian 3D để tái tạo môi trường thực tế từ dữ liệu cảm biến và hiển thị chúng cho mô phỏng. Đối với việc thích ứng với dòng xe, NuRec tái tạo một chuyến đi thực tế được ghi lại bởi một phương tiện hiện có và hiển thị các luồng camera mới từ góc nhìn của phương tiện mục tiêu.

Hai khả năng của NuRec đặc biệt hữu ích cho việc thích ứng với dòng xe.

  • Tổng hợp ảnh từ góc nhìn mới: NuRec có thể render cảnh bằng gsplat, vốn chiếu các Gaussian qua mô hình camera đã chỉ định. Khả năng này cho phép người dùng thay đổi extrinsics, intrinsics, trường nhìn (field of view) và mô hình ống kính của camera, bao gồm các cấu hình pinhole, fisheye và f-theta.
  • Dữ liệu cảnh và chú thích có thể tái sử dụng: Cảnh được tái tạo giữ lại các quỹ đạo rig ban đầu, hiệu chuẩn theo từng camera, các đường theo dõi đối tượng động và dữ liệu bản đồ. Những tài sản này có thể được sử dụng để căn chỉnh hoặc thích ứng các nhãn như đối tượng, làn đường, đèn giao thông và ranh giới đường trong các góc nhìn mới được render.
Architecture diagram of the NuRec carline-adaptation pipeline. A reconstructed USDZ scene passes through the target carline’s sensor rig, NVIDIA Harmonizer, and perception-model training.
Hình 1. Quy trình thích ứng dòng xe NuRec. Một cảnh USDZ được tái tạo được render qua bộ cảm biến của dòng xe mục tiêu, được tinh chỉnh bằng Harmonizer và được sử dụng cho việc huấn luyện nhận thức

Thích ứng mô hình nhận thức sang một dòng xe mới với NuRec

Quy trình sau đây cho thấy các nhóm phát triển có thể hiển thị một cảnh quay đã được tái tạo từ một lần lái xe thực tế thông qua một bộ camera mục tiêu, tinh chỉnh các khung hình kết quả và chuẩn bị dữ liệu cho việc huấn luyện mô hình nhận thức.

Bước 1. Tải xuống một cảnh đã được tái tạo

Bộ dữ liệu NuRec Physical AI trên Hugging Face bao gồm hơn 1.500 cảnh lái xe được tái tạo bằng mạng nơ-ron. Mỗi cảnh kéo dài khoảng 20 giây và được tái tạo từ sáu góc nhìn camera: một góc nhìn rộng phía trước 120 độ, một góc nhìn telephoto phía trước 30 độ, các góc nhìn chéo trái và chéo phải 120 độ, cùng các góc nhìn sau trái và sau phải 70 độ.

Bộ dữ liệu NuRec yêu cầu xác thực. Chấp nhận giấy phép, xác thực bằng mã thông báo Hugging Face và tải xuống một cảnh.

import os
from huggingface_hub import login, snapshot_download

login(token=os.getenv("HF_TOKEN"))

# Download one reconstructed scene (USDZ) from the 26.04 release
snapshot_download(
    repo_id="nvidia/PhysicalAI-Autonomous-Vehicles-NuRec",
	repo_type="dataset",
    allow_patterns="sample_set/26.04_release//*",
)

Nếu sử dụng tác nhân mã hóa, hãy sao chép kho lưu trữ NVIDIA/nurec-skills. Kho lưu trữ này bao gồm các kỹ năng để tải xuống các bộ dữ liệu Physical AI, kết xuất bằng NuRec và tinh chỉnh các khung hình đầu ra.

git clone https://github.com/NVIDIA/nurec-skills.git

Bước 2. Kết xuất từ bộ cảm biến của dòng xe mục tiêu

A GIF showing the original view and the new view after using NuRec to re-render the video.
Hình 2. Cảnh được tái tạo lại bằng NuRec, được hiển thị từ bộ máy quay ban đầu và bộ máy quay mục tiêu đã bị dịch chuyển

Hướng dẫn này sử dụng một bộ máy quay mục tiêu tổng hợp được cung cấp kèm theo mẫu công khai. Tên máy quay, tư thế, độ phân giải và các tham số ống kính của nó chỉ mang tính chất minh họa.

Bộ rig tổng hợp được cung cấp chứa một camera mục tiêu, vì vậy hướng dẫn này tạo ra một luồng dữ liệu từ camera mục tiêu. Trong tệp rig, mỗi mục cảm biến xác định tên camera được phân tách bằng dấu hai chấm, độ phân giải hình ảnh, mô hình ống kính F-Theta, các tham số nội tại và tư thế từ camera đến rig.

NRE chuyển đổi tên được phân tách bằng dấu hai chấm thành một ID camera logic. Ví dụ, nó chuyển đổi camera:front:synthetic:120fov thành camera_front_synthetic_120fov. Để thêm một camera mục tiêu khác, hãy thêm một mục khác vào rig.sensors. Đặt cho nó một tên duy nhất và cung cấp chiều rộng, chiều cao, mô hình ống kính, các tham số nội tại và phép biến đổi nominalSensor2Rig_FLU của riêng nó.

Đặt vị trí đầu vào và đầu ra:

export SCENE_DIR=/absolute/path/to/scene
export SCENE_FILE=.usdz
export RIG_DIR=/absolute/path/to/rig
export RIG_FILE=minimal-synthetic-target-rig.json
export OUTPUT_DIR=/absolute/path/to/output
mkdir -p "$OUTPUT_DIR"

Gắn cố định container NuRec công khai với digest bất biến của nó và kéo hình ảnh:

export NUREC_IMAGE='nvcr.io/nvidia/nre/nre-ga:26.04.01@sha256:97f43e7130c5636ce3e80ea3184d97f56a87fdd989b05cce42230881dbdea284'
docker pull "$NUREC_IMAGE"
docker image inspect "$NUREC_IMAGE" --format '{{range .RepoDigests}}{{println .}}{{end}}'

Chạy quá trình xuất quỹ đạo và kết xuất dưới dạng các thao tác container riêng biệt. Xuất quỹ đạo của camera mục tiêu:

docker run --rm --gpus all --shm-size=64g \
  -v "$SCENE_DIR":/inputs/scene:ro \
  -v "$RIG_DIR":/inputs/rig:ro \
  -v "$OUTPUT_DIR":/outputs \
  "$NUREC_IMAGE" export-custom-rig-trajectory \
    --artifact-path="/inputs/scene/$SCENE_FILE" \
    --rig-json="/inputs/rig/$RIG_FILE" \
    --output=/outputs/custom_rig_trajectories.json

Tiếp theo, chạy một lần kết xuất thưa (sparse render) của một camera mục tiêu để xác nhận cấu hình. Trong ví dụ này, hãy chọn camera mục tiêu camera_front_synthetic_120fov vì bộ khung mục tiêu (target rig) trong ví dụ định nghĩa một camera hướng về phía trước. Lệnh kết xuất sẽ tải tệp quỹ đạo đã xuất và sau đó sử dụng –camera-id để chọn camera cần kết xuất.

Cảnh USDZ được tái tạo bằng cách sử dụng sáu camera nguồn: một camera góc rộng phía trước 120 độ, một camera telephoto phía trước 30 độ, các camera chéo trái và chéo phải 120 độ, và các camera sau trái và sau phải 70 độ. Một camera mục tiêu không cần phải tương ứng từng cặp một với bất kỳ camera nguồn nào trong số này. Nó có thể sử dụng vị trí, hướng, độ phân giải, trường nhìn hoặc hiệu chỉnh khác, miễn là tư thế (pose) của nó được biểu diễn trong cùng khung tọa độ rig và mô hình ống kính của nó được trình xuất (exporter) hỗ trợ. Các camera được đặt quá xa ngoài quỹ đạo quan sát hoặc hướng về các khu vực có phạm vi phủ sóng của camera nguồn hạn chế có thể tạo ra các bản render chất lượng thấp hơn.

Hướng dẫn này sử dụng một camera mục tiêu hướng về phía trước để thích ứng với một góc nhìn khác; ví dụ, để sử dụng một camera sau trái, trước tiên hãy thêm một cảm biến sau trái vào tệp JSON của rig mục tiêu, cung cấp cho nó các thông số ngoại sai (extrinsics) từ camera sau trái sang rig, xuất lại quỹ đạo, và truyền ID logic chuẩn hóa của nó vào đối số –camera-id.

docker run --rm --gpus all --shm-size=64g \
  -v "$SCENE_DIR":/inputs/scene:ro \
  -v "$OUTPUT_DIR":/outputs \
  "$NUREC_IMAGE" render \
    --artifact-path="/inputs/scene/$SCENE_FILE" \
    --output-dir=/outputs/smoke \
    --custom-rig-trajectory=/outputs/custom_rig_trajectories.json \
    --no-replicate-training-views \
    --renderer=default \
    --image-format=png \
    --frame-step=30 \
    --image-scale=1 \
    --frame-naming=frame-end-timestamp \
    --camera-id=camera_front_synthetic_120fov

Kiểm tra các khung hình để đảm bảo rằng tư thế, trường nhìn và dấu thời gian là chính xác. Sau khi xem xét các lượt render thưa, hãy render toàn bộ chuỗi với `–frame-step=1` cho tất cả các camera mục tiêu. Lặp lại –camera-id cho mỗi camera đã được xác thực trong rig mục tiêu.

Bước 3. Tinh chỉnh các khung hình đã render

Neural rendering có thể để lại các lỗi phụ thuộc vào góc nhìn, màu sắc hoặc tông màu không nhất quán, và các đối tượng động được tái tạo kém. NVIDIA Harmonizer là một mô hình hậu xử lý công khai, có khả năng nhận biết thời gian, giúp sửa chữa các lỗi trong NuRec và các phương pháp render thần kinh liên quan. Nó cải thiện chất lượng hình ảnh, nhưng không thể sửa chữa hiệu chỉnh sai lệch, khôi phục phạm vi cảnh chưa từng được tái tạo, hay thay thế việc xác thực với camera mục tiêu.

Kỹ năng nurec-fixer trong NVIDIA/nurec-skills bao gồm thiết lập, suy luận, đánh giá và tinh chỉnh tùy chọn Harmonizer. Trước tiên, hãy xác thực máy chủ trước khi tải xuống mô hình.

git clone https://github.com/NVIDIA/nurec-skills.git
python nurec-skills/skills/nurec-fixer/scripts/validate_setup.py

Chấp nhận các giấy phép mô hình trên Hugging Face, sao chép kho lưu trữ Harmonizer, xây dựng hình ảnh thời gian chạy của nó và tải xuống các điểm kiểm tra đã phát hành:

git clone https://github.com/NVIDIA/harmonizer.git
cd harmonizer
docker build -t harmonizer-cosmos-env -f Dockerfile.cosmos .
hf auth login
./download_checkpoints.sh
test -f models/diffusion_harmonizer.pkl
test -d src/checkpoints/nvidia/Cosmos-Predict2-0.6B-Text2Image

Chạy từng chuỗi camera một. Gắn kết thư mục gốc của bản dựng để đảm bảo đầu ra—được ghi bên cạnh thư mục đầu vào—được lưu trữ trên máy chủ:

export HARMONIZER_DIR=/absolute/path/to/harmonizer
export RENDER_ROOT=/absolute/path/to/output/render
export CAMERA_ID=camera_front_synthetic_120fov
docker run --rm --gpus all --ipc=host \
 --entrypoint python \
 -v "$HARMONIZER_DIR":/work \
 -v "$RENDER_ROOT":/frames \
 -w /work/src \
 harmonizer-cosmos-env \
 inference_pix2pix_turbo_harmonizer.py \
 --input_image="/frames/$CAMERA_ID" \
 --model_path=/work/models/diffusion_harmonizer.pkl \
 --model_identifier=harmonized \
 --timestep=250 \
 --resolution=1024 \
 --use_sched
Video comparing raw NuRec output with NVIDIA Harmonizer output from the same rendered camera viewpoint. The raw view contains visible sky artifacts that are reduced in the Harmonizer output.
Hình 3. So sánh trực quan giữa các bản dựng NuRec thô và kết quả từ NVIDIA Harmonizer. Harmonizer giảm các lỗi hiển thị trên bầu trời và cải thiện tính nhất quán về hình ảnh (bên phải)

Bước 4. Huấn luyện mô hình nhận thức

Sau khi tạo các tập dữ liệu được render bởi NuRec cho một dòng xe mới, hãy xác thực kết quả đầu ra trước khi đưa vào quy trình huấn luyện nhận thức. Xử lý tập dữ liệu mới này tương tự như dữ liệu camera thực tế được thu thập từ các phương tiện. Sau đó, chuẩn bị nó để sử dụng dựa trên nhu cầu của mô hình nhận thức.

Chương trình thích ứng dòng xe

NVIDIA đã đánh giá quy trình làm việc này trong một chương trình lái xe tự hành nội bộ, chương trình này cần hỗ trợ một cấu hình camera mới. Nhóm đã có một thư viện các chuyến lái xe hiện có từ một loại xe khác, nhưng dữ liệu của dòng xe mục tiêu vẫn chưa sẵn có.

Bar chart showing precision and recall changes for an internal NVIDIA perception network trained on NuRec data, adapted from one carline to another. All displayed object categories show positive changes relative to the baseline.
Hình 4. Mức tăng tương đối về độ chính xác và độ nhạy của phát hiện đối tượng sau khi huấn luyện trên dữ liệu tổng hợp do NuRec tạo ra cho dòng xe mục tiêu, so với đường cơ sở zero-shot. VRU là viết tắt của người tham gia giao thông dễ bị tổn thương

Tự động hóa quy trình làm việc với các kỹ năng tác nhân của NuRec

Kho lưu trữ NVIDIA/nurec-skills đóng gói các bước chính dưới dạng các kỹ năng tác nhân. Một tác nhân lập trình có thể sử dụng physical-ai-datasets để xác định vị trí và tải xuống các cảnh, nre để hiển thị chúng, và nurec-fixer để tinh chỉnh kết quả đầu ra.

Để xem ví dụ toàn diện, hãy xem buổi phát trực tiếp về các kỹ năng của tác nhân tái tạo thần kinh.

Video 1. Xem cách NVIDIA Omniverse NuRec sử dụng kỹ thuật 3D Gaussian splatting để tái tạo các cảnh lái xe thực tế và hiển thị chúng cho mô phỏng xe tự hành

Kho lưu trữ NVIDIA/nurec-skills công khai chứa các kỹ năng để định vị các bộ dữ liệu Physical AI, sử dụng NCore, chạy NuRec và áp dụng DiffusionHarmonizer. Kỹ năng nurec-carline-adaptation thêm một lớp tương thích và nguồn gốc mỏng; nó không phân phối lại mã nguồn hoặc mô hình của NuRec.

git clone https://github.com/NVIDIA/nurec-skills.git

Sau khi sao chép kho lưu trữ, hãy yêu cầu một tác nhân mã hóa tương thích:

Sử dụng kỹ năng $nurec-carline-adaptation để xác thực USDZ và bộ xương mục tiêu đã được làm sạch, hiển thị cho tôi các lệnh Docker cục bộ chính xác, chạy thử nghiệm khói với một camera thưa thớt, và dừng lại trước khi render đầy đủ nếu bất kỳ kiểm tra camera hoặc kính chắn gió nào thất bại.

Áp dụng NuRec vào dữ liệu lái xe hiện có

Việc tái tạo một chuyến lái đã ghi nhận yêu cầu các video đồng bộ từ thiết bị ghi hình và metadata tương ứng từ cùng một lần ghi. Dữ liệu nguồn sau đó phải được tổ chức theo một bố cục nhất quán:

clip/
└── raw/
   ├── generated/
   │   ├── front_wide.mp4
   │   ├── front_tele.mp4
   │   ├── cross_left.mp4
   │   ├── cross_right.mp4
   │   ├── rear_left.mp4
   │   ├── rear_right.mp4
   │   └── rear.mp4
   └── clipgt/parquets/
       ├── calibration_estimate.parquet
       ├── egomotion_estimate.parquet
       └── object_fused.parquet

Các file MP4 được lấy từ bộ ghi hình của camera trên xe. Các file Parquet chứa metadata được chia sẻ bởi toàn bộ hệ thống camera.

Đầu vào Nội dung Nguồn điển hình
calibration_estimate.parquet Thông số ống kính camera và vị trí lắp đặt Xuất cấu hình hiệu chỉnh camera hoặc cấu hình giá đỡ
egomotion_estimate.parquet Vị trí và hướng của xe theo thời gian Định vị, odometry, VIO hoặc SLAM
object_fused.parquet Các đối tượng di chuyển, lớp, kích thước và ID theo dõi Quy trình nhận dạng hoặc gán nhãn
Bảng 1. Các tệp metadata bắt buộc, nội dung của chúng và nguồn gốc điển hình

Ba tệp Parquet này đều được yêu cầu bởi bộ chuyển đổi và công thức tái tạo đi kèm được sử dụng trong hướng dẫn này. Các quy trình NuRec khác có thể hỗ trợ tái tạo mà không cần theo dõi đối tượng. Các tên tệp và quá trình tuần tự hóa Parquet này không phải là yêu cầu của NCore. Nếu cùng thông tin được lưu trữ trong JSON, cơ sở dữ liệu hoặc định dạng khác, mẫu bộ chuyển đổi NCore công khai có thể được điều chỉnh để đọc dữ liệu nguồn.

Quy trình này giả định rằng các video đã chọn được đồng bộ hóa và bao phủ cùng khoảng thời gian ghi. Dữ liệu hiệu chuẩn phải xác định mọi máy ảnh đã chọn, dữ liệu chuyển động tự thân (egomotion) phải bao phủ toàn bộ chuỗi từ khung hình đầu tiên đến khung hình cuối cùng, và các đường theo dõi đối tượng được yêu cầu bởi công thức này phải chồng lấn khoảng thời gian đó và sử dụng cùng hệ tọa độ thế giới. Trình xác thực ngữ nghĩa chạy sau khi chuyển đổi và kiểm tra các mối quan hệ này trong chuỗi NCore đã tạo.

Ánh xạ dữ liệu nguồn sang NCore

Trình chuyển đổi đi kèm trong phần tiếp theo hỗ trợ bố cục gồm bảy video và ba bảng được hiển thị ở trên. Khi các tệp tuân theo lược đồ này, quy trình có thể tiếp tục trực tiếp với Chạy trình chuyển đổi đi kèm.

Các định dạng nguồn không được hỗ trợ yêu cầu một bản sao tùy chỉnh của mẫu bộ chuyển đổi công cộng, đọc các tệp nguồn và ghi dữ liệu vào NCore.

export CONVERTER_DIR="$WORK_DIR/cosmos-clipgt-converter"
cp -R "$NUREC_SKILLS_REPO/skills/ncore/ncore_template" "$CONVERTER_DIR"

Mẫu này là một khung mã, không phải là một bộ chuyển đổi đa năng. Trình đọc nguồn của nó phải ánh xạ thông tin tương đương vào các thành phần NCore sau:

Dữ liệu nguồn NCore V4
Hình ảnh camera đã được mã hóa và các khoảng thời gian phơi sáng theo từng khung hình Một CameraSensorComponent cho mỗi camera logic
Mô hình ống kính camera và các thông số nội tại IntrinsicsComponent
Các tham số ngoại sai từ camera đến khung máy PosesComponent : T_sensor_rig
Chỉ số chuyển động tự thân PosesComponent : T_rig_world
Tham chiếu toàn cục tùy chọn PosesComponent : T_world_world_global
Mặt nạ Ego MasksComponent
Quan sát và theo dõi đối tượng CuboidsComponent
Bảng 2. Ánh xạ dữ liệu nguồn đến các thành phần NCore V4

Tuân theo các quy ước tọa độ công khai của NCore:

  • Rig: +X về phía trước, +Y sang trái, +Z hướng lên trên
  • Camera: +X sang phải, +Y hướng xuống dưới, +Z về phía trước
  • Dấu thời gian: micro giây nguyên
  • Khoảng cách: mét; tư thế: các phép biến đổi SE(3) hợp lệ

Giữ tính toán tư thế ở định dạng float64. Tái căn chỉnh khung “thế giới” cục bộ sao cho tư thế rig đầu tiên là đơn vị. Đối với video có tốc độ khung hình không đổi được đồng bộ hóa mà không có dấu thời gian khung hình đã ghi, dấu thời gian danh nghĩa cho khung hình `i` là:

frame_timestamp_us = anchor_timestamp_us + i * 1,000,000 / fps

Sử dụng dấu thời gian phơi sáng đã ghi khi có sẵn. Công thức danh nghĩa giả định rằng các luồng MP4 được đồng bộ hóa. Bộ chuyển đổi ghi chuỗi với hồ sơ `separate-sensors` của NCore. Hồ sơ này tạo một kho lưu trữ thành phần camera cho mỗi camera được chuyển đổi và một kho lưu trữ chung cho các tư thế, thông số nội tại, mặt nạ và hình hộp. Bộ chuyển đổi bảo toàn độ phân giải thực tế và cách diễn giải màu sắc của mỗi camera.

Chạy bộ chuyển đổi kèm theo

Khi bộ chuyển đổi cụ thể cho nguồn được phân phối cùng kho lưu trữ hướng dẫn, hãy chạy nó như sau:

export COSMOS_CONVERTER="$TUTORIAL_REPO/tools/cosmos_ncore/build_cosmos_ncore_v4.py"
test -f "$COSMOS_CONVERTER"
env -u PYTHONPATH "$NCORE_PYTHON" "$COSMOS_CONVERTER" \
 --root "$INPUT_ROOT" \
 --anchor-us "$ANCHOR_TIMESTAMP_US" \
 --sequence-id "$SEQUENCE_ID" \
 --fps "$FPS" \
 --store-type itar

Xác thực chuỗi NCore

Đặt các đường dẫn đã tạo theo hợp đồng đầu ra của bộ chuyển đổi:

export NCORE_DIR="$INPUT_ROOT/ncore/$SEQUENCE_ID"
export NCORE_MANIFEST="$NCORE_DIR/$SEQUENCE_ID.json"
export NCORE_VALIDATOR="$TUTORIAL_REPO/tools/cosmos_ncore/validate_cosmos_ncore_v4.py"
test -s "$NCORE_MANIFEST"
python3 -m json.tool "$NCORE_MANIFEST" > /dev/null

Chạy trình xác thực dành riêng cho nguồn:

env -u PYTHONPATH "$NCORE_PYTHON" "$NCORE_VALIDATOR" \
 --root "$INPUT_ROOT" \
 --sequence-id "$SEQUENCE_ID"

Sau đó, kiểm tra chuỗi bằng trình xem NCore công khai và mở http://localhost:8080.

export NCORE_REPO=/absolute/path/to/ncore
export NCORE_MANIFEST=/absolute/path/to/sequence/.json

  (
    cd "$NCORE_REPO"
    bazel run //tools/ncore_vis -- \
      v4 \
      --component-group="$NCORE_MANIFEST"
  )

Đầu ra dự kiến

Một chuỗi NCore V4 với cảm biến riêng biệt thường bao gồm:

/
├── .json
├── build_manifest.json
├── .ncore4.zarr.itar
├── .ncore4-.zarr.itar
└── ... one camera archive per converted camera

Kho lưu trữ `.ncore4.zarr.itar` chung chứa các thành phần như vị trí, thông số nội tại, mặt nạ và hình hộp. Mỗi kho lưu trữ `.ncore4-.zarr.itar` chứa các khung hình cho một camera đã được chuyển đổi. Tệp kê khai JSON và tất cả các kho lưu trữ được tham chiếu tạo thành một chuỗi logic duy nhất; chúng phải được giữ cùng nhau.

Tạo dữ liệu phụ trợ NuRec

Chuỗi NCore đã chuyển đổi chứa các phép đo cảm biến đã ghi lại, thông tin hiệu chuẩn, tư thế và các đường theo dõi đối tượng. Hiện tại, chuỗi này chưa bao gồm các mặt nạ phân đoạn ngữ nghĩa suy luận, độ sâu và mặt nạ ego cần thiết cho quy trình tái tạo chỉ sử dụng camera này. Các hướng dẫn skills/nre công khai mô tả giai đoạn này, và tài liệu dữ liệu phụ trợ NuRec xác định các sản phẩm dữ liệu. Container nre-tools-ga NGC công khai trên NGC cung cấp ứng dụng suy luận.

Quy trình sử dụng NRE_AUX_IMAGE để xác định các container dữ liệu phụ trợ và phân biệt chúng với hình ảnh huấn luyện và render nre-ga riêng biệt. Hình ảnh GA 26.04 cung cấp nhiều công cụ thông qua một điểm truy cập duy nhất, vì vậy quy trình chọn rõ ràng phân lệnh ncore-aux-data:

export NUREC_AUX_IMAGE=nvcr.io/nvidia/nre/nre-tools-ga:26.04.00
python3 "$NUREC_SKILLS_REPO/skills/nre/scripts/validate_setup.py" --strict
docker pull "$NUREC_AUX_IMAGE"
docker run --rm --gpus all --shm-size=2g \
 --env NGC_API_KEY \
--volume "$NCORE_DIR:/workdir/dataset" \
 "$NUREC_AUX_IMAGE" ncore-aux-data \
 --dataset-path="/workdir/dataset/$SEQUENCE_ID.json" \
 --output-dir=/workdir/dataset \
 --segmentation-backend=mask2former \
 --depth-backend=depthanythingv2 \
 --max-depth-m=80 \
 --ego-mask \
 --no-lidar-seg-camvis \
 --no-seg-logits \
 --zarr-store-type=itar \
 --store-meta \
 --num-threads=auto

Các tùy chọn đã chọn có vai trò rõ ràng. Bảng 3 tóm tắt đầu ra được tạo ra bởi mỗi tùy chọn đã chọn.

Tùy chọn Sản phẩm được tạo ra
–segmentation-backend=mask2former .aux.sseg.zarr.itar: mặt nạ lớp ngữ nghĩa theo từng khung hình
–depth-backend=depthanythingv2 .aux.depth.zarr.itar: chiều sâu theo mét
--ego-mask .aux.egomask.zarr.itar: mặt nạ loại trừ xe chủ theo từng camera
--store-meta .aux-meta.json: các cài đặt phụ trợ đã được giải quyết từ ảnh đã ghim
--no-lidar-seg-camvis Vô hiệu hóa phân đoạn LiDAR vì quy trình làm việc không bao gồm dữ liệu LiDAR
Bảng 3. Tùy chọn dữ liệu phụ trợ và sản phẩm được tạo ra

Bỏ qua --camera-id sẽ xử lý mọi camera được khai báo trong NCORE_SEQUENCE_JSON. Việc chọn các camera cụ thể yêu cầu một --camera-id= cho mỗi camera, sử dụng các ID camera logic từ tệp kê khai.

Sau khi tạo dữ liệu phụ, thư mục đầu vào của quá trình tái tạo có cấu trúc như sau:

/
├── .json
├── build_manifest.json
├── .ncore4.zarr.itar
├── .ncore4-.zarr.itar
└── ... one camera archive per converted camera
├── .aux.sseg.zarr.itar
├── .aux.depth.zarr.itar
├── .aux.egomask.zarr.itar
└── .aux-meta.json

Bắt đầu

Sử dụng các tài nguyên sau để bắt đầu thích ứng một cảnh đã tái tạo với một dòng xe mục tiêu.

  • Tải xuống một cảnh USDZ và bộ khung mục tiêu mẫu đi kèm từ Bộ dữ liệu Physical AI NuRec.
  • Kết xuất cảnh thông qua bộ khung mẫu, thay thế JSON của bộ khung bằng cấu hình dòng xe mục tiêu, và kết xuất lại cảnh.
  • Xem tài liệu NuRec để biết các yêu cầu thiết lập, phần cứng được hỗ trợ, xác thực và hướng dẫn kết xuất.
  • Để tái tạo các chuyến lái đã ghi lại, hãy làm theo Tái tạo cảnh xe tự hành và hướng dẫn chuyển đổi NCore cũng như dữ liệu phụ trợ trong NVIDIA/nurec-skills.
  • Sử dụng NVIDIA Harmonizer để xử lý hậu kỳ chuỗi dữ liệu nhất quán theo thời gian.

Phần mềm công khai, container, tập dữ liệu và các tệp mô hình yêu cầu tài khoản NVIDIA NGC hoặc Hugging Face tương ứng và chấp nhận giấy phép của họ. Runtime NuRec có sẵn trong container nre-ga trên NGC.

____
Bài viết liên quan
TAG: , ,