Kişisel proje · Açık kaynak (MIT)

Telefonla çekilen videodan360° sanal tur — açık kaynak.

Motorun sentetik kalite testinde kullandığı prosedürel odanın 360° görüntüsü
Sentetik oda
Sürükleyin
Bu oda gerçek değil: motorun kalite kapısının ürettiği prosedürel oda. Her dikiş, bu odanın kusursuz görüntüsüne karşı puanlanır.

Odanın ortasında telefonu bir tur çevirin: BioSphere en keskin kareleri seçer, kameranın nasıl döndüğünü çözer ve 8K'ya kadar küresel bir panorama diker. Dikiş motorunu hazır bir 360 kütüphanesine dayanmadan, sıfırdan kendim yazdım; odaları birbirine bağlayan oynatıcıyı, kat planını ve tura gömülen yapay zekâ araçlarını da.

  • MIT lisansı
  • Kendi bilgisayarınızda çalışır
  • Python + Next.js
git clone https://github.com/bilalgurkansanli/BioSphereAI.git

Ekran görüntüleri

Kurduktan sonra göreceğiniz ekranlar

Görüntüler temiz bir kurulumda, sentetik odalarla alındı; hiçbirinde kimsenin evi yok.

localhost:3000/embed/…
Sentetik bir odanın 360° oynatıcıdaki görünümü: kapı eşiğinde bir zemin halkası, üstte oda çubuğu, altta araçlar
Üstte oda çubuğu, kapı eşiğinde bir zemin halkası; altta kuş bakışı, ölçüm ve VR. Çözünürlük, keskin katmanlar geldikçe 8K'ya kadar kademeli yükselir.

Proje durumu

Neler hazır, neler gelişiyor

Ekim 2026 itibarıyla. Her bileşeni ölçerek geliştirdim; sayılar tahmin değil ölçüm ve kodun yanında duruyor. Nerede sınıra geldiğimi de açıkça yazdım.

  • 4Kararlı
  • 2API anahtarıyla
  • 2Deneysel
  • 1Sıradaki adım
Kararlı

İyi çalışıyor

  • Rehberli telefon çekimi ve 360° dikiş

    Projenin kalbi, sıfırdan yazdığım dikiş motoru. OpenCV'nin hazır stitcher'ı yerine kendi hattı: telefon videosundan 8K'ya kadar eşdikdörtgen panorama. Döngü kapatmalı, yalnızca dönüşe dayalı demet ayarı; elde çekimin paralaksına karşı mesh hizalama; graph-cut dikişler, çok bantlı harmanlama ve kutup doldurma. Sentetik bir kalite kapısı prosedürel bir oda render eder, telefon çekimini taklit eder (hareket bulanıklığı, rolling shutter, pozlama kayması, paralaks) ve çıktıyı gerçeğe karşı puanlar.

    • 4096 px ≈ 170 sn (önce 1278 sn)
    • 16 iş parçacıklı dizüstü
  • 360° oynatıcı

    Odalar, kapı eşiklerinden geçiren zemin halkaları, oda çubuğu, ölçüm aracı (ölçek kamera yüksekliğinden gelir), kademeli çözünürlük ve her sayfaya giren bir iframe.

    • three.js
    • <iframe>
  • Panoramalardan kat planı

    Her odanın panoramasından oturtulan oda, boyutu bilinen odalarda gerçek zeminle 0,984–0,991 IoU örtüşüyor; kenarlar 9 cm içinde. Plan elle düzenlenebilir.

    • IoU 0,984–0,991
    • kenar ≤ 9 cm
  • Hesaplar, QR çekim bağlantıları, yüklemeler

    Telefon giriş yapmadan çeker: QR bağlantısı 12 saat geçerli, tek bir eve bağlı ve yalnızca izin listesindeki rotalarda geçiyor. Parçalı, kaldığı yerden devam eden yüklemeler; işin ilerlemesi canlı izleniyor.

    • 12 sa · tek ev
    • devam ettirilebilir yükleme
API anahtarıyla

