Membuat navigator menggunakan teknologi augmented reality dan metode pembelajaran mesin

Baru-baru ini, kemampuan seseorang untuk bepergian berkembang sangat cepat, dan kami dapat menemukan lebih banyak tempat. Tetapi tidak selalu mudah bernavigasi di tempat-tempat ini, dan kadang-kadang bangunan memiliki bentuk arsitektur yang sedemikian rumit sehingga Anda bahkan dapat tersesat di tempat yang tidak dikenal.

Misalnya, Sekolah Teknik dan Teknologi kami No. 777, St. Petersburg, termasuk gedung-gedung semacam itu. Kami menghadapi masalah sehingga ketika tamu dan orang tua mengunjungi sekolah kami, sulit bagi mereka untuk menemukan kantor yang tepat atau tempat lain yang diperlukan. Semua orang menemukan jalan keluar dari situasi ini, seseorang tanpa henti meminta pekerja bangunan, dan seseorang hanya berkeliaran melalui koridor tanpa akhir. Setelah menganalisis masalah ini, kami memutuskan untuk membuat navigator bagi pengunjung kami di sekolah kami. Tetapi navigator sederhana dengan peta di dalam gedung tidak relevan, yang tidak dapat dikatakan tentang salah satu teknologi augmented reality (AR) yang baru dan berkembang pesat. Navigator kami dikembangkan dengan teknologi AR, visi komputer dan metode pembelajaran mesin. Ini akan membantu Anda menavigasi dan menemukan tempat yang tepat di mana pengunjung ke sekolah kami harus pergi.

tujuan


Tujuannya adalah untuk menciptakan asisten universal dalam membangun orientasi.

Tujuan utama:

  • Untuk menyederhanakan orientasi sekolah siswa baru, orang tua dan tamu;
  • Jadikan aplikasi universal sehingga nantinya mendukung navigasi tidak hanya di sekolah kami, tetapi juga di bangunan lain di seluruh dunia;
  • Antarmuka yang mudah digunakan, dapat dimengerti oleh semua orang;

AR - Augmented Reality


Sekarang setiap tahun semakin banyak teknologi baru muncul, salah satu teknologi augmented reality atau hanya AR. Pertama, kenalan pertamanya, terjadi ketika perusahaan terkenal Google memutuskan untuk membuat kacamatanya dengan augmented reality. Kemudian teknologi AR mulai berkembang dengan sangat cepat. Ketika Google meninggalkan proyek kaca Google mereka, era baru topeng datang yang mengenali wajah kita dan mengubahnya menjadi selebriti. Kemudian Pokemon menangkap realitas dan orang-orang melakukan perjalanan beberapa kilometer untuk mencari karakter paling keren.

Baru-baru ini, Google dan Apple secara berturut-turut memperkenalkan mesin ARC, ARCore, dan ARKit mereka, yang darinya kita dapat menyimpulkan bahwa teknologi AR akan semakin mudah diakses untuk pengembangan dan pembuatan aplikasi dan game baru yang semakin banyak.

Apa itu AR?


Augmented reality adalah lingkungan yang secara real time melengkapi dunia nyata, seperti yang kita lihat dengan bantuan data digital yang diproses menggunakan perangkat komputasi dan perangkat lunak elektronik apa pun.

Juga, augmented reality (AR) harus dibedakan dari virtual (virtual reality, VR) dan mixed (mixed reality, MR).

Apa perbedaan utama mereka?


Dalam AR, objek digital virtual diproyeksikan ke lingkungan nyata, tidak seperti realitas virtual.

Realitas virtual adalah dunia yang diciptakan oleh sarana teknis digital, yang dikirimkan ke seseorang melalui indera.

Realitas campuran adalah persilangan antara VR dan AR dan menggabungkan kedua pendekatan.

VR menciptakan dunianya sendiri, di mana seseorang terjun, dan augmented reality bekerja dengan dunia fisik nyata, memperkenalkan benda-benda virtual ke dalamnya. Oleh karena itu VR berinteraksi secara eksklusif dengan pengguna, sementara AR berinteraksi dengan dunia luar.

