Outils pour utilisateurs

Outils du site


Panneau latéral

Accueil

Select other language :


Apprentissage

Enseignements

Enseignements Département Informatique SI5 et Master IFI

Enseignements Département Bâtiment Polytech'Nice

Autres Formations française et étrangère

Activités administratives, Ingénierie et Innovation Pédagogiques

Apprentissage Département Informatique SI5/Master 2 ingénierie informatique EUR DS4H


Recherche

Valorisation de la Recherche

Dépôts Logiciels à l’Agence de Protection des Programme (APP)

Valorisation des résultats de recherche et transfert

Diffusion de la Culture scientifique et Technologique

Communications de presse

Séminaire ENSI Tunis

Pédagogie Innovante

Relations industrielles et socio-économique

Organisation de Manifestations

  • Conférence sur les FabLabs, Alexandre Schneider, Professeur Agrégé en Génie Mécanique, Université de Reims Champagne-Ardenne Web
  • Journées UbiMob'14 Site Web

Animation de la Recherche

U-Santé

Privé

Outils

Sources d'Informations

cours:plim:projet16_17:gr1:gr1

Smart Contact List

Présentation du projet

  • Nom 1 : Gatien CHAPON
  • Créneau (AM ou PM) : AM
  • Nom 2 : Gregory ROBIN
  • Créneau (AM ou PM) : AM
  • Nom du Projet : Smart Contact List

Un scénario d'illustration du Projet

L’idée de ce projet est de réaliser une application capable de trouver et de proposer à un utilisateur les contacts les plus probables qu’il souhaite appeler à un instant donné. Par exemple, en tant que Bob, commercial ayant beaucoup de contacts et énormément d'appels à passer dans la journée, je veux que mon téléphone me propose une liste de contact favoris au moment où je souhaite passer un appel. Pour cela, l’application aura accès au journal d’appel de Bob et utilisera un algorithme d'apprentissage supervisé. De même, Bob pourra effectuer un appel depuis l’application.

Matériel disponible

Cible Mobile utilisée :

Étant donné, qu'Android est l'un des leaders du marché des OS pour les applications mobiles, nous allons nous orienter vers une application compatible avec un os de type Android. Nous prendrons comme cible un téléphone Samsung Galaxy S4 mini avec OS Android et une version 5.0.3

  • Référence du SmartPhone : Samsung Galaxy S4 mini
  • Caractéristiques techniques

Accelerometer, Geomagnetic Sensor, Gyro Sensor, Light Sensor, Proximity Sensor

  • Caractéristiques de l'OS et des environnements logiciels utilisables pour développer sur ce SmartPHone : Android 5.0.3

Environnement logiciel :

Dans le but d'optimiser les performances de notre application et étant donné que nous ciblons des plateformes mobiles de type Android, nous avons choisi de réaliser une application mobile native Android. De ce fait, nous avons choisi d’utiliser Android studio comme environnement logiciel pour développer dans un environnement natif.

Architecture logicielle de la solution :

Notre architecture logicielle sera découpée en deux parties distinctes :

  1. Une partie serveur en charge du traitement des données. Dans notre cas, l’algorithme d’apprentissage sera situé sur celui-ci.
  2. Une partie cliente, l’application mobile permettant :
  • L’accès aux sondes systèmes (journal d’appel, contact)
  • La mise à jour de la base de données locale lorsqu'un appel est émis ou reçu.
  • L’utilisation d’un cache local permettant de stocker les contacts les plus probables pour chaque période de la journée : 8-10h, 10-12h, 12-14h, 14-16h, 16h-18h, 18-20h, 20-22h, 22-00h et 00-06h (mise à jour de ce cache lors de la synchronisation avec le serveur).
  • L’affichage des contacts les plus probables qu’ils souhaitent appeler à un instante donné.

La communication entre le client et le serveur sera effectué à l’aide de requête de type REST.

Reconnaissance de l'activité :

Cette application permettra de prédire vers quels contacts un appel va être émis et ce en fonction de l'heure et de la date à laquelle l’utilisateur souhaite passer un appel.

Ressources utilisées dans le Projet

Pour ce projet, nous allons principalement nous intéresser aux sondes téléphoniques de l’appareil cible. Pour réaliser notre algorithme d’apprentissage, nous avons besoin de récupérer plusieurs informations :

  • Le journal d'appel de l'utilisateur pour accéder aux informations de chaque appel préalablement réalisés :
    • Date et l'heure de l'appel
    • La personne appelée
    • Appel reçu ou émis
  • Le répertoire de contact de l'utilisateur pour accéder à tous les contacts de l'utilisateur
  • Nous calculerons de même le nombre d'appel émis et reçu par contact (calcul réalisé sur le serveur).

Faisabilité des choix

