"Makine Öğrenimi Patlayıcı Uygulama Teknolojisinin Yorumlanması" "Sudokuyu Saniyeler İçinde Çözmek için Kamera" Nasıl Kullanılır

AI WORLD 2017 Dünya Yapay Zeka Konferansı'na Geri Sayım 22 gün

Magic Sudoku (Magic Sudoku), "Sudoku çözmek için kamerayı kullanabilen" Appleın ARKit tabanlı bir iOS uygulamasıdır - kullanıcıların yalnızca kamerayı boş Sudoku sorusuna yöneltmesi, bir resim çekmesi ve yanıtı anında alması gerekir. Özellikle zor Sudoku sorularından rahatsız olanlar için bu şüphesiz süper bir kurtarıcıdır. Söylendiği gibi, Magic Sudoku ile bu dünyada çözülemez Sudoku yoktur.

Şu anki Magic Sudoku sadece bir demo olsa da oldukça heyecan uyandırdı.Sadece çok sayıda kullanıcı tarafından aranmakla kalmadı, bu uygulama Gizmodo, CNET ve hatta "Fast Company" gibi medyalarda da yer aldı. Geliştirici Brad Dwyer, uygulamanın birkaç sinir ağı kullandığını ve her Sudoku problemini çözmenin anahtarının yinelemeli bir algoritma olduğunu söyledi.

Ardından, Xinzhiyuan, Dwyer tarafından Medium'da yayınlanan ve Magic Sudoku'yu geliştirmedeki deneyimlerini ve derslerini detaylandıran bir makale derledi.

Temel noktalar: Magic Sudoku = Keras + Vision Lib + CoreML + ARKit

Çalışma prensibi: bilgisayarla görme + makine öğrenimi + AR

Magic Sudoku, bilgisayarla görmeyi, makine öğrenimini ve artırılmış gerçekliği birleştirir. Kısacası, Sudoku bulmacasını hedeflemek için cep telefonunuzu kullanabilirsiniz ve Uygulama çalışacaktır. Bu uygulamanın temel akışı şudur:

1) ARKit kameradan yeni kareler alır;

2) Görüntüdeki dikdörtgenleri algılamak için iOS 11'in Vision Library'yi kullanın;

3) Dikdörtgen bulursanız, bunların Sudoku olup olmadığını belirleyin;

4) Sudoku olduğu tespit edilirse 81 kare görüntüye ayrışacaktır;

5) Her kare, hangi sayıyı temsil ettiğini (varsa) belirlemek için eğitimli sinir ağından geçer;

6) Yeterli sayıda sayı topladıktan sonra, bu Sudoku problemini çözmek için geleneksel yinelemeli algoritmayı kullanın;

7) Bulmaca çözümünü temsil eden 3B modeli tekrar ARKit'e gönderin ve orijinal kamera görüntüsünün üstünde gösterin

Bunların hepsi saniyede birkaç kez çalışacaktır. ARKit'i çok fazla açıklamayacağım, Sudoku çözme algoritmaları veya gerçek makine öğrenimi modelleri hakkında bir kitap yazmayacağım.İnternette bunlarla ilgili birçok öğretici var.

Benim için en ilginç şey, ilk makine öğrenimi algoritmamı eğitirken öğrendiğim pratik yön. Bu nedenle, aşağıdakiler içeriğin bu kısmına odaklanacaktır.

Makine öğrenimi pratik dersleri: modeller, veriler, eğitim ve dağıtım

İlk önce, başarısız olmanın birkaç yolunu öğrendim

Geliştirdiğimiz ilk AR uygulaması olarak Sudoku Solving'i seçtim. Bunun nedenlerinden biri, sayıları sınıflandırmanın temelde makine öğreniminde "Merhaba dünya" olduğunu bilmem. Bu nedenle, bir makine öğrenimi test projesi olarak, aynı zamanda gerçek dünyadaki sorunları çözerken, Sudoku'yu çözmek için Uygulamanın geliştirilmesi daha uygundur.

