Kuru ürünler 3B ağ nesne tanıma için akıllı bir yöntem

AI Technology Review Press Bu makale, VGG16 benzeri ağ kullanılarak "Tupu Teknolojisi" Orta-3B vücut tanımadan derlenmiştir.

Mart 2017'de, o zamanki patronum 3B nesnelerin otomatik olarak tanınmasının neredeyse imkansız olduğunu söyledi, ancak herkes oybirliğiyle karşı çıktı.

Bu nedenle, bugün çözmek istediğim sorun şudur: Sınıflandırma olasılığının çıktısını elde etmek için 3B örgü nesnelerinin (orijinal üçgenler ve köşeler) nasıl girileceği.

Aşağıdaki çözümleri buldum:

  • Nesneyi ölçekleyin ve onu voksellere bölün. Sinir ağına vokseller verin.

  • Çok sayıda tanımlayıcı hesaplayın ve bunları sınıflandırıcıya koyun.

  • Nesneleri birden çok taraftan yansıtın, bunları ayrı bir sınıflandırıcıyla tanımaya çalışın ve ardından meta sınıflandırıcıya koyun.

Burada, nispeten basit ve etkili bir yöntem olan DeepPano yöntemini detaylandırmak istiyorum.

veri Hazırlama

Günümüzde görüntü veri setleri çok sayıda örnek içermektedir. Ancak 3B model veri setleri açısından durum böyle değil. 3B model veri setinde binlerce görüntü yoktur, bu nedenle 3B model tanıma derinlemesine çalışılmamıştır ve 3B model veri seti dengeli değildir. Çoğu veri seti hizalanmamış nesneler içerir.

ModelNet10, nispeten net bir 3B nesne veri kümesidir. 3B nesneler veri kümesinde noktalar, çizgiler ve yüzeyler içeren .off dosyaları olarak saklanır. .Off dosya biçimi kumaş, doku ve diğer malzemelerin görüntülenmesini desteklemez.

İşte nesnelerin türleri ve örneklerin sayısı:

Toplam numune sayısı yaklaşık 5000'dir. Elbette bu veri seti de çok düzensiz.

Yapılacak ilk şey, sınıflandırıcı türünü seçmektir. Görüntüler ve konuşma gibi önemli veriler için teknik çözümler sinir ağlarına (veya Kaggle yarışmalarında sıklıkla kullanılan özel bileşenlere) dayandığından, sinir ağlarını eğitmek mantıklıdır. Sinir ağları, veri setinin dengesine çok duyarlıdır. Dolayısıyla ikinci adım, veri setini daha dengeli hale getirmektir.

Daha fazla veri elde etmek ve genişletilmiş bir veri seti oluşturmak için 3dWarehouse'dan elde ettiğim modeli kullanmaya karar verdim. Bu modeller .skp dosya biçiminde saklanır, bu nedenle dönüştürülmeleri gerekir. SketchUp C Api- kullanarak .skp oluşturdum > .off dönüştürücü.

Bir sonraki adım veri temizlemedir, aynı görüntü silindi. Şu şekilde tahsis edilebilir:

Bu şekilde veri seti daha dengeli görünür. Tuvaletler dışında hemen hemen her nesne kategorisi yaklaşık 1.000 örnek içerir. Diğer nesne türleri arasındaki dengesizlik, sınıflandırma ağırlıkları ile düzeltilebilir.

Veri ön işleme

Önceki adımlarda birkaç önemli şey yaptık.

  • Sorunu belirt.

  • Kullanacağımız temel veri setini (ModelNet10) indirin.

  • İlk on nesne kategorisinden yedi kategori seçildi.

  • .Skp- oluşturarak > Modeli 3d depoda dönüştürmek için .off dönüştürücü. Veri seti daha dengeli hale gelir.

Şimdi verileri ön işleme hakkında daha fazla bilgi edinmeye başlayın.

Ön işleme sürecinde, veri ön işlemenin nihai sonucu, 3B ağı temsil etmek için yeni bir görüntü kullanmaktır. Görüntüyü oluşturmak için silindirik projeksiyon kullanacağız.

3D örgü

Bu nesnenin dönüştürme sonucu

Öncelikle 3B ağda okumalı ve saklamalıyız. Bu, güçlü trimesh kitaplığı aracılığıyla yapılabilir. Yalnızca okuma / yazma işlevleri sağlamakla kalmaz, aynı zamanda ızgara dönüşümü, ışın izleme vb. Gibi çok sayıda başka yararlı işlev de sağlar.

İkinci adım, silindirik izdüşümü hesaplamaktır. Silindirik projeksiyon nedir? XoY düzleminin merkezinde bir küp bulunduğunu ve orijinin dikey bir eksene sahip olduğunu varsayalım.

