Skip to content

Robotlar Neden Tek Gözle Yaşıyor (ve Biz Buna Neden Son Verdik) 🤖🎬

Published: March 29, 2026

Selamlar. Size bugün bir itirafta bulunacağım: bütün VLA modelleri — yani robotlara "al şunu, koy bunu" diyebilmemizi sağlayan o havalı yapay zekalar — tek gözü kapalı yaşıyor.

Tek frame bakıyorlar dünyaya. Fotoğraf. Anlık. Donmuş.

Bu, hayatınızı Instagram story'lerden ibaret sanmak gibi bir şey. Evet, o anda nerede olduğunu görüyorsun. Ama nereye gittiğini? Rüzgarın bardağı masadan düşürmek üzere olduğunu? Hiç.

Biz buna son verdik. Adı: Neon.

🎧 First in first, background music.


"Abi Videoyu Aç, Fotoğrafa Bakma" Meselesi 📸→🎬

Mevzuyu şöyle düşünün.

Bir arkadaşınız size WhatsApp'tan tek bir fotoğraf atıyor: "Bu topu yakala." Fotoğrafta top havada asılı duruyor. Nereye gidiyor? Ne hızda? Yerçekimi mi var yoksa uzayda mısınız? Bilmiyorsunuz. Fotoğraf size pozisyon veriyor ama momentum vermiyor.

Şimdi aynı arkadaş 2 saniyelik video atıyor. Top sola doğru eğri çiziyor, yavaşlıyor, düşmeye başlıyor. Elinizi nereye uzatmanız gerektiğini hissediyorsunuz.

İşte mevcut VLA'ların durumu o fotoğraf. Neon'un durumu o video.

RT-2, OpenVLA, Pi0 — hepsi single-frame. Gözlerini her inference'ta kırpıyorlar. Kırp, bak, kırp, bak. Arada ne olduğunu bilmiyorlar. Bu, gözleri kapalı top yakalamaya çalışmak gibi bir şey. Bazen tutturursun. Ama neden tutturduğunu bile bilmezsin.

Esas Fikir: 7 Milyar Parametre Zaten Fiziği Biliyor 🧊

Peki dünyada video anlayan dev modeller yok mu? Var. Qwen2.5-Omni, Cosmos, InternVideo — milyonlarca saat gerçek dünya videosu üzerinde eğitilmiş 7 milyar parametrelik canavarlar.

Bu modeller şunları zaten biliyor:

  • Bardak itilince düşer (sürpriz değil ama bunu öğrenmişler)
  • Sıvılar aşağı akar
  • Kapılar menteşede döner
  • Nesnelerin hızı ve ivmesi var
  • Temas mekaniği: sert şeyler çarpışır, yumuşak şeyler deforme olur

Yani internet-scale video pre-training, bir nevi fizik PhD'si vermiş bu modellere. Sadece diploma yerine weight'leri var.

Soru şu: bu bilgiyi robota nasıl aktarıyorsun?

Klasik cevap: "Fine-tune et." 7 milyar parametreyi al, robotik veriyle baştan eğit. 320 GPU-saat. Binlerce dolar. Ve en kötüsü — catastrophic forgetting. Model, bardağın düştüğünü unutuyor çünkü sen ona sadece küp kaldırmayı öğretiyorsun.

Neon'un cevabı: hiçbir şeyi eğitme.

Dondur. Üstüne Ufacık Bir Şey Koy. Bitsin. 🧊🎯

Neon'un mimarisi üç satırda özetlenebilir:

  1. 7B video backbone → tamamen dondurulmuş, gradyan geçmiyor
  2. 6M parametre action decoder → sadece bu eğitiliyor
  3. Toplam eğitilen parametre oranı → %0.08

Yüzde sıfır virgül sıfır sekiz.

Bunu perspective'e koyalım. Eğer 7B model bir apartman olsaydı, Neon sadece kapının kilidini değiştiriyor. Apartmanın kendisine dokunmuyor. Asansör çalışıyor, su akıyor, elektrik geliyor — hepsi backbone'dan. Sen sadece "bu anahtarla bu kapıyı aç" diyorsun.

                ┌─────────────────────────┐
                │   Frozen Video Backbone  │
                │      (7B parametre)      │
                │                          │
                │   🧊 DON'T TOUCH THIS 🧊  │
                │                          │
                │  fizik, dinamik, nedensel │
                │  ilişkiler, momentum,     │
                │  temas mekaniği...        │
                └────────────┬─────────────┘
                             │
                     feature tensor
                             │
                ┌────────────▼─────────────┐
                │  Trainable Decoder (6M)   │
                │                          │
                │  🔥 SADECE BURAYI EĞİT 🔥  │
                │                          │
                │  "bu feature → bu joint   │
                │   açısı" mapping'i        │
                └──────────────────────────┘

