Les meilleurs travaux de fin d'études du semestre de printemps des Technoprojets



Notre nouvelle histoire sur les projets de fin d'études des étudiants de nos projets d'études est la dernière de cette année. Cette fois, nous vous présenterons trois œuvres d'étudiants de Technopark, Technopolis et Technosphere. Ce sont des projets de fin d'études basés sur les résultats de deux années d'études et le jury les a sélectionnés comme les meilleurs travaux. Nous vous rappelons également que les programmes de formation Technopark, Technopolis et Technosphere ont leur propre spécialisation et sont très différents.



Publications précédentes: 1 , 2 , 3 , 4 , 5 .



C'est la première fois que des étudiants qui ont défendu des projets sont exposés à ces technologies. Le projet dure un semestre, le but de l'article est de montrer le processus éducatif et les résultats du travail des étudiants.




Facepick, Technopolis



Service de recherche de photos par visages.



Lors d'événements publics - conférences, vacances, fêtes d'entreprise, mariages - des centaines, voire des milliers de photographies sont prises. Et il faut beaucoup de temps pour trouver des images qui vous montrent, vous et vos amis ou parents. Par conséquent, l'équipe du projet a décidé de créer un service permettant de trouver rapidement des photographies contenant des visages spécifiques.



Le système, à l'aide de réseaux de neurones, reconnaît d'abord les visages dans les images de référence, puis regroupe la base de photographies des personnes trouvées. Le service peut fonctionner avec des sources externes: VKontakte, Odnoklassniki, Yandex.Disk et Google Drive.



L'album traité est un ensemble de photopacks, dont chacun contient des photographies d'une personne. Sur la page de l'album traité, l'utilisateur peut visualiser les photos d'un photopack particulier, et également les télécharger sur son appareil, ou les partager avec des amis. Vous pouvez rechercher l'album traité en téléchargeant une photo d'une personne.











Le service est une application client-serveur avec l'API REST. La partie serveur se compose de deux composants principaux: l'application Java, qui implémente la logique de l'interaction de l'utilisateur avec le service; et des applications Python pour identifier les visages dans les photographies et extraire leurs caractéristiques uniques à l'aide d'un réseau neuronal.



Les auteurs se sont concentrés sur l'évolutivité, ils ont donc utilisé un équilibreur de charge pour équilibrer la charge sur le backend, et l'utilisation de la file d'attente de messages Redis pour l'interaction entre les applications Java et Python vous permet de modifier indépendamment le nombre d'instances de ces composants.



Tous les services sont déployés dans des conteneurs Docker distincts et docker-compose est utilisé pour les orchestrer. Pour implémenter le côté client de l'application, nous avons utilisé TypeScript et React. La base de données PostgreSQL est utilisée comme stockage de données persistant.







À l'avenir, les diplômés souhaitent améliorer la précision de la reconnaissance, ajouter des filtres par sexe et par âge, et prendre en charge Facebook et Google Photos. Il existe également des idées pour monétiser le service en limitant les fonctionnalités gratuites et en introduisant de la publicité.



Équipe du projet: Vadim Dyachkov, Egor Shakhmin, Nikolay Rubtsov.



Vidéo avec protection de projet .



Meneurs de jeu, Technopark



Solution matérielle et logicielle pour l'enregistrement des entraînements sportifs.



Il se trouve que tous les membres de l'équipe du projet sont passionnés de sport. En venant au gymnase et en regardant les gens enregistrer leurs séances d'entraînement et leurs progrès, les étudiants se sont demandé - ce processus peut-il être amélioré? Après des recherches et des enquêtes, l'équipe a réalisé que les applications d'entraînement existantes ont une UX trop complexe et que les appareils portables sur le marché fonctionnent bien principalement pour les entraînements cardio (course à pied, ellipse, etc.) En conséquence, ils ont formulé leur schéma de travail:





L'appareil a été fabriqué de manière indépendante, car l'intégration avec des solutions existantes (par exemple, MiBand) s'est avérée très longue et, dans le cas des montres et des bracelets, les développeurs n'étaient pas satisfaits du placement sur le poignet, ce qui a donné moins d'informations sur les modèles de mouvement.



Nous avons choisi le module ESP32-WROOM dans le cadre de l'ESP32-devkit-v1. Il répondait à certaines exigences, des utilitaires de génération de code et de firmware en Python ont été écrits pour cela, et en plus, il peut être programmé à partir de l'IDE Arduino comme n'importe quelle carte Arduino. Le module Amperka IMU a été choisi pour le rôle de capteurs, qui comprend un accéléromètre et un gyroscope. Toutes les communications avec les capteurs sont effectuées à l'aide du protocole I2C.



Schéma prototype:







Pour la prochaine version de l'appareil, l'impression de cartes et le soudage des composants ont été commandés en Chine.