Prospek pengembangan


Teknologi AR dapat menempati ceruk yang telah dikhususkan fiksi ilmiah untuk hologram. Hanya hologram tidak akan segera, dan perangkat seperti Hololens (Microsoft Augmented Reality Glasses) secara teknis siap. Prospek melihat ilustrasi interaktif virtual di sekolah-sekolah, yang dapat dilihat dari semua sisi, yang dengannya Anda dapat berinteraksi dan segera melihat hasil pengalaman Anda, tampaknya jauh dari fantasi cerah yang indah tentang masa depan. Pelatihan dalam spesialisasi teknik apa pun dapat menjadi jauh lebih visual dan mudah dipahami, serta menarik.

Untuk meringkas, kenyataan tambahan tidak hanya permainan dan topeng keren untuk jejaring sosial. Ini adalah sejumlah besar peluang dalam penggunaan AR di bidang pendidikan, industri dan kedokteran.

Pertumbuhan augmented reality sangat mencengangkan. Tidak seperti VR, dia tidak perlu bergantung pada helm besar dan perangkat keras yang kuat, hanya perangkat yang paling ringkas dan mobile di zaman kita - smartphone.

Augmented reality sudah mengubah masa kini kita: topeng virtual, berburu Pokemon di kota-kota dan rawa-rawa, anak-anak saling menembak bukan dari potongan kayu, tetapi melalui layar ponsel. Sekarang sudah menjadi kenyataan.

Perencanaan kerja


Navigator kami memiliki sistem pengenalan nomor kabinet, pengakuan ini bekerja menggunakan metode pembelajaran mesin, dan khususnya, teknologi jaringan saraf convolutional digunakan. Mari selami arsitektur.

Untuk model ini, kami harus menyelesaikan 2 masalah utama:

  • mendeteksi huruf pada gambar;
  • pengakuan huruf.

Jika untuk mengenali huruf ada jaringan lama yang bagus seperti LeNet, maka untuk mendeteksi huruf dalam gambar kita harus menulis arsitektur jaringan saraf kita, menyusun basis data dan melatih model. Untuk menyusun arsitektur, kami perlu memahami jenis masalah pembelajaran mesin yang akan dipecahkan oleh model kami.

Setelah banyak perdebatan, kami sampai pada konsensus - detektor teks harus menyelesaikan masalah regresi, mis. model harus memprediksi di mana surat itu berpotensi berada. Kemudian kami mensimulasikan jaringan saraf yang terdiri dari dua lapisan, tidak termasuk lapisan input dan output, tetapi kemudian kami menghadapi masalah: ada banyak data output, karena ini kami memiliki masalah - masalah pelatihan ulang, dan kami sampai pada kesimpulan bahwa kami kita membutuhkan arsitektur dan pendekatan yang berbeda untuk masalah ini, setelah diskusi panjang kita sampai pada kesimpulan bahwa kita perlu mendeteksi bukan huruf sekaligus, tetapi kata-kata pertama, dan hanya huruf. Dan di sini kami menghabiskan cukup banyak waktu untuk mengubah database dan kemudian menambahkan jaringan saraf lain ke kaskade, karena ini koefisien kami (kami memilih metrik Mean Squared Error) menurun sebesar 40%, tetapi masih hasil sebenarnya jauh dari yang diinginkan,Oleh karena itu, kami memutuskan untuk menulis ulang arsitektur 2 jaringan saraf untuk ini, kami harus membongkar β€œensemble” dan memahami bagaimana setiap jaringan bekerja secara terpisah dan memahami mengapa kami memerlukan setiap parameter untuk setiap jaringan. Kemudian kami menyadari bahwa alih-alih mengurangi jumlah parameter, kami dapat mengubah pendekatan terhadap masalah, dan tim kami mengubah model: sekarang ini adalah satu jaringan saraf convolutional, dengan pendekatan ini, kami mengurangi tingkat kesalahan sebesar 30% dan kecepatan lari melalui jaringan meningkat.sekarang ini adalah satu jaringan saraf convolutional, dengan pendekatan ini kami telah mengurangi tingkat kesalahan sebesar 30% dan kecepatan lari melalui jaringan telah meningkat.sekarang ini adalah satu jaringan saraf convolutional, dengan pendekatan ini kami telah mengurangi tingkat kesalahan sebesar 30% dan kecepatan lari melalui jaringan telah meningkat.

