Sonunda geçtiğimiz yıl neler geliştirdiğimizi ve hangi sorunları aştığımızı konuşma zamanı geldi; bu, SketchAR kullanıcılarının kuralların sınırları olmadan yaratıcılığın özgürlüğünü hissetmesi yolunda attığımız bir başka önemli adım.
Mevcut teknolojinin sınırlamalarına rağmen, sanal içerik sunan mobil uygulamalara büyük bir açlık var. Bilgisayarla görme, yazılımın donanımla sıkı sıkıya bağlı olduğu bir alan olduğundan, ne yazık ki AR ürünlerinin çoğu konsepti her zaman teknik taraftaki gecikmelerle sınırlı kalacak.
Küçük ekipler nadiren temel sorunları çözer, ama görevi basitleştirecek bir yöntem bulabiliriz.
Neden tekerleği yeniden icat edelim ve neden bizden önce kimse bunu denememiş?
Çoğu üçüncü taraf kütüphane ve platform, sanal bir nesneyi gerçek dünyadaki konumuna sabitlemek için önceden yerleştirilmiş işaretleyicilere dayanır. Bizim durumumuzda, resmi çizen el bu işaretleyicileri engelliyordu, bu yüzden kendi yöntemimizi geliştirmek zorunda kaldık.

ARKit işaretleyiciler olmadan aynısını yapamaz.
Buna ek olarak, ARKit ve ARCore işaretleyicilere dayanmasa da (ortam hariç), sanal nesneleri sabitleme doğruluğu, önceden yerleştirilmiş bazı işaretleyiciler sanal nesneyi yerinde tutsaydı daha iyi olurdu. Mevcut yöntem, kullanıcıya rehberlik etmek için anahtar noktaların tespiti ve takibini içeriyor, ancak kullanıcının kendi referans işaretleyicilerini belirlemesi henüz mümkün değil. ARKit ve ARCore'daki ikinci sorun ise sanal bir nesneyi gerçek dünyayla uyumlu şekilde hareket ettirememektir. Örneğin, fiziksel bir yüzeye sanal bir nesne yerleştirdikten sonra, birleşik sanal ve fiziksel yüzeyi tek bir parça gibi -sanki yapıştırılmış gibi- hareket ettiremeyiz çünkü sanal görüntü aynı konumda kalır ve yüzeyi takip etmez.
Daha önce belirtildiği gibi, SketchAR çoğu bilgisayarla görme algoritması için bir “katil” olan beyaz kâğıtla çalışır. Ancak algoritmalarımız bu tür koşullar için özel olarak optimize edilmiştir. AR içeriğini kâğıda bağlamak için yeterince kararlı ve doğrudurlar. ARKit takibi başarısız olduktan sonra bile çalışmaya devam ederler. Hız da önemlidir. Hesaplamaların çoğunu GPU'ya taşıdık, bu da SketchAR'ın 5SE modeliyle başlayan iPhone'larda gerçek zamanlı çalışmasını sağlıyor.
‘Aşamalı işaretleyiciler’ yöntemi.
Bu, sanatçının çizdiği bir çizginin bir çapaya dönüşmesi ve sanal nesnenin sabit tutulmasına kararlılık katması anlamına gelir.
Ayrıca, toplanan veriler her kullanıcı için tam donanımlı, kişiselleştirilmiş bir asistan geliştirmemize yardımcı olmaya devam etmek için kullanılıyor. Bu arada, her kullanıcının çizim verilerini analiz etmek ve eğitmek için makine öğrenimi ve sinir ağları kullanıyoruz. Bundan bahsedeceğiz konuya sonraki yazılarımızda daha detaylı değineceğiz.
Houston, bir sorunumuz var ya da çalışma prensibi ile ‘korkmaya gerek yok.’
Sorunun nasıl çözüldüğünü anlamak için başa dönmek gerekiyor:
Ortam. Her yüzeyin farklı bir dokusu, rengi ve yapısı vardır. Ayrıca algoritmalar, ortamın yabancı ‘gürültülerinden’ etkilenebilir. Filtreler bu sorunu çözer (Photoshop'taki kanallara benzer şekilde ‘Kanallar’).
Yüzeylerin birleştirilmesi zordur, tabii bir sinir ağının eğitimi kullanıcılardan gelen gerçek verilere dayanmıyorsa. Bir sinir ağının eğitimi devam eden bir süreçtir ve bu nedenle ürünün tamamlanmış bir parçası olarak asla düşünülmemelidir.
‘Tuval’. Tuval, üzerine çizim yapmayı seçebileceğiniz bir kâğıt yaprağı, bir duvar veya başka herhangi bir yüzeydir. ‘Tuvallerin’ çeşitliliği yalnızca boyutlarla belirlenir. Aynı zamanda, beyaz renk bilgisayarla görme için bir ‘düşmandır’. Bunun neden olduğunu anlamak için lütfen ‘Beyaz Kâğıt Sorunu’ yazımızı okuyun.
Çizim. Elbette kullanıcımızın beceri düzeyini biliyoruz ve bir eskizin orijinal görüntüyle birebir eşleşmesini beklemiyoruz. Bu yüzden algoritmamız kullanıcı tutarsızlıklarını hesaba katar.
Eller. Uygulamanın başarılı çalışması için bir diğer ‘düşman’, ekrandaki elin bir yüzeyi, işaretleyicileri veya çizimin kendisini kestiği durumlardır. Boyut ve şekil, cilt rengi ve hatta kalemi tutma tarzı, algoritmanın dikkatinin bir kısmını dağıtır.
Cihaz. Cihazın sabit olmayan konumu. Kullanıcılar telefonu tek elle tutar, farklı açılarda yüzeye yaklaşır ve uzaklaşır.
Çözüm.
Bu sorunları detaylı bir şekilde analiz ettikten sonra, uygulamaya yalnızca kullanıcının çizdiğini görmesini nasıl ‘öğreteceğimizi’, ortamı filtreleyip yok saymadan anladık.
Aşağıda, çevredeki dünyanın düz bir görüntüye nasıl dönüştürüldüğünü ve her birini kanallar aracılığıyla analiz etmek için katmanlara nasıl ayrıldığını görebilirsiniz.

Nasıl çalışır?
İşlenen içeriği dönüştürmek, onu orijinaliyle eşleştirmek ve ardından yüzeye sanal bir nesne yerleştirmek çok yönlü bir yaklaşım gerektirir. Aslında bu katmanların bazıları diğerlerinden çok daha önemlidir. Sürecin sadece küçük bir bölümüne baktığımızda bile her saniye ne kadar çok işlem gerçekleştiğini görmek mümkün.
Bu, ortamın nasıl düz bir görüntüye dönüştüğünün basit bir şemasıdır. Ardından analiz edilmek üzere birçok katmana (kanala) ayrılır.
Yukarıda açıklandığı gibi, katmanlar ayrılır ve bir algoritma kameraya gördüğü her şeyi birbirinden ayırt etmeyi öğretir. Örneğin, arka plan elden ayrılır, el gölgesinden ayrılır, vb.

Ekranlar soldan sağa şu sırayla:
1. Kullanıcının akıllı telefon ekranında gördüğü, yüzeye yerleştirilmiş sanal görüntü.
2. Yüzeydeki kâğıdın tanınması
3. Kâğıt, arka plandan kabaca ayrılır. Masanın yüzeyindeki gürültü görünür ve elin gölgesi tek bir nesne olarak algılanır.
4. Elin yüzeyden net bir şekilde ayrılması.
5. Yalnızca çizilen içeriğin tespiti.
6. Çizilen içeriğin ortama göre tanınması.
Uygulama, nesnelerin her birini net bir şekilde tanımayı öğrendiğinde, bunları orijinal görüntülerle eşleştirir. Unutmayın, algoritmanın her hareketi, kamera ve eller kare içinde sürekli hareket halindeyken gerçekleşir.

Algoritmanın ilk versiyonunda çok sayıda yanlış eşleşmenin nasıl oluştuğuna dair bir örnek.

Algoritmanın diğer versiyonlarındaki iyi eşleşmelerin bu örneği.
Detaylara girmeden söylemek gerekirse, bu yaklaşım ürünün pek çok sorununu çözüyor ve kullanıcı deneyimini iyileştirme görevlerini yerine getiriyor. Elde edilen verilerin uygulama alanını genişletir, böylece ürünü yeni seviyelere taşımamıza olanak tanır. Bu, makine öğrenimi ve sinir ağlarından gelen verilerle desteklenen tam donanımlı bir asistandır.
SketchAR neredeyse bir yıldır AppStore'da, yarım yıldır Play Market'de ve hatta MS Hololens'te mevcut. Kullanıcılardan ve basından gelen coşkulu yorumlara rağmen, benzer işlevselliğe sahip rakip bir uygulama hâlâ yok. Bu da sorunun karmaşıklığını ve algoritmalarımızın özgünlüğünü ortaya koyuyor.
Güncellemeleri takip edin, daha çok çizin ve teknolojiyi sevin, çünkü büyümemize yardımcı oluyor… ve yakında insanlığı köleleştirecek! ;)
Herkes için sanat!