Not: Nesnenin ana ekseni dikey değilse, nesne tanımadan önce yön hizalama algoritmasını uygulamanız gerekir. Bu tamamen farklı bir alandır, bu nedenle bu konu burada tartışılmayacaktır.

Küp ve mil

Şimdi bir küpü çevreleyen en küçük silindir olduğunu varsayalım.

Şimdi silindirin kenarını M × N ızgaraya kesin.

Şimdi her bir ızgara düğümünü ana eksene dikey olarak yansıtın ve bir dizi yansıtma noktası elde edin. İzdüşüm noktaları kümesi P ile temsil edilir. İzdüşüm çizgileri kümesi S ile temsil edilir.

Yeşil ana eksendir, kırmızı ızgaradır ve sarı, geometrik izdüşüm çizgisidir.

Şimdi S kümesindeki her bir parçayı ağ gövdesiyle, yani küple kesiştirin. Her ışından bir kesişme noktası alacaksınız. Noktayı ilgili ızgara düğümüne atayın.

Aslında bu özel bir durumdur. Genel olarak, S'deki bir izdüşüm çizgisinin birden fazla kesişme noktası olabilir veya hiç kesişme olmayabilir. İşte bir örnek.

Bu nedenle, genellikle bu işlemin sonucu, her birimdeki bir M × N matristir ve bir dizi kesişim noktası olabilir veya boş olabilir. Bir küp için, her hücre tek elemanlı bir dizi içerecektir.

Bir sonraki adım, her hücrenin kesişme noktasından M'deki karşılık gelen noktadan en uzak noktayı seçmek ve aralarındaki mesafeyi M × N matrisine yazmaktır. Matris (veya görüntü) R'ye panorama denir.

Neden en uzak noktayı seçiyoruz? En uzak noktalar genellikle nesnenin dış yüzeyinde yoğunlaşır. Modülü tanımlamak için kullanılabilecek bir panorama kullanacağız. Elbette birisi şöyle diyebilir: "Aynı yüksekliğe sahip bir halka ve bir silindir tam olarak aynı panoramayı sunacaktır" veya "Ortasında küresel bir deliği olan bir küp ve deliksiz bir küp aynı panoramayı sunacaktır", bu doğru. Panoramik görüntülerde 3B nesnelerin işlenmesi mükemmel değildir, ancak işlemek için voksel kullanırsanız, böyle bir dezavantaj yoktur. Neyse ki, sandalyeler, yataklar, arabalar veya uçaklar gibi gerçek nesneler, karmaşıklıkları nedeniyle nadiren aynı panoramaya sahiptir.

Son adım, hücrenin değerini aralığa ölçekleyerek R matrisini normalleştirmektir. Hücrenin kesişimi yoksa hücrenin değeri sıfırdır.

Şimdi R matrisini gri tonlamalı bir görüntü olarak düşünebiliriz. Burada, açıklanan işlem için bir python kodu ve panorama hesaplaması örneği verilmiştir.

Beton yatak, sandalye ve tuvaletin panoramik görünümü.

Şimdiye kadar tamamlanan adımları özetleyelim.

  • Şimdi 3B ağı gri tonlamalı bir görüntü olarak temsil ettik.

  • 3D nesneler doğru şekilde hizalanmalıdır. Doğru hizalanmamışsa, önce yön hizalama algoritmasını kullanmamız gerekir.

  • İki farklı nesnenin aynı panoramaya sahip olması mümkündür ancak bu olasılık çok küçüktür.

Artık evrişimli bir sinir ağı oluşturmaya ve tanıma problemini çözmeye hazırız.

Tanıma başlayın!

Önceki adımda çok önemli bir şey yaptık, yani sinir ağına (NN) sağlayabileceğimiz 3B nesneleri görüntülere dönüştürmek için uygun bir yöntem bulmak.

Adımlar aşağıdaki gibidir:

1. adımı daha önce tamamlamıştık, bu yüzden şimdi 2. ve 3. adımlara başlıyoruz.

Model oluşturma ile başlayalım.

Mimaride RWMP katmanını görebilirsiniz. DeepPano belgesine göre, RWMP katmanının işlevi, 3B nesne ana eksen etrafında döndüğünde tanıma doğruluğunu değişmeden tutmaktır. Teknik olarak konuşursak, RWMP sadece bir MaxPooling satırıdır.

