# Haritaları ve Boş Kameraları Yeniden Adlandır

Bir robot politikasıyla eğitim, değerlendirme veya kayıt yaptığınızda, **veri setiniz** veya **ortamınız** gözlemleri bir anahtar kümesi altında (ör. `observation.images.front`, `observation.images.eagle`) sağlarken, **politikanız** başka bir küme bekler (ör. `observation.images.image`, `observation.images.image2`). **Yeniden adlandırma haritası**, politika veya veri kaynağını değiştirmeden bu boşluğu kapatır.

> **Kapsam:** Yeniden adlandırma haritası yalnızca **observation** anahtarlarını (görseller ve durum) yeniden adlandırır. Eylem anahtarları etkilenmez.

## Gözlem anahtarlarının neden her zaman eşleşmediği

Policies, önceden eğitilmiş yapılandırmalarına gömülü olan sabit bir **girdi özellik adı** setine sahiptir. Örneğin:

- [pi0fast-libero](https://huggingface.co/lerobot/pi0fast-libero), `observation.images.base_0_rgb` ve `observation.images.left_wrist_0_rgb` bekler.
- [xvla-base](https://huggingface.co/lerobot/xvla-base), `observation.images.image`, `observation.images.image2` ve `observation.images.image3` bekler.

Veri setiniz tamamen farklı adlar kullanıyor olabilir (ör. `observation.images.front`, `observation.images.eagle`, `observation.images.glove`) ve değerlendirme ortamınız da başka bir set kullanıyor olabilir. Politika yapılandırmasını düzenlemek veya veri setindeki sütunları yeniden adlandırmak yerine, bir **yeniden adlandırma haritası** geçirirsiniz: kaynak anahtarları, politikanın beklediği anahtarlara eşleyen bir JSON sözlüğü. Yeniden adlandırma, ön işleyici hattının içinde gerçekleştiği için politika her zaman beklediği anahtarları görür.

## Yeniden adlandırma haritasını kullanma

Haritalamayı komut satırında bir JSON dizgesi olarak iletin. Sözleşme her zaman şudur:

```
--rename_map='{"source_key": "policy_key", ...}'
```

burada **source_key**, veri setinin veya ortamın sağladığı anahtarı, **policy_key** ise politikanın beklediği anahtarı ifade eder.

Yalnızca listelenen anahtarlar yeniden adlandırılır; diğer her şey değiştirilmeden geçer. Girdilerin sırası önemli değildir.

Desteklenen politikalar: **PI0**, **PI05**, **PI0Fast**, **SmolVLA** ve **XVLA**.

### Eğitim

[lerobot/xvla-base](https://huggingface.co/lerobot/xvla-base) modelini `observation.images.front`, `observation.images.eagle` ve `observation.images.glove` altında görüntüler içeren bir veri setinde ince ayar yaptığınızı varsayalım. XVLA, `observation.images.image`, `observation.images.image2` ve `observation.images.image3` bekler:

```bash
lerobot-train \
  --dataset.repo_id=YOUR_DATASET \
  --output_dir=./outputs/xvla_training \
  --job_name=xvla_training \
  --policy.path="lerobot/xvla-base" \
  --policy.repo_id="HF_USER/xvla-your-robot" \
  --policy.dtype=bfloat16 \
  --policy.action_mode=auto \
  --steps=20000 \
  --policy.device=cuda \
  --policy.freeze_vision_encoder=false \
  --policy.freeze_language_encoder=false \
  --policy.train_policy_transformer=true \
  --policy.train_soft_prompts=true \
  --rename_map='{"observation.images.front": "observation.images.image", "observation.images.eagle": "observation.images.image2", "observation.images.glove": "observation.images.image3"}'
```

### Değerlendirme

`observation.images.base_0_rgb` ve `observation.images.left_wrist_0_rgb` bekleyen bir politika (ör. [pi0fast-libero](https://huggingface.co/lerobot/pi0fast-libero)), ancak LIBERO ortamı `observation.images.image` ve `observation.images.image2` döndürüyor:

```bash
lerobot-eval \
  --policy.path=lerobot/pi0fast-libero \
  --env.type=libero \
  ... \
  --rename_map='{"observation.images.image": "observation.images.base_0_rgb", "observation.images.image2": "observation.images.left_wrist_0_rgb"}'
```

## Alternatif: politika yapılandırmasını doğrudan düzenleyin

Her zaman aynı veri setini veya ortamı kullanıyorsanız, gözlem anahtarlarının veri kaynağınızla eşleşmesi için **politikanın `config.json` dosyasını düzenleyebilirsiniz**. Bu durumda yeniden adlandırma haritasına gerek kalmaz.

Taviz: politika yapılandırmasını değiştirmek, onu tek bir veri kaynağına bağlar. Yeniden adlandırma haritası, tek bir politikanın birçok veri seti ve ortamda kullanılabilir kalmasını sağlar.

## Boş kameralar: politikanın beklediğinden daha az görüntü

Bazı politikalar, sabit sayıda görüntü girdisi için oluşturulmuştur. Veri setiniz daha az kameraya sahipse, model mimarisini değiştirmek yerine politika yapılandırmasında **`empty_cameras`** değerini ayarlayabilirsiniz.

### Nasıl çalışır

`empty_cameras=N` ayarlandığında, politika yapılandırmasına N yer tutucu görüntü özelliği eklenir; bunların adları:

```
observation.images.empty_camera_0
observation.images.empty_camera_1
...
```

Çalışma zamanında, bu anahtarların batch içinde karşılık gelen verisi yoktur. Politika, bunları maskelenmiş sahte tensörlerle doldurur (SigLIP tabanlı görme kodlayıcıları için `-1` ile dolgu yapılmış, sıfır dikkat maskesine sahip), böylece ek görüntü yuvaları eğitim ve çıkarım sırasında fiilen yok sayılır.

### Örnek

XVLA-base üç görsel girişe sahiptir ve varsayılan olarak `empty_cameras=0` değerine ayarlıdır. Veri setinizde yalnızca iki kamera var:

1. `--policy.empty_cameras=1` ayarlayın.
2. Yapılandırma üçüncü bir anahtar ekler: `observation.images.empty_camera_0`.
3. İki gerçek kameranız için yeniden adlandırma haritasını olduğu gibi kullanın.
4. Üçüncü slot maskelenmiştir — veri setinizde sahte görsellere gerek yoktur.

## Hızlı başvuru

| Hedef                                    | Ne yapılmalı                                                                  |
| --------------------------------------- | --------------------------------------------------------------------------- |
| Veri seti anahtarları ≠ politika anahtarları              | `--rename_map='{"dataset_key": "policy_key", ...}'`                         |
| Env anahtarları ≠ politika anahtarları (değerlendirme)           | `--rename_map='{"env_key": "policy_key", ...}'`                             |
| Farklı anahtarlarla rollout (çıkarsama) | `--rename_map='{"source_key": "policy_key", ...}'`.                         |
| Politika tarafından beklenenden daha az kamera       | `--policy.empty_cameras=N` (PI0, PI05, PI0Fast, SmolVLA, XVLA tarafından desteklenir) |
| Yeniden adlandırma haritası geçmekten kaçının              | Politikanın `config.json` dosyasını düzenleyerek anahtarlarının veri kaynağınızla eşleşmesini sağlayın          |