Sous Android, l’accès au journal d’appel peux être réaliser en utilisant l’API CallLog.Calls (https://developer.android.com/reference/android/provider/CallLog.Calls.html#CallLog.Calls()). Cette API nous permettra de récupérer tous les informations de l’utilisateur concernant son journal d’appel. Par contre cette API impose bien évidement de demander le droit d’accès au journal d’appel de l’utilisateur.

Nous avons de même la possibilité d’accéder à la liste de contact de l’utilisateur en utilisant l’API Android Read_Contacts (https://developer.android.com/training/contacts-provider/retrieve-names.html).

Algorithme mis en œuvre :

Afin de réaliser ce projet, nous allons mettre en œuvre un algorithme supervisé de type Random forest.

Pour ce faire, nous définiront un vecteur composé d’un grand nombre de données sans quoi l'algorithme serait totalement inefficace.

Avec quelles données ?

Le vecteur sera composé de la date, de l'heure d'appel, de tous les contacts présents sur le téléphone, du nombre d'appel par contact ainsi que de l'identifiant du contact qui constituera notre cible (la classe à reconnaître).

Cet algorithme nous parait tout à fait pertinent du fait du nombre de contact que l'on peut avoir sur un téléphone. Les données engendrées seront donc normalement assez importantes pour fournir un résultat cohérent quant à la prédiction de l'appel que l'on veut passer.

Pour réaliser cela, nous nous inspirerons d’un exemple d’utilisation de cette algorithme disponible à l’adresse suivante : https://www.kaggle.com/vankads/titanic/a-journey-through-titanic/notebook.  

Planning et Test

  1. Choix et implémentation de la composition définitive du vecteur et des classes pour l’utilisation de l’algorithme d’apprentissage Random Forest.
  2. Création de l’application mobile
  3. Mises-en en place de différents services REST pour l’échange de données entre le client et le serveur.
  4. Phase de test et d’analyse

Pour réaliser la phase de test de notre application, nous utiliserons le jeu de données de nos téléphones personnelles.

RENDU FINAL

Code source

Ci-dessous le lien pour accéder au code source de la partie backend (serveur Python) et la partie mobile (projet android studio) : https://github.com/gatienchapon/SmartContactList

Sécurité et vie privée

Pour assurer la confidentialité des données échangées entre l'application cliente et le serveur gérant l’algorithme d'apprentissage, nous avons choisi d'affecter un identifiant unique à chaque contact.

De ce fait, le nom des contacts ou les numéros de téléphones de ceux-ci restent privés et ne sont pas envoyés et bien sûr non stockés sur le serveur distant. Seuls les identifiants des contacts transitent entre l'application et le serveur, ce qui permet de rendre les contacts non identifiables en dehors de l'application.

Nous avons choisi de fournir à nos utilisateurs deux versions de l'application :

  • Une version dite “Cloud”: c'est à dire que le traitement et l'algorithme d'apprentissage est réalisé sur un serveur distant dans le “Cloud”. De ce fait, l'utilisateur n'a pas a ce soucier de la partie serveur et il pourra réaliser de nouvelles synchronisations à n'importe quel endroit (en ayant une connexion internet active comme la 3G, la 4G ou le WIFI).
  • Une version dite “Local”: aucune information ne sera envoyée à un serveur distant et tous les traitements seront effectués directement sur l'ordinateur de l'utilisateur. Cela permet d'assurer la sécurité et la confidentialité des données échangées, puisque aucune donné ne transitera par le réseau “Internet” et tous les traitements s’effectueront en local.

Fonctionnement de la machine Serveur

Notre serveur reçoit en entrée plusieurs vecteurs (envoyé par l'application mobile et de type POST) correspondants aux appels d'un utilisateur (pour une question de “vie privée” les numéros de téléphone ainsi que le nom des contacts ne sont pas transférés, seuls les identifiants des contacts sont transférés) .

Après un processus de traitement réalisé par le serveur pour augmenter la taille des vecteurs, un appel à une bibliothèque implémentant Random Forest est réalisé.

Le serveur renvoi par la suite ces prédictions concernant les identifiants des contacts que l'utilisateur souhaitera potentiellement appeler à un instant donné.

Produit 1 : Une Version "Local"

Dans cette version, nous fournissons la machine serveur et l'application cliente Android. Attention : dans cette version votre ordinateur et votre smartphone doivent être sur le même réseau local.

1) Installation de la machine serveur sous Windows

2) Installation de l'application mobile sur cible Android

  • Télécharger l'APK suivant directement sur votre mobile : SmartContactListApp_Local
  • Allez dans l'application “Téléchargement” et cliquez sur le fichier .apk
  • Sélectionnez “Installer”

3) Utilisation et synchronisation avec votre machine local

  • Vérifiez que votre ordinateur et votre smartphone sont bien connectés au même réseau local (la connection WIFI de votre mobile doit être activée)
  • Lancez l'exécutable préalablement téléchargé sur votre ordinateur Windows
  • Lancez l'application mobile et choisir “Make a Sync”

Produit 2 : Une Version "Cloud"

Pour cette version, il suffit d'installer l'application mobile sur votre smartphone Android

Installation de l'application mobile sur cible Android

  • Téléchargement : télécharger l'APK suivant sur votre téléphone mobile : SmartContactListApp_Cloud
  • Choisir “Téléchargement direct”
  • Allez dans l'application “Téléchargement” et cliquez sur le fichier .apk
  • Sélectionnez “Installer”
  • Ouvrir l'application
  • Cliquez sur “Make a Sync”, attention vous devez avoir un accès à internet 3G, 4G ou WIFI

Utilisation de l'application mobile Android

cours/plim/projet16_17/gr1/gr1.txt · Dernière modification: 2017/02/17 15:00 par gchapon