Model hazırlandıktan ve derlendikten sonra verileri okuyun, ardından yenileyin ve görüntü boyutu ayarlaması yoluyla bir ImageDataGenerator oluşturun. Verilerin önceden eğitilmiş, doğrulanmış ve 70:15:15 oranında test edildiğini lütfen unutmayın. Görüntü sentetik olduğundan ve bir 3B nesneyi temsil ettiğinden, veriler şu nedenlerle artırılamaz:

  • Görüntü gri tonlamalı olduğundan, renk geliştirme yapılamaz.

  • RWMP'nin varlığı nedeniyle, yatay çevirme gerçekleştirilemez.

  • Dikey çevir, nesneyi baş aşağı çevirmek anlamına gelir.

  • Görüntünün sentetik yapısı nedeniyle ZCA beyazlatma kullanılamaz.

  • Rastgele dönüş, değerli nesne köşe bilgilerini kaybedecek ve bunun 3B nesnelerin dönüşümü üzerinde ne gibi bir etkisi olacağından emin değilim.

Bu yüzden burada uygulanabilecek herhangi bir veri büyütme yöntemi düşünemiyorum.

Şimdi modeli eğitmeye başlayın.

Sonucu görelim.

Mutlak doğruluğu eğitmek ve mutlak doğruluğu onaylamak

Gördüğünüz gibi, model doğrulamasının doğruluğu% 92'ye ve eğitim doğruluğu% 95'e ulaştı, bu nedenle aşırı uyum söz konusu değil. Model veri seti testinin genel doğruluğu 0.895'tir.

Sınıflandırma raporu:

Test veri setinin karışıklık matrisi

Bu modeli kendimiz de ayarlayabiliriz.

Yukarıdaki kod parçacığından

Sonuçlar iyi görünüyordu, bazı masaların yanlışlıkla tuvalet masası olarak tanımlanması dışında her şey yolunda gitti. Bunun neden olduğundan emin değilim. Bu, gelecekte iyileştirilmesi gereken adımlardan biri olabilir.

İyileştirilmesi gerekebilecek alanları listeleyelim.

  • Tanımlanırken malzemeler, dokular, geometrik boyutlar gibi faktörler dikkate alınmalıdır aksi takdirde düzensiz bir model oluşacaktır.

  • Veri kümesinin dengesini iyileştirin veya en azından sınıflandırma ağırlıkları kullanın. Modeller oluşturmak (VAE gibi) veri setini daha dengeli hale getirebilir.

  • Daha fazla nesne kategorisi ekleyin.

  • Panoramalara ve vokseller gibi farklı temsillere dayalı meta modeller oluşturun. Bu pahalı olabilir.

Şimdiye kadar tüm adımlar tanıtıldı.

Not: Bu makale "Tuputech" tarafından derlenmiştir, derin öğrenmeye dayalı "görüntü tanıma" uygulamasını deneyimlemek için WeChat genel hesabı tuputech'i takip edebilirsiniz.

Bilgisayar görüşü hakkında daha fazla bilgi edinmek ister misiniz?

"Orijinali oku" yu tıklamaya hoş geldiniz

Veya AI Araştırma Topluluğu topluluğuna geçin ~

Wang Jing tarafından yönetilen dört "düşük anahtar" çalışmadan sonuncusu Lin Zhiying hala hile yapıyor!
önceki
AMG GT Concept üretim versiyonu önümüzdeki yıl Mart ayında piyasaya sürülecek
Sonraki
Saten malzeme sıcak mı? ! Gelişen sacai ve emektar bagaj markası PORTER birlikte yeniden açılıyor!
Intel'in yeni "süper heterojen bilgi işleminin" gizemini çözüyor: "süper" nerede diye sormaya cesaretin var mı?
Özet | Ye Zhihao: Pekiştirmeli öğrenmeye giriş ve NLP'deki uygulaması
Mi 9, video çekiminde dünyanın 1 numarası olan DoX'te dünyanın 3'üncü sırasına yerleşti ve Xiaomi kamera departmanı büyük katkılarda bulunuyor
Soğuk yerli Berlin Film Festivali: siyah animasyon, köylü kızı ve kayıp Ang Lee?
NIO Power, elektrikli araçların endişesini nasıl hafifletiyor?
Xiaomi 9SE, 1999 yuan'dan başlayarak Snapdragon 712 + 4800W HD pikselleri piyasaya sürdü
BMW X2, 2017 Los Angeles Otomobil Fuarı, Q2 / GLA'da görücüye çıkabilir
Cüzdanınız tamamen umutsuz! Palace 2017 sonbahar / kış serisi Lookbook tamamen açık!
Roborock süpürme robotu 100 yuan düştü ve fiyatı 2399 yuan
Krem nişinden karanlık at prensine ve aktöre kadar Louis Koo, Hong Kong filmlerinin sembollerinden biri haline geldi.
Turing Ödülü kazanan John Hennessy ve David Patterson ile röportaj: Gelecekte, ilkokul öğrencileri makine öğrenimi yapabilirler
To Top