Masalah pendeteksian karakter diselesaikan, masih untuk menyelesaikan masalah pengenalan karakter, pengenalan karakter itu sendiri bukanlah tugas baru untuk tim kami, kami melatih jaringan saraf convolutional yang serupa dalam arsitektur dengan jaringan saraf LeNet dan menerima koefisien kesalahan 99% pada dataset uji (mis., Jaringan saraf hampir tidak ada kesalahan). Tetapi dalam praktiknya, ini ternyata menjadi solusi yang tidak dapat diterima, karena gambar dengan resolusi tetap harus masuk ke input jaringan ini, tetapi dalam praktiknya, gambar yang berbeda dengan resolusi yang berbeda dapat masuk, dan kemudian tim kami memikirkannya dan memutuskan untuk melatih jaringan saraf yang sama, tetapi hanya dalam gambar dengan cukup resolusi besar, sangat besar sehingga dapat diasumsikan secara akurat bahwa tidak akan ada izin yang lebih besar untuk memasuki jaringan saraf,tetapi kemudian kami meninggalkan ide ini karena kami mencoba untuk mengubah resolusi gambar yang disediakan untuk input arsitektur yang tidak menyiratkan perubahan dalam resolusi gambar, jadi sekarang kita perlu berpikir tentang arsitektur huruf-huruf yang mengenali, dan kami menyadari bahwa solusi terbaik adalah mengambil arsitektur - keturunan dari jaringan saraf LeNet - ResNet dari Microsoft, arsitektur ini menyiratkan bahwa ia akan menerima gambar dengan resolusi yang berbeda.bahwa ia akan menerima gambar dengan resolusi yang berbeda.bahwa ia akan menerima gambar dengan resolusi yang berbeda.

Akibatnya, setelah kami melatih jaringan saraf, tingkat kesalahan bagi kami menjadi 95% - ya, itu sedikit kurang dari dengan arsitektur LeNet tetapi berfungsi, maka kami ingat bahwa kami tidak perlu mengenali semua huruf, tetapi hanya angka dan memutuskan untuk menambahkan sebelum menentukan simbol adalah model lain yang akan menentukan apakah simbol yang akan ditentukan adalah angka atau huruf, karena model ini menyelesaikan masalah klasifikasi dan mengklasifikasikan hanya 2 kelas, jaringan saraf tidak berarti dan oleh karena itu kami mengambil regresi logistik sebagai dasar arsitektur, setelah menambahkan model ini ke "Ensemble" dan pelatihan ulang jaringan saraf (hanya dengan angka), tingkat kesalahan kami adalah + - 97% yang tidak terlalu buruk, pada "catatan" ini kami memutuskan untuk menyelesaikan pekerjaan pengenalan karakter dan, sebagai hasilnya, kami mendapat "ensemble":

Gambar asli -> Jaringan saraf convolutional yang menentukan lokasi kata -> Jaringan saraf convolutional yang menentukan lokasi huruf -> Regresi logistik, yang menentukan huruf pada gambar atau angka -> ResNet, yang menentukan angka akhir

