Coder Social home page Coder Social logo

datalab-mi / basegun Goto Github PK

View Code? Open in Web Editor NEW
13.0 3.0 0.0 158.68 MB

Web app for identifying a firearm based on a picture

Home Page: https://basegun.interieur.gouv.fr/

License: Eclipse Public License 2.0

Python 12.18% JavaScript 11.49% HTML 0.46% Vue 47.40% Dockerfile 0.47% Makefile 0.71% CSS 0.66% TypeScript 26.64%
firearms classification-model vue pytorch python

basegun's People

Contributors

aurelienmartw avatar beryl-koller avatar carolinedanslesnuages avatar laruiss avatar leihuayi avatar nadeigec avatar nutfdt avatar this-is-tobi avatar thomashbrnrd avatar titigmr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

basegun's Issues

[DESIGN] Mettre à jour les maquettes mobile

Par ordre de priorité:

  • mettre à jour texte modale d'aide
  • prévoir design info pour autre_epaule: les chargeurs factices peuvent ressembler à des vrais chargeurs
  • pour autre_pistolet: prévoir une page qui explique que le tuto est seulement pour pistolet mitrailleur
  • corriger les erreurs dans le reste

Mentions SCAE, Police, Gendarmerie sur à propos

ETU lorsque j'arrive sur la page A propos je souhaite connaître les partenaires de baseGun.

  • Changer le wording: " ...en collaboration avec le SCAE , la police nationale et la gendarmerie"
  • Ajouter les logos

Build dataset v1

  • Clean confusing images from dataset v0
  • Reorder incorectly classified images from v0
  • Add new images from Joconde
  • Add new images from excedent v0 (autre_epaule)
  • Add already classified images from autre_epaule Dataiku
  • Add new images scrapped Beryl autre_epaule
  • Add new images from musée de l'armée
  • Find new examples semi_auto_militaire_ancien
  • Find new examples autre_pistolet
  • Find new examples pistolet_mitrailleur
  • Balande train/val properly

Créer le composant pour les différentes étapes

Mise à jour des maquettes

Pas de tuto factice pour ces typologies

  • Revolver
  • Pistolet à mécanisme ancien
  • Epaule à mécanisme ancien
  • Epaule à pompe - pas de tutoriel disponible
  • Epaule à levier de sous garde
  • Epaule à un coup par canon

La seconde page

doit pouvoir exister en 4 versions différentes:

Si user n'as pas coché de radio - alors il ne peut pas passer à l'étapes suivante - Afficher une erreur si il clique sur suivant ou la barre d'étapes si radio pas coché.

  • pistolet semi-auto (subdivision en 2 pour p3)
  • autre pistolet (pistolet mitrailleur, pas de subdivision)
  • autre epaule (subdivision en 5)
  • epaule à verrou (pas de subdivision)

quand c'est une typologie qui va se subdiviser cette page est une page qui donne un choix "voyez vous plutôt ça ou ça ?" voir maquette autre_epaule sur figma. Quand c'est une typologie où il y a un seul choix, c'est direct le gif du tuto

La 3e page

Plusieurs subdivisions pour chaque typologie

  • pistolet semi-auto

    bouton près pontet -> gif
    bouton poussoir crosse -> gif

  • autre pistolet

le gif est à la page précédente -> voir explication 4e page. Il faut aussi expliquer que le tuto est uniquement pour les pistolets mitrailleurs

  • autre épaule
    a. style ak (chargeur devant poignée, levier derrière chargeur) -> gif
    b. style ar15 (chargeur devant poignée, bouton au-dessus chargeur)-> gif
    c. style thompson (chargeur devant poignée, levier au-dessus pontet) ->gif
    d. style bullpup (chargeur derrière poignée) -> gif
    e. style p90 (chargeur au-dessus) -> gif

  • épaule à verrou

le gif est à la page précédente -> voir explication 4e page
4e page

  • Page où l'on demande de regarder si on voit bille ou cartouche (sauf pour verrou et autre pistolet où ça s'affiche sur la 3e)

Add tutorials for detecting airsofts

