Karya kelulusan terbaik dari semester musim semi Technoprojects



Kisah baru kami tentang proyek kelulusan siswa proyek studi kami adalah yang terakhir tahun ini. Kali ini kami akan memperkenalkan kepada Anda tiga karya siswa Technopark, Technopolis dan Technosphere. Ini adalah proyek kelulusan berdasarkan hasil studi selama dua tahun, dan dewan juri memilihnya sebagai karya terbaik. Kami juga ingin mengingatkan Anda bahwa program pelatihan di Technopark, Technopolis dan Technosphere memiliki spesialisasi dan sangat berbeda.



Publikasi sebelumnya: 1 , 2 , 3 , 4 , 5 .



Ini adalah pertama kalinya siswa yang mempertahankan proyek dihadapkan pada teknologi ini. Pengerjaan proyek ini memakan waktu satu semester, tujuan dibuatnya artikel untuk menunjukkan proses pendidikan dan hasil karya siswa.




Facepick, Technopolis



Layanan pencarian foto dengan wajah.



Di acara publik - konferensi, liburan, pesta perusahaan, pernikahan - ratusan atau bahkan ribuan foto diambil. Dan butuh waktu sangat lama untuk menemukan gambar yang menunjukkan Anda dan teman atau kerabat Anda. Oleh karena itu, tim proyek memutuskan untuk membuat layanan untuk segera menemukan foto yang berisi wajah tertentu.



Sistem, menggunakan jaringan saraf, pertama-tama mengenali wajah dalam gambar referensi, dan kemudian mengelompokkan dasar foto oleh orang yang ditemukan. Layanan dapat bekerja dengan sumber eksternal: VKontakte, Odnoklassniki, Yandex.Disk dan Google Drive.



Album yang diproses adalah kumpulan foto yang masing-masing berisi foto satu orang. Pada halaman album yang diproses, pengguna dapat melihat foto dari photopack tertentu, serta mendownloadnya ke perangkatnya, atau berbagi dengan teman. Anda dapat mencari album yang diproses dengan mengupload foto seseorang.











Layanan ini adalah aplikasi server-klien dengan REST API. Bagian server terdiri dari dua komponen utama: Java-application, yang mengimplementasikan logika interaksi pengguna dengan layanan; dan aplikasi Python untuk mengidentifikasi wajah dalam foto dan mengekstraksi fitur unik mereka menggunakan jaringan saraf.



Penulis berfokus pada skalabilitas, jadi mereka menggunakan penyeimbang beban untuk menyeimbangkan beban di backend, dan menggunakan antrean pesan Redis untuk interaksi antara aplikasi Java dan Python memungkinkan Anda mengubah jumlah instance komponen ini secara independen.



Semua layanan di-deploy dalam container Docker terpisah, dan docker-compose digunakan untuk mengaturnya. Untuk mengimplementasikan sisi klien aplikasi, kami menggunakan TypeScript dan React. Basis data PostgreSQL digunakan sebagai penyimpanan data yang persisten.







Di masa mendatang, lulusan ingin meningkatkan akurasi pengenalan, menambahkan filter berdasarkan jenis kelamin dan usia, serta dukungan untuk Facebook dan Google Foto. Ada juga ide untuk memonetisasi layanan dengan membatasi fungsionalitas gratis dan memperkenalkan iklan.



Tim proyek: Vadim Dyachkov, Egor Shakhmin, Nikolay Rubtsov.



Video dengan perlindungan proyek .



Playmaker, Technopark



Solusi perangkat keras dan perangkat lunak untuk logging pelatihan olahraga.



Kebetulan semua anggota tim proyek menyukai olahraga. Datang ke gym dan melihat orang-orang mencatat latihan dan kemajuan mereka, siswa bertanya-tanya apakah proses ini dapat ditingkatkan. Setelah penelitian dan survei, tim menyadari bahwa aplikasi olahraga yang ada memiliki UX yang terlalu kompleks, dan perangkat yang dapat dikenakan di pasaran berfungsi dengan baik, terutama dengan latihan kardio (lari, elips, dll.). Hasilnya, mereka merumuskan skema kerja mereka:





Perangkat dibuat secara mandiri, karena integrasi dengan solusi yang ada (misalnya, MiBand) ternyata sangat memakan waktu, dan untuk jam tangan dan gelang, pengembang tidak puas dengan penempatan di pergelangan tangan, hal ini memberikan informasi yang kurang tentang pola gerakan.



Kami memilih modul ESP32-WROOM sebagai bagian dari ESP32-devkit-v1. Itu memenuhi persyaratan tertentu, utilitas untuk menghasilkan kode dan firmware dengan Python ditulis untuk itu, dan selain itu, dapat diprogram dari Arduino IDE seperti papan Arduino lainnya. Modul Amperka IMU dipilih untuk peran sensor, yang meliputi akselerometer dan giroskop. Semua komunikasi dengan sensor dilakukan menggunakan protokol I2C.



Diagram prototipe:







Untuk versi perangkat berikutnya, pencetakan papan dan penyolderan komponen dipesan di China.