Tapi kemudian kami punya satu masalah lagi: masalah dengan pelacakan geolokasi. Awalnya kami berpikir bahwa ini adalah salah satu tugas yang paling mudah dan ternyata salah. Pertama-tama, kami, seperti programmer nyata, mengambil jalur dengan hambatan paling sedikit dan hanya melacak geolokasi GPS di objek - tidak berfungsi, kesalahannya sangat besar sehingga tidak cocok untuk kami sama sekali, kami memutuskan untuk memikirkan opsi lain untuk menentukan geolokasi dan memutuskan untuk menghubungkan layanan dari perusahaan Yandex - Yandex Latitude, tetapi ternyata tidak berfungsi, mis. itu bukan layanan yang berfungsi di mana Anda tidak dapat menghubungkan API, pemikiran kami berikutnya adalah menghubungkan kerangka mapbox untuk mesin Unity (di situlah kami memutuskan untuk mengembangkan proyek kami), setelah kami berhasil menghubungkan kerangka kerja ini, memeriksa kemampuannya dan menulis pelacak GPS sederhana - hasilnya sudah lebih baiktetapi kesalahan masih besar, karena ini kami terus mencari solusi, dan setelah membaca dokumentasi dengan cermat, kami menemukan bahwa nilai yang diperoleh memiliki kesalahan 15%, ini tidak cocok untuk kami, terutama karena pendekatan ini memiliki kelemahan yang sangat besar - menggunakan GPS , dan kami membuat navigator di sekitar sekolah, itu berarti di dalam ruangan, maka sinyal GPS akan menjadi sangat lemah atau tidak sama sekali + GPS tidak didukung pada semua perangkat, itulah sebabnya kami mengubah pendekatan dan pindah dari pengakuan global ke lokal berdasarkan Sistem Posisi Visual Metode ini juga memiliki kelemahan, tetapi mereka tidak mempengaruhi pekerjaan kami dengan cara apa pun, sehingga sistem pelacakan geolokasi siap.bahwa ada kesalahan 15% untuk nilai yang diperoleh, ini tidak cocok untuk kita, terutama karena pendekatan ini memiliki kelemahan yang sangat besar - menggunakan GPS, dan kita melakukan navigator di sekitar sekolah, lalu di dalam ruangan, maka sinyal GPS akan menjadi sangat lemah atau tidak akan Secara umum, + GPS tidak didukung pada semua perangkat, itulah sebabnya kami mengubah pendekatan dan beralih dari pengakuan global ke lokal berdasarkan Sistem Pemosisian Visual. Metode ini juga memiliki kelemahan, tetapi mereka tidak memengaruhi pekerjaan kami dengan cara apa pun, sehingga sistem pelacakan geolokasi siap.bahwa ada kesalahan 15% untuk nilai yang diperoleh, ini tidak cocok untuk kita, terutama karena pendekatan ini memiliki kelemahan yang sangat besar - menggunakan GPS, dan kita melakukan navigator di sekitar sekolah, lalu di dalam ruangan, maka sinyal GPS akan menjadi sangat lemah atau tidak akan Secara umum, + GPS tidak didukung di semua perangkat, itulah sebabnya kami mengubah pendekatan dan beralih dari pengakuan global ke lokal berdasarkan Sistem Pemosisian Visual. Metode ini juga memiliki kelemahan, tetapi mereka tidak memengaruhi pekerjaan kami dengan cara apa pun, sehingga sistem pelacakan geolokasi siap.maka sinyal GPS akan menjadi sangat lemah atau tidak sama sekali + GPS tidak didukung pada semua perangkat, itulah sebabnya kami mengubah pendekatan dan beralih dari pengakuan global ke lokal berdasarkan Sistem Pemosisian Visual, metode ini juga memiliki kelemahan, tetapi mereka tidak memengaruhi pekerjaan kami, jadi sistem pelacakan geolokasi siap.maka sinyal GPS akan menjadi sangat lemah atau tidak sama sekali + GPS tidak didukung pada semua perangkat, itulah sebabnya kami mengubah pendekatan dan beralih dari pengakuan global ke lokal berdasarkan Sistem Pemosisian Visual, metode ini juga memiliki kelemahan, tetapi mereka tidak memengaruhi pekerjaan kami, jadi sistem pelacakan geolokasi siap.

Signifikansi praktis


Aplikasi kami berfungsi untuk mengarahkan orang-orang yang datang pertama kali dengan lebih baik atau yang hanya memiliki pemahaman yang buruk tentang struktur sekolah orang-orang di lembaga pendidikan kami. Mereka akan datang dan bertemu di pintu masuk stand dengan kode QR, ketika membaca aplikasi yang diunduh.

Fungsional