Modeli eğitmeden önce bazı stratejiler denedim, işe yararsa işler daha kolay hale gelecek. Ne yazık ki, bu stratejilerin hiçbiri işe yaramadı.

Denediğim ilk şey SwiftOCR adlı bir optik karakter tanıma kitaplığı kullanmak oldu. Benim kullanım durumumda, SwiftOCR kullanımıyla ilgili sorun, bu kütüphanenin dizeleri (hediye kartı kodları gibi) okumak için kullanılması, Sudoku ise tek bir sayı olmasıdır. SwiftOCR'nin "bu boş bir kare" ve "Bu sayıyı okuyamıyorum" arasında ayrım yapmasını sağlayamıyorum. Birkaç saatlik deneyden sonra, rastgele tahmin sayılarından çok daha iyi hale gelmedi.

Bu SwiftOCR'nin kötü olduğu anlamına gelmez. Aslında bu harika bir kütüphane, ancak bu özel sorun için uygun değil.

Ardından, CoreML'ye dönüştürülmüş önceden eğitilmiş bir MNIST modeline geçtim. Önceden eğitilmiş modelleri kullanmak çok uygun.Aslında bu aynı zamanda ulaştığım ilk kilometre taşı: .mlmodel dosyaları tamamen bağımsızdır ve Swift'deki bir sınıfa karşılık gelir ve neredeyse doğrudan çalıştırılabilir.

Maalesef, MNIST el yazısıyla yazılmış rakamlar veri setindeki sayılar bilgisayar yazı tiplerinden oldukça farklıdır, bu nedenle genelleme yapmak kolay değildir ve ilk prototipim hatalara meyillidir.

Ama buraya geldiğimde, doğru yolda olduğumu zaten biliyordum. Makine öğrenimi modelimi eğitmek için Sudoku sorularından çıkarılan gerçek dünya verilerini kullanırsam, ikincisinin daha doğru ve güvenilir olacağını umuyorum.

Veri toplama: Araçları akıllıca tasarlayın ve verileri etiketlemek için kalabalığın gücünü kullanın

Bir sonraki adım, olabildiğince çok Sudoku bulmacası örneği toplamaktır. Yerel yarı fiyatlı kitabevimize gittim ve tüm Sudoku kitaplarını satın aldım.

Ekibimdeki bir meslektaşım bu kitapları açmama yardım etti.Prototip uygulamasını değiştirdim ve onun tarafından taranan her küçük kareyi sunucuya yükledim. Her kitaptan çeşitli bulmacaları taradıktan sonra, sunucuda depolanan yaklaşık 600.000 resim var, ancak bunlar tamamen etiketlenmemiş durumda.

Bu yüzden, küçük bir numara oynadım: Hatchings'deki kullanıcılarımızın en sevdikleri uygulamaları geliştirmemize yardımcı olan basit bir yönetim aracı yaptım - klavyelerindeki sayı tuşlarına basarak görüntüleri sıraladım. Açıklamamızı Facebook'ta yayınladıktan sonra 24 saat içinde 600.000 fotoğrafın tamamı etiketlendi!

Ne yazık ki, birkaç kişi görevi yanlış anladı ve ortaya çıkan veriler çok sayıda yanlış etiketlenmiş resimle karıştırıldı. Bunu düzeltmek için, 100 resim gösteren (tümü aynı numara olmalıdır) ikinci bir araç yaptım, kullanıcıdan uyumsuz resimleri tıklamasını istedim ve ardından bunları ilk araca yeniden sınıflandırdım.

Ardından, yeterli doğrulama verisine sahibim, iki araca otomatik bir doğruluk denetleyicisi ekledim, kullanıcının bilinen görüntülerini periyodik olarak gösterecek ve kullanıcı sınıflandırmasına ne kadar güvendiğini belirlemek için çalışmasını kontrol edecek Cevap.

Önümüzdeki birkaç hafta içinde, oyuncularımız daha fazla tarama verisi sıraladı. Magic Sudoku Uygulamasını başlattığımızda, sistem Sudoku'nun milyonlarca dijital görüntüsü üzerinde eğitim almıştı.

