Vérification photo au détail avec vision par ordinateur

Entrée


Dans le cadre du programme de prêts, la banque coopère avec de nombreux magasins de détail.
L'un des éléments clés d'une demande de prêt est une photographie de l'emprunteur - un agent du magasin partenaire photographie l'acheteur; une telle photographie tombe dans le «dossier personnel» du client et est utilisée à l'avenir comme l'un des moyens de confirmer sa présence au moment de la demande de prêt.

Malheureusement, il existe toujours un risque de comportement malhonnête d'un agent qui peut transférer des photos inexactes à la banque - par exemple, des photos de clients provenant de réseaux sociaux ou de passeports.

En règle générale, les banques résolvent ce problème en vérifiant que les employés du bureau photo regardent les photos et essaient d'identifier les images inexactes.
Nous voulions essayer d'automatiser le processus et résoudre le problème en utilisant des réseaux de neurones.

Formalisation des tâches


Nous n'avons examiné que des photographies sur lesquelles il y avait des gens. Les images sans visage peuvent être coupées à l'aide de la bibliothèque Dlib ouverte.

Pour plus de clarté, nous donnons des exemples de photographies (les employés de la banque sont représentés):

image
Fig 1. Photos du point de vente

image
Fig 2. Photos des réseaux sociaux

image
Fig 3. Photo de passeport

Nous avons donc dû écrire un modèle analysant l'arrière-plan de la photographie. Le résultat de son travail a été de déterminer la probabilité que la photo ait été prise dans l'un des points de vente de nos partenaires. Nous avons identifié trois façons de résoudre ce problème: segmentation, comparaison avec d'autres photos au même point de vente, classement. Examinons chacun d'eux plus en détail.

A) Segmentation


La première chose qui m'est venue à l'esprit était de résoudre ce problème en segmentant l'image, en identifiant les zones avec l'arrière-plan des magasins partenaires.

Inconvénients:

  • La préparation des échantillons de formation prend trop de temps.
  • Un service construit sur ce modèle ne fonctionnera pas rapidement.

Il a été décidé de ne revenir à cette méthode qu'en cas d'abandon d'options alternatives. Spoiler: n'est pas revenu.

B) Comparaison avec d'autres photos du même point de vente


Avec la photo, nous recevons des informations sur le magasin de détail dans lequel il a été fabriqué. Autrement dit, nous avons des groupes de photos prises dans les mêmes points de vente. Le nombre total de photos dans chaque groupe varie de quelques unités à plusieurs milliers.

Une autre idée est venue: construire un modèle qui comparerait deux photographies et prédirait la probabilité qu'elles aient été prises à un point de vente. Ensuite, nous pouvons comparer la photo nouvellement reçue avec les photos existantes dans le même magasin. S'il s'avère qu'ils leur ressemblent, alors l'image est définitivement fiable. Si l'image est supprimée de l'image, nous l'envoyons également pour vérification manuelle.

Inconvénients:

  • Échantillonnage déséquilibré.
  • Le service fonctionnera longtemps s'il y a beaucoup de photos au point de vente.
  • Lorsqu'un nouveau point de vente apparaît, vous devez recycler le modèle.

Malgré les inconvénients, nous avons implémenté le modèle de l' article en utilisant les blocs de réseaux neuronaux VGG-16 et ResNet-50. Et ... ils ont reçu un pourcentage de réponses correctes pas beaucoup plus élevé que 50% dans les deux cas :(

B) Classification!


L'idée la plus tentante était de faire un simple classificateur qui diviserait les photos en 3 groupes: les photos des points de vente, des passeports et des réseaux sociaux. Il ne reste plus qu'à vérifier si cette approche fonctionne. Eh bien, passez également un peu de temps à préparer les données pour la formation.

Préparation des données


Dans l'ensemble de données d'images provenant des réseaux sociaux utilisant la bibliothèque Dlib, seules les photos qui ont des personnes ont été sélectionnées.

Les photos de passeport devaient être recadrées différemment, ne laissant que le visage. Là encore, Dlib est venu à la rescousse. Le principe du travail s'est avéré comme ceci: en utilisant la bibliothèque, on a trouvé les coordonnées du visage -> couper la photo d'identité, en laissant le visage.

Dans chacune des 3 classes a laissé 40 000 photos. N'oubliez pas l'augmentation des données

Modèle


ResNet-50 d'occasion. Ils ont résolu le problème comme un problème de classification multiclasse avec des classes disjointes. Autrement dit, on pensait qu'une photo ne pouvait appartenir qu'à une seule classe.

model = keras.applications.resnet50.ResNet50() model.layers.pop() for layer in model.layers: layer.trainable=True last = model.layers[-1].output x = Dense(3, activation="softmax")(last) resnet50_1 = Model(model.input, x) resnet50_1.compile(optimizer=Adam(lr=0.00001), loss='categorical_crossentropy', metrics=[ 'accuracy']) 

Résultats


Dans l'échantillon test, 24000 photos ont été laissées, soit 20%. La matrice d'erreur était la suivante:

image
réseau social - réseaux sociaux;
passeport - passeports;
pos-credit - points de vente, partenaires qui accordent des prêts.

Le pourcentage total d'erreurs est de 1,6%, pour les photos des points de vente - 1,2%. La plupart des images définies par erreur sont des images similaires à deux classes en même temps. Par exemple, presque toutes les photos mal définies de la classe pos-crédit ont été prises sous des angles infructueux (contre le mur blanc, seul le visage est visible). Par conséquent, ils étaient également similaires aux photos de la classe du réseau social. Ces photographies avaient une probabilité maximale faible.
Nous avons ajouté un seuil de probabilité maximale. Si la valeur finale est supérieure - nous faisons confiance au classificateur, inférieure - nous envoyons l'image pour vérification manuelle.

En conséquence, le résultat du service de photographie

image

ressemble à ceci:

image

Résumé


Ainsi, à l'aide d'un modèle simple, nous avons appris à déterminer automatiquement qu'une photo a été prise dans l'un des points de vente de nos partenaires. Cela nous a permis d'automatiser une partie du vaste processus d'approbation d'une demande de prêt.

Source: https://habr.com/ru/post/fr432056/


All Articles