Neden %0.08 Yeterli?

Çünkü zor kısmı — fiziği anlamak, nesneleri tanımak, hareketi takip etmek — backbone zaten biliyor. Decoder'ın tek işi "bu feature vector'ü şu servo açısına çevir." Bu, apartmanın kapısına yeni kilit takmak kadar basit.

Altı Duyu, Bir Robot 👁️👂🤚📡🗣️🦾

Neon tek kameralı değil. Altı modaliteyi aynı anda işleyebilir:

Modalite Ne Yapıyor Neden Önemli
🎬 Video Temporal context, hareket takibi Momentum ve dinamik
🖼️ Görüntü Spatial detail, nesne tanıma Pozisyon ve geometri
🔊 Ses Ortam sesleri, komutlar "Bardak kırıldı" → acil dur
🗣️ Dil Natural language instruction "Kırmızı küpü al"
🤚 Proprioception Joint açıları, kuvvet sensörleri Nerede olduğunu bilmek
📡 Depth 3D spatial awareness Ne kadar uzak?

Bunu single-frame VLA'larla kıyaslayın — onlar sadece 🖼️ ve bazen 🗣️ kullanıyor. Neon, bir insanın beş duyusu gibi çalışıyor. Hatta biraz daha fazla.

graph LR
    V[🎬 Video<br/>Temporal] --> F[Frozen 7B<br/>Backbone]
    I[🖼️ Image<br/>Spatial] --> F
    A[🔊 Audio<br/>Context] --> F
    L[🗣️ Language<br/>Instruction] --> F
    P[🤚 Proprio<br/>Joint State] --> D
    De[📡 Depth<br/>3D Space] --> F

    F --> D[Action Decoder<br/>6M params]
    D --> R[🤖 Robot Actions<br/>Joint velocities]

    style F fill:#1a5276,stroke:#2980b9,color:#fff
    style D fill:#922b21,stroke:#e74c3c,color:#fff
    style R fill:#1e8449,stroke:#27ae60,color:#fff

Flow Matching: Difüzyonun Hızlı Kuzeni 🌊

Action generation için flow matching kullanıyoruz. Diffusion policy biliyorsanız — aynı fikir ama daha hızlı.

Diffusion: "Gürültülü bir sinyal al, yavaş yavaş temizle, 50 adımda action'a dönüştür."

Flow matching: "Gürültüden action'a düz bir yol çiz, 5-10 adımda var."

graph LR
    subgraph "Diffusion (50 adım)"
        N1[Noise] --> |step 1| S1[...]
        S1 --> |step 2-49| S2[...]
        S2 --> |step 50| A1[Action]
    end

    subgraph "Flow Matching (5 adım)"
        N2[Noise] --> |step 1| S3[...]
        S3 --> |step 2-4| S4[...]
        S4 --> |step 5| A2[Action]
    end

    style A1 fill:#2ea44f,stroke:#1b7735,color:#fff
    style A2 fill:#2ea44f,stroke:#1b7735,color:#fff
    style N1 fill:#e74c3c,stroke:#c0392b,color:#fff
    style N2 fill:#e74c3c,stroke:#c0392b,color:#fff

Sonuç: 10× daha az inference step, aynı kalite. Jetson Orin üzerinde bu, real-time ile slideshow arasındaki fark demek.

Strands Agents ile Entegrasyon 🧬

Strands Robots yazısında anlattığım 5-satır promise'i hatırlıyorsanız — Neon de aynı felsefe üzerine inşa edildi.

Klasik bir agent döngüsünü yazın:

# AI Agent döngüsü
response = model(context, tools)
for tool_call in response:
    result = execute(tool_call)
    context.append(result)

Bir robotun döngüsünü yazın:

# Robot döngüsü
while not done:
    obs = sense()          # kamera, proprioception, audio
    action = policy(obs)   # VLA inference
    execute(action)        # servo komutları

İkisi de aynı şey: sense → think → act. Agent tool çağırıyor, robot action çağırıyor. Fark yok. Bu yüzden Neon, Strands Agents'ın tool ekosisteminin içine doğal olarak oturuyor.

from strands_robots import Robot
from strands import Agent
from neon import NeonPolicy

# Neon-powered robot
robot = Robot("so100", policy=NeonPolicy(backbone="qwen2.5-omni-7b"))
agent = Agent(tools=[robot])

# Agent video anlıyor, robot hareket ediyor
agent("Masadaki bardağı al — ama dikkat et, sallantılı duruyor")

Agent "dikkat et, sallantılı duruyor" dediğinde, Neon'un video backbone'u bardağın son birkaç frame'deki sallanmasını görüyor. Single-frame VLA bunu göremez. Neon görür. Ve approach velocity'yi düşürür.

Benchmark Meselesi 📊