Ensuite, il a fallu entraîner le réseau neuronal à reconnaître divers exercices. Cependant, il n'y a pas tellement d'ensembles de données ouvertes qui contiendraient des séries chronologiques de l'accéléromètre et du gyroscope pendant l'activité physique. Et la plupart d'entre eux ne couvrent que la course à pied, la marche, etc. En conséquence, nous avons décidé de créer nous-mêmes un set d'entraînement. Nous avons choisi trois exercices de base ne nécessitant pas d'équipement spécial: les pompes, les squats et les torsions.



Données de l'accéléromètre après filtrage.





Données du gyroscope après filtrage.



Un réseau de neurones récurrent avec une architecture LSTM est responsable de la classification des exercices. Pour faciliter la visualisation de la série chronologique, l'analyse en composantes principales (ACP) a été utilisée.





Le résultat du réseau neuronal (ligne orange - la probabilité de faire des pompes, verte - squats).



Pour compter le nombre de répétitions, la méthode de comptage des maxima locaux a été utilisée, en tenant compte du niveau du signal de base. Après avoir obtenu des résultats satisfaisants, nous avons repris l'application mobile. L'une des conditions était le développement d'une telle interface qui nécessiterait une interaction minimale avec un smartphone. Nous avons choisi MVP comme modèle de conception.



Interface d'application:









En plus de l'application client, les auteurs ont développé le programme utilitaire Batcher, qui a facilité l'enregistrement et le balisage des données pour la formation d'un réseau neuronal:





De plus, les auteurs ont écrit un mécanisme pour valider les lots après les avoir sauvegardés dans la base de données.



Pour stocker les séries chronologiques, la base de données InfluxDB a été choisie, qui est adaptée à de telles tâches. Pour implémenter un service d'apprentissage automatique, nous avons choisi une pile standard de Python, Django et Celery. La file d'attente des tâches permettait d'exécuter la tâche de classification de manière asynchrone sans bloquer l'interface principale de l'application.



Pour stocker les données utilisateur, ils ont pris Postgres, le backend de l'application elle-même a été implémenté dans Go en utilisant le framework Gin.





Architecture générale.



En conséquence, l'équipe a atteint ses objectifs et a développé une version MVP du produit qui vous permet de résoudre la tâche de journalisation de la formation avec un seul bouton. Les étudiants s'efforcent maintenant de réduire le coût et la taille de l'appareil, d'améliorer la précision du réseau neuronal et d'élargir l'ensemble des exercices pris en charge.



Équipe du projet: Oleg Soloviev, Temirlan Rakhimgaliev, Vladimir Elfimov, Anton Martynov.



Vidéo avec protection de projet .



GestureApp, Technosphère



Un framework pour une interface sans contact.



Parfois, il devient peu pratique ou indésirable d'utiliser des interfaces tactiles familières. Par exemple, lorsque vous conduisez une voiture, utilisez un guichet automatique ou un terminal de paiement, ou lorsque vos mains sont simplement sales. Pour résoudre ce problème, les auteurs ont créé un framework d'interface sans contact qui permet aux gestes de contrôler l'application.



Pour fonctionner, GestureApp a besoin d'une caméra vidéo, dont le signal est traité en temps réel afin de reconnaître les gestes de l'utilisateur. Et en fonction des gestes, le framework donne les commandes appropriées à l'application.





La charge de calcul est relativement faible, le framework peut fonctionner sur des appareils assez faibles et ne nécessite pas d'équipement spécial.



Les gestes sont reconnus par le réseau neuronal MobileNet3D. Le réseau de neurones donne les probabilités de classes de gestes, ainsi qu'une classe spéciale "pas de geste". Cette architecture permet la reconnaissance des gestes statiques et dynamiques. Le réseau neuronal a été formé sur le jeu de données Jester. La précision de la prévision F 1 = 0,92 a été obtenue .



Le flux de capture reçoit les images de la caméra frontale et les place à la fin de la liste. Si sa longueur est supérieure à 32, le thread de capture réveille le thread d'exécution du modèle. Il prend 32 images depuis le début de la liste, prédit les classes, puis supprime les éléments de la fin jusqu'à ce qu'un élément reste. Cela élimine le besoin d'une synchronisation lourde et améliore considérablement les performances: 20 FPS sur iPhone 11, 18 FPS sur iPhone XS Max, 15 FPS sur iPhone XR. Et avec un pipeline intelligent pour le prétraitement et le post-traitement, la consommation d'énergie est réduite au minimum.



Jusqu'à présent, le framework ne fonctionne que pour iOS et Windows. Le développement a utilisé le framework PyTorch, la plate-forme TwentyBN et le langage Swift.



Les plans comprennent: améliorer la qualité de la reconnaissance, ajouter la reconnaissance de nouveaux gestes sans réentraîner tous les modèles, créer une version pour Android, ajouter non seulement des gestes de bouton, mais également des gestes de curseurs.



Équipe du projet: Maxim Matyushin, Boris Konstantinovsky, Miroslav Morozov.



Vidéo avec protection de projet .






Vous pouvez en savoir plus sur nos projets éducatifs sur ce lien . Et le plus souvent aller sur la chaîne Technostream , apparaissent régulièrement de nouvelles vidéos de formation sur la programmation, le développement et d'autres disciplines.



All Articles