MNIST veri kümesi yerine bu veri kümesini kullandım ve eğiticinin rehberliğinde bir sinir ağı yapmak için Keras'ı kullandım. Sonuç beklediğimden daha iyiydi:% 98,6 doğruluk! Sonraki versiyonlarda, doğruluk% 99'un üzerine çıkarılabilir.

Eğitim için gerçek dünya verilerini kullanın

O zamana kadar kitapçıdan topladığımız Sudoku külliyatları iyi çalıştı. Farkına varmadığımız şey, bunun dünyadaki uçsuz bucaksız Sudoku okyanusunun sadece küçük bir parçası olduğuydu.

Magic Sudoku piyasaya sürüldükten sonra, hemen uygulamanın çalışmadığına dair raporlar almaya başladık. Bunu şimdi düşünmek normaldir - ama o sırada gerçekten fark etmemiştik! Kullanıcılar uygulamamızı denemek istiyor, ancak ellerinde Sudoku soruları olmadığı için Google'da arama yapıyor ve denemek için fotoğraf çekiyorlar.

Makine öğrenimi modelimiz eğitim için yalnızca kağıt üzerinde Sudoku kullanır; ekrandaki piksellerle nasıl başa çıkacağımızı bilmiyoruz. Sonraki hafta boyunca bütün gece ayakta kaldım ve modeli bilgisayar ekranındaki verilerle yeniden eğittim.

İkinci sorun, Apple'ın ARKit ürününün yalnızca masa ve zemin gibi yatay yüzeyleri desteklemesidir (ekranlar gibi dikey yüzeyleri değil). Bu sorunu çözmek zor, ancak bir çözüm buldum. Yatay olmayan yüzeylere yerleştirilen Sudoku sorularını tanımlamak için sezgisel işlev ve FeaturePoint algılamanın bir kombinasyonunu kullandım.

Beklenmeyen bir başka sorun da ARKit'in otomatik odaklamamasıdır (odak sabitlenmiştir). Cihazlar arasında da bazı değişiklikler var (iPhone 7 kamera sensörümde çalışıyor, ancak iPhone 6S yakın mesafeden odaklanamıyor). Bu bağlamda "onarım" yöntemimiz bulanık görüntüyü eğitim setine eklemektir.

Bu resimlerden yararlı bilgiler çıkarabilir miyim bilmiyorum, net olarak göremiyorum bile ... Ancak, bulanık resimler eklemek modelin doğruluğunu etkilemiyor gibi görünüyor! Bu şekilde, görüntüdeki sayılar çok bulanık olsa bile, Magic Sudoku uygulamasının mevcut sürümü iyi çalışacaktır.

Kendi makinenizi oluşturmak için buluta gidin: AWS GPU'dan daha uygun maliyetli olan 1.200 $!