Apa yang bisa dilakukan aplikasi kita:

  • kenali nomor kabinet di dekat piring,
  • peta sekolah terperinci,
  • membimbing seseorang ke kantornya,
  • mencari kantor dengan nomornya,
  • cari kelas dalam daftar dan berdasarkan jenisnya (semua ruang kelas didistribusikan dalam kelompok tertentu tergantung pada mata pelajaran apa yang diajarkan di ruangan ini).

Implementasi aplikasi


Aplikasi ini ditulis pada salah satu mesin paling populer yang disebut "Unity", menggunakan bahasa pemrograman C #, serta menggunakan Python dan perpustakaan TensorFlow, selain semua hal di atas, manajer paket Anaconda digunakan.

Bagaimana cara menggunakan aplikasi ini?


Misalkan saya orang tua dan datang ke pertemuan orang tua, saya harus masuk ke kamar 339, kantor informatika. Saya pergi ke sekolah dan harus memindai, karena saya mengulangi kode QR dari tablet. Kemudian, setelah berhasil memuat aplikasi, saya akan masuk ke menu utama:

gambar

Setelah itu, saya bisa pergi ke menu instruksi untuk mengetahui cara menggunakan aplikasi:

gambar

Instruksi ini menjelaskan secara rinci bagaimana menemukan kelas, yaitu. pertama, di menu utama, kita klik "Find Class", kemudian menu berikut ditampilkan:

gambar

Panah di sudut kanan atas memungkinkan kita untuk kembali ke menu utama, jika sistem mengenali nomor kabinet, bingkai muncul di sekitar piring, dan kemudian jendela konfirmasi:

gambar

Jika model mengenali kabinet dengan benar, maka "induk" bersyarat kami akan mengklik "ya", jika nomor kabinet tidak dikenali dengan benar, maka klik "tidak" dan ambil gambar lagi. Jadi aplikasi akan mengerti di mana kita berada di ruang sekolah.

Selanjutnya, "orang tua" harus memilih tujuan dan di sini ia memiliki 2 pilihan: masukkan nomor kantor, atau pilih jenisnya dan temukan dalam daftar nanti:

gambar

gambar

Setelah itu, "orang tua" harus mengikuti tanda-tanda pada kamera.

Ketika Anda tiba di tujuan, navigator akan memberi tahu Anda tentang hal ini.

Ada opsi lain, lebih akrab, "orang tua" klik pada menu utama - "Rencana Sekolah" dan rencana terperinci terbuka, di mana Anda dapat menavigasi secara mandiri bagaimana menuju ke tempat yang diinginkan.

Denah Lantai 1 Denah Lantai

gambar


2

gambar

Saat ini, ini semua fungsi yang ada dalam aplikasi, di masa depan direncanakan untuk menyelesaikan aplikasi dan menambahkan fungsi yang lebih menarik.

Anda dapat menonton video di tautan di bawah:


Kesimpulan


Dengan kerja tim yang terkoordinasi dengan baik, waktu dan keterampilan yang cukup untuk menerapkan soft skill, proyek apa pun dapat diimplementasikan.

Bekerja pada aplikasi:

Ilya Vasilenko - programmer (backend)

Demid Parfenyev - Desainer

Lunev Daniil - Pengembang Unity (frontend)

Mikhail Purtov - Penambang Data, pencipta

Berkat proyek kami, setiap anggota tim kami belajar banyak hal baru. Dari desain hingga pemrograman dan visi komputer.

Tim PYC kami percaya bahwa Habr akan menyukai proyek kami.

Salam, Tim PYC

Alat


Unity + C #

Python + Manajer paket Anaconda + Pustaka TensorFlow untuk membuat jaringan saraf + Pustaka untuk membuat model pembelajaran mesin scikit-learn

Immersal - Pustaka yang mengimplementasikan VPS

Bibliografi


Tensorflow
situs Immersal
situs C #
situs situs Python

* Publikasi ini tidak berpura-pura untuk mengiklankan aplikasi kita, karena tidak bahkan tersedia dalam sumber-sumber terbuka dan bekerja hanya di sekolah

All Articles