Bir Anthropic anahtarı gerekir

  • İlan metni

    Türk ilan portalları için başlık ve açıklama. Metindeki her sayı, ölçülmüş gerçeklere karşı denetleniyor.

    • ≈ 0,005 $ / ilan
    • Claude Haiku
  • Oynatıcıda yatırım asistanı

    Kira getirisi, amortisman, alım masrafları, kredi taksiti ve bölgedeki fiyat eğilimi. Bütün aritmetik motorun deterministik araçlarında yapılıyor; piyasa verisi web aramasından, kaynağıyla geliyor. İlan başına ve genel günlük bütçe sınırları var. Tahmindir, yatırım tavsiyesi değildir.

    • ≈ 0,03 $ / soru
    • varsayılan Sonnet 5.5
Deneysel

Çalışıyor, sınırlarıyla

  • VR

    Gözlüklerde WebXR (Quest, Vision Pro) ve telefonla “VR kutusu” (Cardboard) modu: mercek düzeltmesi ve bakışla seçim. Birim testleri var ve masaüstünde denendi; gerçek bir gözlükte ya da telefonda henüz denenmedi.

    • WebXR
    • gerçek cihazda denenmedi
  • 3B gezinti

    Bir gezinti videosundan Gaussian splat modeli: ALIKED + LightGlue, COLMAP/GLOMAP, Brush eğitimi, SOG dışa aktarımı, PlayCanvas görüntüleyici. Özenle çekilmiş videoda çalışıyor; hızlı, bulanık ya da mesajlaşma uygulamasından geçmiş bir telefon videosu ayrı parçalara bölünüyor.

    • GPU gerekir
    • ≈ 30 dk / model
Sıradaki adım

Prototip; geliştirilmeye açık

  • Mobilya kaldırma ve sanal dekorasyon

    Prototip olarak çalışıyor: panoramada mobilyanın yerini odanın kendi duvar ve zeminiyle doldurmayı denedim ve koyu leke oranını 0,43–0,71'den 0,08–0,11'e indirdim. Ama yerel modellerle (LaMa, SD 1.5 + ControlNet, Mask2Former) üretim kalitesine ulaşmıyor; zeminler hâlâ düz kalıyor, dekorasyon odayı yeniden tasarlamak yerine mobilyanın yüzünü değiştiriyor. Bunun için daha büyük modeller ve ciddi bir GPU bütçesi gerekiyor. Bu yüzden odağımı projenin çekirdeği olan 360 motoruna verdim; bu kısım sıradaki adım.

    — projenin geliştiricisi · bilalgurkansanli
    • LaMa
    • SD 1.5 + ControlNet
    • Mask2Former

Hikâye

Proje hikâyesi

BioSphere'i emlakçılar için bir ürün olarak tasarladım: fotoğrafçı ya da 360 kamera gerektirmeden, telefonla çekilen bir videodan gezilebilir bir tur. Fikirden çalışan sisteme kadar her katmanı — dikiş motoru, 3B yeniden yapılandırma, web oynatıcı, panel ve yapay zekâ araçları — tek başıma geliştirdim.

Sonra emlakçılarla tek tek görüştüm. Gördüğüm şu oldu: çoğu emlakçı ilan için video bile çekmiyor; bir dakikalık bir 360 çekimi de çoğu için ya fazladan bir zahmet ya da tercih etmedikleri bir şey. Büyük ilan portalları da benzer bir turu üyelerine zaten ücretsiz sunuyor. Bu tabloda BioSphere'in bir ürün olarak tutunmayacağını düşündüm — ve bunu erken görmek, sistemi kurmak kadar değerli bir ders oldu.