Bunları yazmam lazım çünkü ben "önce yap, sonra konuş" adamıyım. Benchmark'lar gelecek. Ama gelene kadar claim'leri küçük tutacağız.

Dürüstlük Politikası

Neon henüz erken aşamada. Aşağıdaki tablodaki değerler hedef ve erken sonuçlardır, peer-reviewed benchmark değil. Tam karşılaştırma için sonraki blog postunu bekleyin.

Beklediğimiz avantajlar, mimari tasarımdan gelen doğal sonuçlar:

Metrik Single-Frame VLA Neon (Video-Native) Neden
Dinamik nesne yakalama Düşük Yüksek Momentum bilgisi var
Eğitim maliyeti 320+ GPU-saat ~8 GPU-saat Sadece 6M param eğitiliyor
Catastrophic forgetting Yüksek risk Minimal Backbone dondurulmuş
Modality count 1-2 6 Omni backbone
Inference latency Değişken Düşük Flow matching, az step

Üç Paper'ın Özeti, Üç Cümle 📚

Neon'un arkasındaki akademik motivasyon üç temel gözleme dayanıyor:

  1. Ağır pre-train, hafif adapt — Foundation model'lar zaten dünyayı biliyor. Robotik için sıfırdan eğitmeye gerek yok. (GR-2, Octo)

  2. Video > Fotoğraf — Temporal bilgi, spatial bilginin üstüne çıkıyor. Hareket tahmini için video zorunlu. (Video PreTraining, InternVideo)

  3. Flow matching > Diffusion — Aynı kalite, 10× daha az step. Real-time robotik için şart. (Flow Matching for Generative Modeling)

Bu üç insight'ı bir araya getirin: dondurulmuş video backbone + flow matching action decoder = Neon.

Neden Bu Önemli? 🌍

Robotik hala pahalı, zor ve erişilmez bir alan. Bir VLA modelini fine-tune etmek binlerce dolar. Yeni bir robot platformuna adapte etmek aylar. Ve her yeni görev için döngü baştan başlıyor.

Neon'un vizyonu bunu kırmak:

  • 8 GPU-saat eğitim maliyeti (320 değil)
  • Sıfır catastrophic forgetting (backbone dokunulmaz)
  • Yeni robot = yeni decoder (backbone aynı, sadece 6M param eğit)
  • 6 modalite → daha zengin dünya algısı
  • Flow matching → real-time inference Jetson'da bile

The Big Picture

Eğer bir robotu eğitmek 100$'a ve 1 saate düşerse, her okul, her lab, her garaj bir robot eğitebilir. Bu "Intelligent Robotics For Everyone" vizyonunun ta kendisi.

Yol Haritası 🗺️

timeline
    title Neon VLA Roadmap
    v0.1 — Foundations : Omni backbone integration
                       : Flow matching action decoder
                       : Single-robot SO-100 training
    v0.2 — Multi-Modal : Audio + depth fusion
                       : Proprioception embedding
                       : Multi-camera support  
    v0.3 — Scale : Multi-robot training
                 : Sim-to-real with MuJoCo/Newton
                 : Full benchmark suite
    v0.4 — Production : Strands Robots native policy
                      : One-click Jetson deployment
                      : Community model hub

Başla 🚀

git clone https://github.com/cagataycali/neon
cd neon
pip install -e ".[all]"
from neon import NeonPolicy

# Backbone otomatik indirilir, dondurulur
policy = NeonPolicy(backbone="qwen2.5-omni-7b")

# 8 GPU-saat eğitim — sadece decoder
policy.train(dataset="your_robot_demos/", epochs=50)

# Inference — video-native, flow matching
actions = policy.predict(video_frames, instruction="Pick up the cup carefully")

Projenin kendisi Apache-2.0 lisanslı. Star'layın, fork'layın, PR atın. Single-frame VLA çağının sonunu birlikte getirelim.


Bu yazıyı neden yazdım?

Çünkü robotik hala "büyük lab'ların, büyük bütçelerin" alanı olarak görülüyor. Ama gerçek şu ki — doğru soyutlamalarla, doğru mimarilerle, bir Jetson ve bir kamera ile inanılmaz şeyler yapabilirsiniz.

Bitwise config flags ile O(n)'i O(1)'e düşürmüştük. Strands Robots ile 190 satırı 5'e düşürdük. Neon ile "eğitim için 320 GPU-saat" iddiasını 8'e düşürüyoruz.

Her seferinde aynı felsefe: karmaşıklığı soyutla, insana sadece karar ver.

"Al şunu" de. Gerisini Neon çözer.

Afiyet olsun! 🍽️

Çağatay.


Neon açık kaynak, Apache-2.0 lisanslı. Strands Robots ile entegre çalışır. Robotik herkes için olmalı — bize katılın.