Son olarak, Amazon AWS GPU bulut sunucusu derin öğrenme ve Google Cloud derin öğrenme ürünleri hakkında son zamanlarda pek çok haber var, bu yüzden ikisini de kullandım. (FloydHub'ın "Heroku Derin Öğrenme" platformunu da denedim).

Sonuç: kullanışlı, ancak yavaş. 2016 Macbook Pro'm, tensorflow-cpu'yu AWS p2.xlarge GPU bulut sunucularından daha hızlı çalıştırıyor. Eğitim darboğazının bilgi işlemden çok disk olduğundan şüpheleniyorum.

Buluta seyahat etmek de çok pahalıdır. Hesaplamalarıma göre, kendi kendime bir makine inşa etmek iki aydan az sürüyor, bu yüzden 1.200 $ harcadım ve normal özelliklere sahip bir makineyi ebeveynlerimin bodrumunda biriktirdim (işte https://pcpartpicker.com/list/ formu. FRmGCy).

Veri setimi çalıştırırken, kendi makinem bir AWS GPU bulut sunucusundan 3 kat daha hızlı ve maliyetin yakında geri kazanılması gerektiğine inanıyorum.

Sonraki adım

Hala makine öğreniminde acemiyim, ancak bu Magic Sudoku Uygulamasını geliştirerek çok şey öğrendim.

Önümüzdeki birkaç hafta içinde, düzeltilmesi gereken uzun bir düzeltme listem var ve mevcut özellik setinde küçük iyileştirmeler yapacağım. Artık garip yazı tipleri, ağırlıklar, dolgu ve bulanıklaştırma ile ilgili sorunların çoğunu çözdüğüme göre, sonraki adım Sudoku'yu daha iyi tanımak için sezgisel işlevimi geliştirmektir.

Başlığın bulmacası ile kağıdın kenarı arasında fazla dolgu yoksa veya kenara yakın bir metin varsa, mevcut sürüm (v1.4) sorun yaşayabilir. Bu yüzden denemeye devam edeceğim.

Doğru hizalanmış Sudoku sorularını ve kötü taranmış veri kümelerini topluyorum. Bu verileri başka bir sinir ağını eğitmek için kullanmayı planlıyorum. Bu sinir ağının rolü, kötü tarama verilerini filtrelemektir.

Biraz daha ileriye baktığımızda, bazı harika özellikler de eklemeyi planlıyoruz. Örneğin, tamamlanmış Sudoku'ya bir "checkr" işlevi eklemek istiyoruz. Bu yeni işlevlerin çoğunun el yazısını bilgisayar tarafından verilen sayılardan okuması ve ayırması gerekir, bu nedenle yeni makine öğrenimi modellerini eğitmeye hazırlanmak için dünyanın her yerinden kullanıcılardan el yazısı örnekleri topladık. Görüşleriniz açığız!

Orijinal adres: https://blog.prototypr.io/behind-the-magic-how-we-built-the-arkit-sudoku-solver-e586e5b685b0

AI WORLD 2017 Dünya Yapay Zeka Konferansı'na Geri Sayım yirmi iki gün

Konferans için bilet satışları çok sıcak ve bilet alma bağlantısı:

[Konferansa bilet satın almak için orijinal metni tarayın veya tıklayın]

1.3T motora sahip en ucuz Amerikan orta boy otomobil, yüz kilometrede yalnızca 5,8 litre yakıt tüketimine sahiptir!
önceki
Ne kadar erken o kadar iyi? Tekrar kanmayın!
Sonraki
Kar yağdığında Baykal Gölü cennete dönüşür
Yeni Audi A6L'nin dünya prömiyeri: 10 yaş daha genç, uzay tarihinin en büyüğü!
Blade Runner 2049 ve Uncanny Valley Theory: Robot ne kadar insana benzerse, o kadar korkutucu
"Gen düzenleme" tarandı, genlerin üzerimizde ne kadar etkisi var?
Guangzhou Otomobil Fuarı: Yeni Teana nihayet açıklandı, mevcut modelden 20 yıl daha genç, peki ya en iyi motor?
Kanada'daki iflasların sayısı hızla arttı ve Çinli alıcıların programın öncesinde Kanada'dan çekilmesinin ardından yeni gelişmeler yaşandı.
Softbank art arda 4 yıl kaybetti, Sun Zhengyi nasıl hızla kayıpları kara çevirdi ve kar etmeye devam etti?
Sol yakanın en güzel 18 manzarası Paris ...
İlk ulusal üniversite öğrencilerinin beyin ilhamlı bilgi işlem inovasyon uygulama yarışması ve uluslararası davetli yarışması sona erdi: kazananların listesi açıklandı
Fed'in Venezuela'nın altın iadesini resmen reddetmesinin ardından yeni gelişmeler oldu, pek çok ülke bunu takip edecek mi?
Xiaomi, bir AIoT geliştirici fonu oluşturmak için 100 milyon yuan yatırım yapıyor ve her şeyin akıllı ara bağlantısını oluşturmak için IKEA ile el ele veriyor
Sunshine Beach canlılık ve moda ile buluşuyor, buranın ünlüler ve süpermodeller tarafından sevilen bir tatil beldesi olmasına şaşmamalı!
To Top