Bu yüzden rafa kaldırmak yerine açık kaynak yaptım; herkes erişebilsin, kullanabilsin, üzerine bir şey inşa edebilsin. Hesaplamalı fotoğrafçılık, 3B yeniden yapılandırma, gerçek zamanlı render ve bir LLM ajanı — hepsi tek bir dizüstünde çalışıyor. Bir telefon videosunu gezilebilir bir 360° tura çeviren sistemi baştan sona kendi başıma kurabilmiş olmak beni gerçekten mutlu ediyor. Okuyun, çalıştırın, geliştirin; katkılar memnuniyetle karşılanır.

  • Tek geliştirici: motor, web, panel ve yapay zekâ
  • MIT lisansı: kullanın, değiştirin, dağıtın
  • Ölçerek geliştirildi: her karar bir sayıya dayanıyor
  • İsteğe bağlı yapay zekâ özellikleri dışında her şey yerelde

Mimari

Nasıl çalışır

İki ayrı hat. 360° tur saf dönüşe dayanır: telefon tek bir noktanın çevresinde döndüğü sürece kameranın konumu değil, yalnızca yönü çözülür. 3B gezinti ise kameranın yürüdüğü yolu çözer ve sahneyi Gaussian splat'lerle yeniden kurar.

360° tur

  1. 01

    Telefon videosu

    rehberli çekim, oda başına bir tur

    MP4 · MOV

  2. 02

    Anahtar kareler

    en keskin kareler seçilir

    FFmpeg

  3. 03

    Dönüşler

    demet ayarı + döngü kapatma

    SciPy

  4. 04

    Dikiş ve harmanlama

    mesh hizalama, graph-cut, çok bantlı

    OpenCV

  5. 05

    8K equirect

    kutup doldurma, 512 → 8192 px

    JPEG

  6. 06

    Oynatıcı / iframe

    odalar, plan, ölçüm, VR

    three.js

Kalite kapısı. Prosedürel oda → simüle telefon çekimi (hareket bulanıklığı, rolling shutter, pozlama kayması, paralaks) → aynı hat → gerçeğe karşı PSNR / SSIM. “Görünür kusur yok” bir görüş değil, bir ölçüm.

3B gezinti

deneysel
  1. 01

    Gezinti videosu

    dairede yavaşça yürüyerek

    MP4

  2. 02

    Öznitelikler

    kareler arası eşleşmeler

    ALIKED + LightGlue

  3. 03

    Kamera yolu

    konum, ölçek, odaların yerleşimi

    COLMAP / GLOMAP

  4. 04

    Eğitim

    3B Gaussian splat

    Brush

  5. 05

    Sıkıştırma

    temizlik ve SOG

    splat-transform

  6. 06

    Görüntüleyici

    yürüyüş ve serbest uçuş

    PlayCanvas

Motor
Python 3.11–3.13 · FastAPI · OpenCV · NumPy / SciPy · SQLite
Web
Next.js 16 · React 19 · three.js · PlayCanvas · Tailwind CSS

Mühendislik

Ölçülmüş sayılar

Her sayının arkasında bir ölçüm betiği var; çoğu ARCHITECTURE.md'de, neyin denenip neden bırakıldığıyla birlikte yazılı.

Referans gerçek çekim, 4096 px

≈ 7,5×

önce
1.278 sn
şimdi
≈ 170 sn

Aynı çekim, aynı 16 iş parçacıklı dizüstü: 1278 saniyeden yaklaşık 170 saniyeye.

Kat planı IoU

0,984–0,991

Panoramadan oturtulan odaların, boyutu bilinen odalarda gerçek zeminle örtüşmesi. Kenarlar 9 cm içinde.

8K

Eşdikdörtgen çıktı

Oynatıcı 512 px'lik önizlemeyle açılır, ardından 2K, 4K ve 8K katmanlarına geçer.

≈ 0,005 $

İlan metni başına

Claude Haiku ile; metindeki her sayı ölçülmüş gerçeklere karşı denetlenir.

≈ 0,03 $

Yatırım sorusu başına

Varsayılan Sonnet 5.5; ilan başına ve genel günlük bütçe sınırlarıyla.

12 sa

QR çekim bağlantısı

Tek bir ev, izin listesindeki rotalar; telefon giriş yapmaz.