Selanjutnya, perlu melatih jaringan saraf untuk mengenali berbagai latihan. Namun, tidak banyak set data terbuka yang memuat deret waktu dari akselerometer dan giroskop selama aktivitas fisik. Dan kebanyakan dari mereka hanya mencakup berlari, berjalan, dll. Sebagai hasilnya, kami memutuskan untuk membuat perangkat pelatihan sendiri. Kami memilih tiga latihan utama yang tidak memerlukan peralatan khusus: push-up, squat, dan twist.



Data akselerometer setelah pemfilteran.





Data giroskop setelah penyaringan.



Jaringan saraf berulang dengan arsitektur LSTM bertanggung jawab untuk mengklasifikasikan latihan. Untuk kenyamanan visualisasi deret waktu, digunakan analisis komponen utama (PCA).





Hasil jaringan saraf (garis oranye - kemungkinan melakukan push-up, hijau - squat).



Untuk menghitung jumlah pengulangan, digunakan metode penghitungan maksimum lokal, dengan mempertimbangkan level sinyal dasar. Setelah mencapai hasil yang memuaskan, kami mengambil aplikasi seluler. Salah satu syaratnya adalah pengembangan antarmuka yang membutuhkan interaksi minimal dengan smartphone. Kami memilih MVP sebagai pola desain.



Antarmuka aplikasi:









Selain aplikasi klien, penulis mengembangkan program utilitas Batcher, yang memfasilitasi pencatatan dan markup data untuk melatih jaringan saraf:





Selain itu, penulis menulis mekanisme untuk memvalidasi batch setelah menyimpannya ke database.



Untuk menyimpan deret waktu, database InfluxDB dipilih, yang diadaptasi untuk tugas-tugas tersebut. Untuk mengimplementasikan layanan pembelajaran mesin, kami memilih tumpukan standar dari Python, Django dan Celery. Antrian tugas memungkinkan tugas klasifikasi dilakukan secara asinkron tanpa memblokir antarmuka aplikasi utama.



Untuk menyimpan data pengguna, mereka mengambil Postgres, bagian belakang aplikasi itu sendiri diimplementasikan di Go menggunakan kerangka Gin.





Arsitektur umum.



Hasilnya, tim mencapai tujuan mereka dan mengembangkan versi MVP produk, yang memungkinkan Anda menyelesaikan tugas pelatihan pencatatan dengan satu tombol. Sekarang siswa bekerja untuk mengurangi biaya dan ukuran perangkat, meningkatkan akurasi jaringan saraf, dan memperluas rangkaian latihan yang didukung.



Tim proyek: Oleg Soloviev, Temirlan Rakhimgaliev, Vladimir Elfimov, Anton Martynov.



Video dengan perlindungan proyek .



GestureApp, Technosphere



Kerangka kerja untuk antarmuka tanpa kontak.



Kadang-kadang menjadi tidak nyaman atau tidak diinginkan untuk menggunakan antarmuka taktil yang sudah dikenal. Misalnya, saat Anda mengendarai mobil, menggunakan ATM atau terminal pembayaran, atau saat tangan Anda kotor. Untuk mengatasi masalah ini, penulis membuat framework interface contactless yang memungkinkan gestur untuk mengontrol aplikasi.



Agar berfungsi, GestureApp membutuhkan kamera video, yang sinyalnya diproses secara real time untuk mengenali gerakan pengguna. Dan bergantung pada isyaratnya, kerangka kerja memberikan perintah yang sesuai untuk aplikasi.





Beban komputasi relatif rendah, kerangka kerja dapat bekerja pada perangkat yang agak lemah dan tidak memerlukan peralatan khusus.



Gestur dikenali oleh jaringan neural MobileNet3D. Jaringan neural memberikan probabilitas kelas gerakan, serta kelas khusus "tanpa gerakan". Arsitektur ini memungkinkan pengenalan gerakan statis dan dinamis. Jaringan saraf dilatih pada set data Jester. Keakuratan peramalan F 1 = 0,92 telah tercapai .



Aliran penangkapan menerima bingkai dari kamera depan dan menempatkannya di akhir daftar. Jika panjangnya lebih dari 32, thread penangkap akan mengaktifkan thread eksekusi model. Dibutuhkan 32 bingkai dari awal daftar, memprediksi kelas, lalu menghapus elemen dari akhir hingga satu elemen tetap ada. Ini menghilangkan kebutuhan akan sinkronisasi yang berat dan secara signifikan meningkatkan kinerja: 20 FPS pada iPhone 11, 18 FPS pada iPhone XS Max, 15 FPS pada iPhone XR. Dan dengan saluran pipa pintar untuk pra-dan pasca-pemrosesan, konsumsi energi dijaga seminimal mungkin.



Sejauh ini, framework hanya berfungsi untuk iOS dan Windows. Pengembangannya menggunakan framework PyTorch, platform TwentyBN, dan bahasa Swift.



Rencananya meliputi: meningkatkan kualitas pengenalan, menambahkan pengenalan gerakan baru tanpa melatih kembali semua model, membuat versi untuk Android, menambahkan tidak hanya gerakan tombol, tetapi juga gerakan slider.



Tim proyek: Maxim Matyushin, Boris Konstantinovsky, Miroslav Morozov.



Video dengan perlindungan proyek .






Anda dapat membaca lebih lanjut tentang proyek pendidikan kami di tautan ini . Dan lebih sering pergi ke saluran Technostream , di sana secara teratur muncul video pelatihan baru tentang pemrograman, pengembangan, dan disiplin ilmu lainnya.



All Articles