| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Like Liu, Zhengzheng Xu, Haitao He, Hongzhe Li, Shuchang Zhang, Dian Shao†
†Corresponding Author
Northwestern Polytechnical University, China University of Petroleum
This is the official code package for UAV-DualCog.
UAV-DualCog benchmark overview. The benchmark organizes self-aware and environment-aware reasoning across image and video tasks, and the released code package supports the corresponding Stage 1-4 construction and evaluation workflow.
For benchmark definitions, leaderboard interpretation, and detailed supplementary explanations, please read the website pages in order: Home -> Benchmark -> Construction -> Evaluation -> Leaderboard -> Analysis -> Usage.
Note:
UAV-DualCog/
├── scripts/uav_dualcog/ # Stage 1-4 + task_pipeline entrypoints
├── trajectory/ # behavior elements/sets and composition
├── sim_bridge/ # AirSim bridge and engine adapter layer
├── configs/
│ ├── uav_dualcog/
│ │ ├── task_airsim_env_<id>.yaml # runnable scene configs (18 scenes)
│ │ ├── common_stage_configs.yaml # behavior library and shared stage defaults
│ │ ├── common_api_runtime.yaml # model routing (API + local deployment)
│ │ ├── task_pipeline/
│ │ │ └── task_pipeline_uav_dualcog_v1.yaml
│ │ └── templates/ # fully-commented config templates
│ └── prompts/
│ └── uav_dualcog_prompts.yaml
├── envs/ # simulator env assets (download separately)
│ └── airsim/
│ └── env_7/
├── scene_data/ # Stage 1-2 outputs
│ └── airsim_env_7/
│ ├── pcd_map/
│ ├── landmarks_raw/
│ └── landmarks_review/
├── task_pipeline_data/ # Stage 3-4 outputs
│ └── UAV-DualCog-V1/
│ ├── airsim_env_7/
│ │ ├── video_tasks/
│ │ └── image_tasks/
│ └── task_pipeline/
│ ├── dataset_stats/
│ ├── exports/
│ └── landmark_lists/
├── environment.yml # conda environment reference
├── requirements.txt
└── deps/
Use this when reproducing benchmark construction from scene/simulator inputs.
Requires:
Recommended workflow:
Important operational notes:
Use this when you only evaluate models on released benchmark assets.
Requires:
configs/uav_dualcog/common_api_runtime.yaml supports:
Experiment model names can carry one runtime suffix:
Examples:
Important behavior:
For vLLM environment setup, use the official quickstart:
Example model download (ModelScope):
modelscope download --model Qwen/Qwen3.5-4B --local_dir ./models/qwen3_5-4bExample local serving command:
export CUDA_VISIBLE_DEVICES=3
export VLLM_USE_MODELSCOPE=true
vllm serve \
./models/internvl3_5-4b \
--served-model-name OpenGVLab/InternVL3_5-4B-Instant \
--tensor-parallel-size 1 \
--reasoning-parser qwen3 \
--max-model-len 32K \
--kv-cache-dtype fp8 \
--gpu-memory-utilization 0.90 \
--max-num-seqs 8 \
--max-num-batched-tokens 16K \
--enable-prefix-caching \
--host 0.0.0.0 \
--port 40900Recommended alignment:
For safe dry checks (no real model calls), run:
python scripts/uav_dualcog/api_common.py --help
python scripts/uav_dualcog/mock_api_runtime_check.py --config configs/uav_dualcog/common_api_runtime.yamlFully commented templates are in:
Runnable examples are already provided under (env_7 shown here):
scene_id values are recommended to use the canonical env_<id> format throughout configs and commands. If --scene-id is passed on the command line, keep it identical to task.scene_id in the config; do not mix forms such as 7 and env_7 within one workspace.
# configs/uav_dualcog/task_airsim_env_7.yaml
task:
name: UAV-DualCog-env_7
engine: airsim
base_dir: scene_data
scene_id: env_7
scene_dir_name: airsim_env_7
output_layout:
scene_dir_include_engine: true
stage1_dir: pcd_map
stage2_raw_dir: landmarks_raw
stage2_review_dir: landmarks_review
stage3_task_root_dir: video_tasks # released Stage 3 root
stage4_qa_dir: image_tasks # released Stage 4 root
camera:
width: 4096 # source capture resolution (DCI 4K 4:3)
height: 3072
fov: 72.0 # camera FoV in degrees
fps: 10 # source-frame sampling rate
collect:
pose_settle_sec: 0.05 # wait after pose set before capture
traj_map:
VoxelWidth: 1.5 # map voxel/grid size in meters
LidarDelta: [30, 30, 50] # LiDAR local sampling span (x,y,z) in meters
MapBound: [-219, 191, -270, 268, -50, 52]
parallel:
mode: single_instance_multi_thread # one AirSim process + multi-thread collection
workers: 6
stage2:
collect_rgb_views_count: 8 # side views per landmark (top view controlled separately)
collect_parallel_workers: 6
collect_rgb_parallel_workers: 6
collect_view_image_width: 4096
collect_view_image_height: 3072
engine_params:
airsim:
sim_ip: 127.0.0.1
sim_port: 41070
launch_sim: true
headless: true
camera_name: front_0
vehicle_name: drone_1
lidar_range: 500.0 # LiDAR max range (meters)
lidar_points_per_second: 200000# configs/uav_dualcog/common_stage_configs.yaml
stage3_behavior_library:
shared:
safety_distance_m: 2.0 # global safety clearance for trajectory generation
elements:
gradual_approach:
display_name: Gradual Approach
family: inspection
camera_mode_default: landmark_track
params:
travel_distance_m: {min: 30, max: 120, default: 40, step: 10}
descent_m: {min: 5, max: 40, default: 15, step: 5}
circular_orbit:
display_name: Circular Orbit
family: orbit
camera_mode_default: landmark_track
params:
extension_m: {min: 4, max: 36, default: 12, step: 2}
arc_deg: {min: 45, max: 720, default: 180, step: 90}# configs/uav_dualcog/common_api_runtime.yaml
api:
default_models:
stage2: Qwen/Qwen3.5-9B
stage3: openai/gpt-5.3-chat
stage4: Qwen/Qwen3.5-4B
models:
openai/gpt-5.3-chat:
api_source: cloud
api_base: ${UAV_DUALCOG_API_BASE}
api_key: ${UAV_DUALCOG_API_KEY}
request_model: gpt-5.3-chat
rpm_limit: 60
tpm_limit: 200000
Qwen/Qwen3.5-9B:
api_source: local
api_base: http://127.0.0.1:28000/v1
api_key: ${UAV_DUALCOG_LOCAL_API_KEY}# configs/uav_dualcog/task_pipeline/task_pipeline_uav_dualcog_v1.yaml
task_name: UAV-DualCog-V1
task_pipeline_root_dir: task_pipeline_data
stage: both
phase: both
scene_ids: [env_7, env_8, env_9, env_10, env_11, env_13, env_16, env_17, env_20, env_21, env_23, env_24]
seed: 29
stage3:
final_video_width: 1440 # released video resolution (1080P, 4:3)
final_video_height: 1080
final_capture_parallel_workers: 16
record_parallel_workers: 16
stage4:
env_capture_parallel_workers: 8
overlay_parallel_workers: 32
difficulties: [4way, 8way]The runnable defaults above are tuned for the current build machine:
Important:
Below uses env_7 as example scene.
conda env create -f environment.yml
conda activate uav-dualcogIf your server does not have a display device, you may need:
sudo apt install xdg-user-dirs xdg-utils
sudo apt install libegl1
sudo apt install vulkan-tools libvulkan1 mesa-vulkan-driversEnvironment setup records and Stage 1-4 empirical logs are available in:
logs/
Purpose: build segmented/fused scene cloud for landmark construction.
1.0 Probe and write back scene map bounds (recommended before large collection):
python scripts/uav_dualcog/probe_airsim_mapbound.py \
--config configs/uav_dualcog/task_airsim_env_7.yaml \
--scene-id env_7 \
--workers 6 \
--probe-source hybrid \
--write-back \
--output scene_data/airsim_env_7/pcd_map/mapbound_probe_env7.jsonThis step estimates robust traj_map.MapBound, EstimatedSurfaceZ, and related boundary fields for the current scene, then writes them back to the scene config for stable Stage 1 collection.
python scripts/uav_dualcog/stage1_collect_pcd.py \
--config configs/uav_dualcog/task_airsim_env_7.yaml \
--scene-id env_7 \
--mode all \
--engine airsimPurpose: construct landmark instances and finalize reviewed semantic annotations.
2.1 Collect candidates and multiview evidence:
python scripts/uav_dualcog/stage2_landmark_label.py \
--config configs/uav_dualcog/task_airsim_env_7.yaml \
--scene-id env_7 \
--mode collect_instances2.2 Open review web (Step 2-4 are web-centered in practice):
python scripts/uav_dualcog/stage2_landmark_label.py \
--config configs/uav_dualcog/task_airsim_env_7.yaml \
--scene-id env_7 \
--mode review_instances_web \
--host 0.0.0.0 \
--port 202612.3 Auto-label reviewed instances:
python scripts/uav_dualcog/stage2_landmark_label.py \
--config configs/uav_dualcog/task_airsim_env_7.yaml \
--scene-id env_7 \
--mode auto_labelPurpose: generate missions/trajectories, render videos, build stage3 manifests.
Direct entrypoint:
python scripts/uav_dualcog/stage3_generate_traj.py --helpRecommended (batch/reproducible) pipeline phases:
python scripts/uav_dualcog/task_pipeline.py \
--spec configs/uav_dualcog/task_pipeline/task_pipeline_uav_dualcog_v1.yaml \
--stage stage3 --phase selection
python scripts/uav_dualcog/task_pipeline.py \
--spec configs/uav_dualcog/task_pipeline/task_pipeline_uav_dualcog_v1.yaml \
--stage stage3 --phase data
python scripts/uav_dualcog/task_pipeline.py \
--spec configs/uav_dualcog/task_pipeline/task_pipeline_uav_dualcog_v1.yaml \
--stage stage3 --phase renderOptional internal web workbench:
python scripts/uav_dualcog/stage3_generate_traj.py \
--config configs/uav_dualcog/task_airsim_env_7.yaml \
--scene-id env_7 \
--mode webPurpose: sample image QA tasks, render assets, export stage4 manifests.
Recommended pipeline phases:
python scripts/uav_dualcog/task_pipeline.py \
--spec configs/uav_dualcog/task_pipeline/task_pipeline_uav_dualcog_v1.yaml \
--stage stage4 --phase selection
python scripts/uav_dualcog/task_pipeline.py \
--spec configs/uav_dualcog/task_pipeline/task_pipeline_uav_dualcog_v1.yaml \
--stage stage4 --phase data
python scripts/uav_dualcog/task_pipeline.py \
--spec configs/uav_dualcog/task_pipeline/task_pipeline_uav_dualcog_v1.yaml \
--stage stage4 --phase renderOptional internal web workbench:
python scripts/uav_dualcog/stage4_qa_generate_and_eval.py \
--config configs/uav_dualcog/task_airsim_env_7.yaml \
--scene-id env_7 \
--mode web \
--port 20264The internal web tools are designed for interactive inspection, review, and run-level debugging. They are especially useful when you need to confirm whether geometry, views, prompts, task rows, or model outputs are qualitatively correct before launching large batches.
Recommended split:
Launch:
python scripts/uav_dualcog/stage2_landmark_label.py \
--config configs/uav_dualcog/task_airsim_env_7.yaml \
--scene-id env_7 \
--mode review_instances_web \
--host 0.0.0.0 \
--port 20261This web is the operational center of Stage 2 Step 2-4. It combines:
Typical usage order:
Important page areas:
Artifacts written during this workflow:
Stage 2 internal review workspace. Point-cloud evidence, multiview RGB evidence, review-state controls, and auto-label approval are combined here so that Stage 2 Step 2-4 can be completed in one continuous workflow.
Launch:
python scripts/uav_dualcog/stage3_generate_traj.py \
--config configs/uav_dualcog/task_airsim_env_7.yaml \
--scene-id env_7 \
--mode webThe Stage 3 workbench exposes a multi-page mission and task interface. The main pages are:
Before treating a page as empty, first switch the top-right scene, task, mission, or manifest selector. Several Stage 3 pages only populate after an active selection is made.
Recommended use of each page:
Behavior Library
Missions
Review
Generate
Dataset
Experiments
Results
Metrics
Operational recommendation:
Stage 3 behavior library. This page presents the hierarchical relation between composite inspection classes and atomic motion primitives before trajectory generation begins.
Stage 3 mission generation. Reviewers select landmarks, mission families, and generation options here, then render panorama, preview, or final task videos for interactive spot checks.
Stage 3 manifest generation. Approved candidates are converted into benchmark-facing task rows here; the generated manifest can then be inspected in the dataset browser together with sample media and interval labels.
Stage 3 dataset browser. This page is used to verify reference images, overview boards, sample videos, answer targets, and interval annotations before experiments are launched.
Stage 3 results page. Run-level summaries and sample-level predictions are browsed here to distinguish semantic mistakes, parsing failures, and temporal-localization errors.
Stage 3 metrics page. Summary cards, grouped comparisons, full tables, and progress views support quick diagnosis before exporting CSV for offline aggregation.
Launch:
python scripts/uav_dualcog/stage4_qa_generate_and_eval.py \
--config configs/uav_dualcog/task_airsim_env_7.yaml \
--scene-id env_7 \
--mode web \
--port 20264The Stage 4 workbench is organized around five pages:
Before treating a page as empty, first switch the top-right scene, task type, manifest, or report selector. Several Stage 4 pages only render detailed content after an active selection is chosen.
Recommended use of each page:
Generate
Dataset
Experiments
Results
Metrics
Operational recommendation:
Stage 4 task generation. Sampling strategy, task types, difficulty settings, and per-landmark limits are configured here before new image-QA manifests are written.
Stage 4 dataset browser. This page is the fastest place to verify that reference images, query images, option ordering, and bbox targets remain visually aligned.
Stage 4 experiments page. Model aliases, upload settings, concurrency, and rate limits are managed here for qualitative reruns and small-to-medium comparison jobs.
Stage 4 results page. Per-run summaries and sample-level outputs make it easy to inspect whether a failure comes from option selection, bbox grounding, or parser behavior.
Stage 4 metrics page. Summary cards, grouped comparisons, experiment matrices, and progress tables provide a compact view of image-task evaluation quality.
Purpose: run model evaluation on released task manifests without redoing scene construction.
# Stage 3 experiments
python scripts/uav_dualcog/task_pipeline.py \
--spec configs/uav_dualcog/task_pipeline/task_pipeline_uav_dualcog_v1.yaml \
--stage stage3 --phase experiment \
--experiment-models openai/gpt-5.3-chat Qwen/Qwen3.5-9B-Instant
# Stage 4 experiments
python scripts/uav_dualcog/task_pipeline.py \
--spec configs/uav_dualcog/task_pipeline/task_pipeline_uav_dualcog_v1.yaml \
--stage stage4 --phase experiment \
--experiment-models openai/gpt-5.3-chat Qwen/Qwen3.5-4B-ThinkingIf you only want to verify interface wiring (without real model calls), use --help on stage/pipeline scripts and validate config parsing paths first.
python scripts/uav_dualcog/stage1_collect_pcd.py --help
python scripts/uav_dualcog/stage2_landmark_label.py --help
python scripts/uav_dualcog/probe_airsim_mapbound.py --help
python scripts/uav_dualcog/stage3_generate_traj.py --help
python scripts/uav_dualcog/stage4_qa_generate_and_eval.py --help
python scripts/uav_dualcog/task_pipeline.py --help
python scripts/uav_dualcog/mock_api_runtime_check.py --config configs/uav_dualcog/common_api_runtime.yamlThese checks confirm runnable CLI interfaces before launching long construction or experiment jobs.
If you use FineCog-Nav in your research, please cite the following paper:
@misc{liu2026uavdualcog,
title={Knowing the Self, Understanding the World: A Dual-Cognition Benchmark for UAV Spatio-temporal Reasoning with MLLMs},
author={Like Liu and Zhengzheng Xu and Haitao He and Hongzhe Li and Shuchang Zhang and Dian Shao},
year={2026},
eprint={2607.16193},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2607.16193},
}
Some components modified from AerialVLN and OpenFly. Thanks sincerely.
| Back | FazBrowse Home | New Git URL |