En tant qu' utilisateur je souhaite savoir à l'aide d'un tutoriel comment détecter une arme factice afin de ne pas confondre une arme réelle et une arme factice

TODO

SAUVEGARDE PREMIER TICKET

Add button "Verify if firearm factice" on result, depending on firearm type
Intro page (common)
First page (careful direction firearm, common)
Second page (x4)
Third page (x8)
Fourth page (x4)
Final result page (common)
Page "I don't manage to fulfill this step"

Website hosted on OVH

  • ssh to remote
  • git clone repo
  • docker-compose build & up
  • check docker images logs
  • test basegun.fr

Améliorations diverses infra / ops

Par ordre de priorité

  • Améliorer la sécurité niveau Docker (log4j, recos forge, user root, ...)
  • Rajouter des tests automatiques dans les CI/CD de déploiement en preprod et en prod
  • Utiliser un container s3 local dans certains tests plutôt qu'utiliser ceux d'OVH
  • Protéger davantage les branches sur github (éviter qu'on puisse faire nimp sur la branche main, ...)
  • Avoir davantage de stats/logs d'utilisation des machines : monitoring, log des url demandées dans front & back, métriques docker & vm ovh, temps de réponse front & back, ...
  • Préparer des buckets distincts prod/preprod. Voir si le mieux est de les avoir en mode "mount" sur la VM ou si le système d'upload actuel convient
  • Change l'API d'identification d'IP/de geoloc dans le front pour laquelle le nb de requêtes/j est limité

Quand on décide de prendre un de ces points:

  1. Créer une tâche et la décrire dans le board Mattermost de l'équipe
  2. Prévenir dans le channel "domaine-tech-ext" l'équipe Basegun

Merci !!

Améliorations diverses UI

2 PREMIERES PAGES INFO (avant l'accueil):

  • mettre "1/2", "2/2" en bas

PAGE RESULTAT

Affichage des icônes pouce

  • remplacer par icônes remix icon
  • quand pas cliqué, les 2 icônes sont en mode "line" couleur bleu marine
  • quand cliqué sur une icône, celle-ci est en mode "fill" bleu marine. (+ changer l'ocapcité pour montrer que clic pas changeable ?)

Texte sous le résultat "cet avis n'emporte..."

  • le déplacer au-dessus des pouces
  • remplacer "cet avis" par "le résultat donné par Basegun"

Bouton "Recommencer"

  • Remplacer "recommencer" par "Retour à l'accueil" ou "Fermer" (à tester ce qui est mieux)

Add banner for preprod

When we go on preprod.basegun.fr, we want to see a kind of banner "PREPROD" displayed on all pages, so that it's obvious to the user that they are on preprod website instead of prod.

Already started in #108

Préparation entraînement ML

  • Choix modèle ML : quel modèle allie meilleur tradeoff performance, légèreté et facilité d'utilisation ?
  • Data augmentation : nous n'aurpns pas assez d'images, comment crééer fausses données à partir images fond blanc ? Faire aussi sur les images non fond blanc ?
  • Format images resizing : pour entraîner le modèle de classif les images doivent avoir une taille fixe. Change-t-on résolution (rapport height/width) image ou rajoute-t-on des bordures ou fait-on un crop ?
  • Normaliser images
  • Train/validation : préparer la dataset pour avoir un set de training, un de validation (en cours)
  • Export ONNX (NB: excès de mémoire sur CPU, passe sur GPU si batch_size <= 256)

Code dans Basegun-lab

Build dataset 10 classes v0

Classes:

  • autre_epaule
  • autre_pistolet
  • epaule_a_levier_sous_garde
  • epaule_a_percussion_silex
  • epaule_a_pompe
  • epaule_a_un_coup
  • epaule_a_verrou
  • pistolet_a_percussion_silex
  • pistolet_semi_auto_moderne
  • revolver

Rajouter infos dans les résultats

ETU je souhaite qu'une information vienne compléter les résultat

Si Catégorie A => Ajouter Mention "soumis à déclaration / autorisation"
SI Catégorie B => Ajouter Mention "soumis à déclaration / autorisation"
Si Catégorie C => Ajouter Mention "soumis à déclaration / autorisation"
Si Catégorie D => Ajouter Mention "soumis à déclaration / autorisation"

Lorsque la page donne comme résultat ex: A,B,C ou D => wording en réflexion

Changer le package Dsfr/vue

Passer le front-end de @laruiss/vue-dsfr à "@gouvminint/vue-dsfr": "~1.4.0" pour réussir à utiliser des icônes qui nous serviront pour les tutos factices. Pour cela il faut

  • augmenter la version de node dans le Dockerfile (FROM) à node 18
  • augmenter la verison de npm dans le Dockfile (ligne 5) à npm 8
  • changer le package.json pour mettre gouvminint/vue-dsfr à la place de laruiss et mettre à jour toutes les autres dépendances pour qu'il n'y aie pas de conflit avec node 18 & npm 8
  • regénérer le package-lock correspondant localement (ou bien changer les lignes 7-9 pour copier le package.json uniquement et faire npm i à la place de npm ci pour générer le package-lock, et récupérer le package-lock généré dans l'image Docker)vérifier que ça build bien et marche bien avec le nouveau package

Portage Kubernetes

  • Création des manifestes YAML
  • Création d'un environnement kubernetes
  • Création d'un sous domaine basegin.fr

Tests backend

  • Tests unitaires modèle ML
  • Tests API backend
  • Automatisation des tests dans CI

Implémentation d'une stack de monitoring Elastic + Kibana + Fluentd

Liste des actions à mener

  • Implémentation de ElasticSearch pour le dev
  • Implémentation de Kibana pour le dev
  • Réorganisation du répertoire monitoring
  • Correction des droits sur le datadir elastic
  • Ajout de la persistance pour Kibana
  • Implémentation de fluentbit pour les metrics
  • Suppression de metricbeat
  • Suppression de filebeat
  • Définition de métriques Basegun

Simplifier l'affichage du header dans le code

En Tant que Développeur Je souhaite n'avoir qu'un composant header et le conditionner à l'aide d'un v-if

  • Rendre accessible le header dans toute l'appli en l'appelant directement dans app.vue
  • Ajouter un v-if et créer une data dans le store (Le header doit être accessible depuis tout les pages de l'appli )
  • Effacer tout les appels au header des vues
  • Ajouter un v-if pour conditionner le menu (accessible seulement après avoir passé les slides) - (Les informations doivent être accessible depuis tout les pages de l'appli=
  • Effacer les fichiers obsolete

Create CI/CD for project

  • Push on master -> tag & release & push docker images
  • When new docker images -> pull docker images & restart website on prod server

Detection fake firearms

  • Make different templates on figma
  • Show to policemen for feedback
  • Implement tutorials based on feedback

Fix branch tuto factices

  • mettre à jour en 2.0 dans Makefile et package.json
  • virer la bordure d'ombre en bas du header
  • dans la page /resultat, mettre à jour l'affichage du resultat comme dans l'option B ci-dessous (@Caroline les maquettes ne sont pas à jour à ce propos)
  • vérifier affichage header dans guides factices
  • layout contenu page global avec marges sur côtés et bas de page
  • à la fin du tuto on revient dans la page resultat. On utilise une variable store.isFactice. Si store.isFactice=null on affiche le bloc "vérifier si l'arme est factice", si isFactice=True on affiche dans le résultat: arme factice / non classé sans le bloc "vérifier si l'arme est factice", si isFactice=False on affiche le résultat de l'algo sans le bloc "vérifier si l'arme est factice".
  • renommer les composants pour qu'ils soient plus parlant et respecter le nommage en 2 mots.
  • supprimer les vues sans contenu qui appellent un composant.
    image

Réparer les bugs de navigation quand on fait précédent/suivant

  • Transformer InstructionsView en nouvelle route
  • Changer les noms de variables isDisplay -> is DisplayHeader, confidence_level -> camelCase
  • Pas de retour à page accueil quand clique sur Upload
  • Mettre "Analyse" sur page InstructionsView à la place du bouton
  • Si presse bouton précédent dans le navigateur depuis le navigateur, tout est logique

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.