Ana fikirler

  • 01

    Saf dönüş modeli

    Telefon tek bir noktada döndüğü sürece sahnenin derinliği gerekmez: demet ayarı yalnızca dönüşleri çözer, döngü kapatma turun sonunu başına bağlar.

  • 02

    Paralaksa karşı mesh hizalama

    Telefon merceğin değil kolun ucunda döner. Yakın eşyalarda kalan kaymayı yerel bir mesh deformasyonu emer.

  • 03

    Graph-cut dikiş, çok bantlı harmanlama

    Dikiş, görüntülerin en az ayrıştığı yerden geçer; harmanlama her frekans bandında ayrı yapılır, kutuplar ayrıca doldurulur.

  • 04

    Sentetik kalite kapısı

    Prosedürel bir oda, simüle edilmiş bir telefon çekimi ve gerçeğe karşı bir puan. Bir değişiklik çıktıyı kötüleştirirse testler kırmızıya döner.

Kurulum

Hızlı başlangıç

Proje Windows'ta geliştirildi ve betikler PowerShell. Linux ve macOS'ta elle kurulum adımları aynı sonucu verir.

Gereksinimler

AraçSürüm
FFmpegKare ayıklama ve kodlama6+
PythonMotor3.11–3.13, uv ile
Node.jsPanel, çekim uygulaması, oynatıcılar22+
NVIDIA GPUStüdyo modunda RAFT, 3B gezinti ve yapay zekâ araçlarıisteğe bağlı
Brush · splat-transform · pycolmap + LightGlueYalnızca 3B gezinti içinisteğe bağlı

İlk oluşturduğunuz hesap, kurulumdaki sahipsiz verileri üstlenir. Bütün API anahtarları isteğe bağlıdır. engine/.env.example

PowerShell
git clone https://github.com/bilalgurkansanli/BioSphereAI.gitcd BioSphereAI./scripts/setup.ps1     # -Gpu: CUDA PyTorch ve yapay zekâ ekleri./scripts/dev.ps1       # motor :8008, panel :3000# ya da: scripts/start-dev.cmd (çift tıklayın)

PowerShell yerel betikleri çalıştırmayı reddederse betiği şöyle başlatın:

PowerShell
powershell -ExecutionPolicy Bypass -File ./scripts/setup.ps1

Sonra açın

  • Panellocalhost:3000
  • Motor127.0.0.1:8008
  • API belgeleri127.0.0.1:8008/docs

Herkese açık bir kurulum işletiyorsanız işletmeci sizsiniz: kendi gizlilik bildiriminiz ve koşullarınız sizin sorumluluğunuzda. İsteğe bağlı yapay zekâ özellikleri açıkken veriler Anthropic'e gider.

Katkı

Yardım aranıyor

Issue'lar ve pull request'ler açık. En çok fark yaratacak yerler şunlar; başka bir fikriniz varsa önce bir issue açın, birlikte bakalım.

  • AI · GPU

    Daha iyi mobilya kaldırma modelleri

    Düz, grimsi zeminler ve kaçan küçük eşyalar. Daha iyi bir segmentasyon ve inpainting hattı ya da makul maliyetle çalışan büyük bir model.

  • VR

    Gerçek cihazda VR testi

    Quest, Vision Pro ya da bir Cardboard ile denemek ve bulduklarınızı bir issue'ya yazmak — kod yazmadan da çok değerli.

  • Docs · 3D

    3B gezinti için çekim rehberi

    Hangi hız, ışık ve rota tek parça bir model veriyor? Ölçülerek yazılmış kısa bir rehber.

  • DX

    Linux / macOS kurulum betikleri

    setup.ps1 ve dev.ps1'in bash karşılıkları; elle kurulum adımları zaten çalışıyor.

  • DX

    Docker

    Motoru ve paneli tek komutla ayağa kaldıran, GPU'lu ve GPU'suz çalışan bir imaj.

  • Docs

    Mimari notlarının çevirisi

    ARCHITECTURE.md şimdilik Türkçe. İngilizce bir çeviri, projeyi okumak isteyen herkesin işine yarar.

github.com/bilalgurkansanli/BioSphereAI

Telefonla çekilen videodan 360° sanal tur