Les développeurs d'apprentissage de la machine devrait être collection de vision informatique bricolage et projet d'apprentissage en profondeur

Cet article est une compilation du groupe de sous-titre Lei blog technologie de réseau Feng, le titre original de bricolage Projets profonds d'apprentissage, auteur Favio Vázquez.

Traduction | Zhao Pengfei, finition Xiao Lin | Ling deux

Lei Feng réseau par, dans cet article Lei Feng réseau recommandera certaines applications de vision informatique et de la profondeur des projets d'apprentissage, y compris la mise en uvre spécifique et les détails, vous pouvez reproduire ces éléments sur votre ordinateur.

LinkedIn communauté scientifique des données

Akshay Bahadur est le meilleur exemple des données de LinkedIn communauté scientifique donné. Dans d'autres plates-formes, comme Quora, StackOverflow, Youtube et ainsi de suite, il y a beaucoup de bonnes personnes, ainsi que de nombreux forums et plates-formes pour aider les uns les autres dans les domaines de la science, la philosophie, les mathématiques, la linguistique et les sciences de données.

Akshay Bahadur

Mais je pense que dans les 1-3 dernières années, LinkedIn dans le partage de contenu des données scientifiques à faire très bien, apprendre des expériences partagées sur la façon de la machine l'article dans le monde réel. Je recommande souvent que les gens qui veulent se lancer dans ce domaine à rejoindre la communauté, et LinkedIn sont les meilleurs, vous pouvez toujours me trouver :) là.

À partir de l'apprentissage profondeur et vision par ordinateur

https://github.com/facebookresearch/Detectron

Dans cette décennie, l'étude approfondie de l'image dans le domaine de la classification, l'expérimentation et de la recherche d'action correspondant est très important, et ses résultats ont été surprenants, pour résoudre certains problèmes en termes de performance a dépassé le niveau humain.

Dans cet article, je vais montrer le travail Akshay Bahadur fait dans le domaine de la vision par ordinateur et la profondeur de l'apprentissage. Si vous n'êtes pas familier avec ces concepts, vous pouvez en apprendre plus en lisant le contenu suivant:

  • étude approfondie de l'introduction « bizarre »

    Ici, il y a une excellente introduction sur la profondeur des postes d'apprentissage, programmes et blog. Mais ceci est une présentation unique en son genre.

    https://towardsdatascience.com/a-weird-introduction-to-deep-learning-7828803693b0

  • Deux mois à explorer la profondeur de la vision de l'apprentissage et de l'ordinateur

    J'ai décidé de comprendre en profondeur la vision par ordinateur et l'apprentissage de la machine. En tant que développeur web, j'ai trouvé.

    https://towardsdatascience.com/two-months-exploring-deep-learning-and-computer-vision-3dcc84b2457f

  • De neurosciences à la vision informatique

    La vision humaine et l'ordinateur 50 ans.

    https://towardsdatascience.com/from-neuroscience-to-computer-vision-e86a4dea3574

  • Andrew Ng Computer Vision - 11 leçons

    Je viens de terminer Andrew Ng Computer Vision cours sur ce Coursera. Andrew Ng a fait un travail remarquable pour expliquer ces problèmes.

    https://towardsdatascience.com/computer-vision-by-andrew-ng-11-lessons-learned-7d05c18a6999

1. OpenCV réalisée à l'aide manuelle

akshaybahadur21 / HandMovementTracking

https://github.com/akshaybahadur21/HandMovementTracking

Akshay:

Afin d'effectuer une piste vidéo, un algorithme d'analyse de séquences d'images vidéo nécessite la sortie cible et le déplacement entre chaque trame. Il existe de nombreux algorithmes, ont chacun leurs propres forces et faiblesses. Le choix de la méthode à utiliser, il est important de considérer que le but de l'application. système de suivi vidéo comporte deux composants principaux: une cible positionnée et exprimé, ainsi que le filtrage et l'association de données.

Positionnement d'une piste vidéo (s) pendant le mouvement à travers l'objectif de la caméra. Il a une variété d'utilisations, comme l'interaction homme-ordinateur, la surveillance de la sécurité, la compression vidéo et les communications, la réalité augmentée, le contrôle du trafic, l'imagerie médicale, et le montage vidéo.

Voici le code que vous devez l'utiliser au moment de la reproduction:

importer numpy comme np

importation CV2

importation argparse

des collections deque d'importation

cap = cv2.VideoCapture (0)

pts = deque (maxlen = 64)

Lower_green = np.array ()

Upper_green = np.array ()

while True:

ret, img = cap.read

HSV = cv2.cvtColor (img, cv2.COLOR_BGR2HSV)

kernel = np.ones ((5,5), np.uint8)

masquer = cv2.inRange (HSV, Lower_green, Upper_green)

masquer = cv2.erode (masque, noyau, itérations = 2)

masquer = cv2.morphologyEx (masque, cv2.MORPH_OPEN, noyau)

# Masque = cv2.morphologyEx (masque, cv2.MORPH_CLOSE, noyau)

masquer = cv2.dilate (masque, noyau, itérations = 1)

res = cv2.bitwise_and (img, img, masque = masque)

CNTS héritier = cv2.findContours (mask.copy, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

Centre = Aucun

si len (CNTS) >  0:

c = max (CNTS, key = cv2.contourArea)

((X, y), le rayon) = cv2.minEnclosingCircle (c)

M = cv2.moments (c)

centre = (int (M / M ), int (M / M ))

si le rayon >  5:

cv2.circle (img, (int (x), int (y)), int (rayon), (0, 255, 255), 2)

cv2.circle (img, centre, 5, (0, 0, 255), -1)

pts.appendleft (centre)

for i in xrange (1, len (pts)):

si pts Aucun ou est pts  Aucun est:

continuer

épaisseur = int (np.sqrt (len (pts) / flotteur (i + 1)) * 2,5)

cv2.line (img, pts , Pts (0,0,225), d'épaisseur)

cv2.imshow ( "Frame", img)

cv2.imshow ( "masque", masque)

cv2.imshow ( "res", res)

k = cv2.waitKey (30) & 0xFF

si k == 32:

pause

# Nettoyage de l'appareil photo et fermez toutes les fenêtres ouvertes

cap.release

cv2.destroyAllWindows

Oui, 54 lignes de code, est assez simple? Si votre ordinateur pour vérifier les résultats présentés ci-dessous, vous devez installer OpenCV:

Installation OpenCV sur MacOS

Dans cet article, je vais marcher installé OpenCV 3.3.0 (C ++ et Python) sur MacOS et OSX.

https://www.learnopencv.com/install-opencv3-on-macos/

Si vous utilisez Ubuntu:

OpenCV: Installation OpenCV-Python sur Ubuntu

Avec toutes les dépendances nécessaires, nous allons installer OpenCV. Vous devez utiliser CMake pour configurer les options d'installation des éléments

https://docs.opencv.org/3.4.1/d2/de6/tutorial_py_setup_in_ubuntu.html

Si vous utilisez Windows:

Windows Installer OpenCV-Python- OpenCV documentation 3.0.0-dev

Dans ce tutoriel, nous allons apprendre comment configurer O penCV-Python sur les systèmes Windows. Les étapes suivantes dans Windows 7-64 testé par

https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows.html

2. La détection de la fatigue basée sur OpenCV

akshaybahadur21 / Drowsiness_Detection

GitHub.github.com Créer un compte contribue au développement du projet à la détection de la fatigue

https://github.com/akshaybahadur21/Drowsiness_Detection

La conduite de longue date du conducteur peut provoquer un accident. Ce code détecte vos yeux, émettra un avertissement lorsque endormi.

dépendance:

  • CV2

  • immutils

  • Dlib

  • scipy

algorithme

6 chaque oeil en utilisant (x, y) de coordonnées de représentation, (le même que quand on voit al.) A partir du coin gauche de l'oeil, puis l'oeil est calculée dans le sens horaire le long de la circonférence.

condition

Voir les images de trame en continu 20, si le rapport d'aspect est inférieur à 0,25 oeil, une alarme est émise.

rapports

3. régression SoftMax identification numérique

akshaybahadur21 / chiffre-Recognizer

Le classificateur d'apprentissage machine Github.com - identification numérique

https://github.com/akshaybahadur21/Digit-Recognizer

SOFTMAX utiliser les codes de retour dans un programme qui peut vous aider à distinguer entre les différents numéros. Vous pouvez installer Conda comme Python, il peut fournir une compilation de toutes les bibliothèques Python environnement pertinents et connexes pour vous.

description

régression softmax est une généralisation de la régression logistique, nous pouvons l'utiliser pour résoudre le problème multi-classification, en supposant que ces catégories sont mutuellement exclusives (synonyme: un certain nombre de raisonnement logique, classificateur entropie maximale, ou classes de régression logistique). , Nous utilisons habituellement plutôt le modèle de régression logistique dans le second problèmes de classification.

la mise en uvre Python

Dataset MNIST ensemble de données, alors que la taille de l'image est de 28 * 28, en utilisant la régression logistique, les réseaux de neurones des couches superficielles et profondes du réseau de neurones à classer 0-9.

Une partie des trois meilleurs modèles sont utilisés bibliothèques qui NumPy, y compris l'optimisation, la propagation vers l'avant et la propagation de retour.

La régression logistique:

importer numpy comme np

matplotlib.pyplot importation comme plt

def softmax (z):

z - = np.max (z)

sm = (np.exp (z) .T / np.sum (np.exp (z), l'axe = 1))

retour sm

def initialize (dim1, dim2):

« » "

: Param dim: taille du vecteur w initilazied avec des zéros

: Retour:

« » "

w = np.zeros (= forme (dim1, dim2))

b = (= np.zeros de forme (10, 1))

retourner w, b

def propager (w, b, X, Y):

« » "

: Param w: w poids pour

: Param b: polarisation

: X Param: taille des données (pas de caractéristiques, pas d'exemples)

: Y Param: véritable label

: Retour:

« » "

m = X.shape # obtenir pas de lignes

# Forward Prop

A = softmax ((np.dot (w.T, X) + b) .T)

coût = (-1 / m) * np.sum (Y * np.log (A))

# Backwar prop

dw = (1 / m) * np.dot (X, (A - Y) .T)

db = (1 / m) * np.sum (A - Y)

coût = np.squeeze (coût)

= {Grads "dw": dw,

"Db": db}

Grads retour, le coût

def optimize (w, b, X, Y, num_iters, alpha, print_cost = false):

« » "

: Param w: w poids pour

: Param b: polarisation

: X Param: taille des données (pas de caractéristiques, pas d'exemples)

: Y Param: véritable label

: Param num_iters: nombre d'itérations pour gradient

: Param alpha:

: Retour:

« » "

coûts =

for i in range (num_iters):

grades, coût = propagation (w, b, X, Y)

dw = Grads

db = Grads

w = w - alpha * dw

b = b - alpha * db

# Enregistrer les coûts

si i% 50 == 0:

costs.append (coût)

# Imprimer le coût 100 exemples de formation

si print_cost et i% 50 == 0:

print ( "Coût après itération% i:% f" % (i, coût))

params = { "w": w,

"B": b}

= {Grads "dw": dw,

"Db": db}

retour params, Grads, coûts

def prédire (w, b, X):

« » "

: Param w:

: B Param:

: X Param:

: Retour:

« » "

# M = X.shape

# Y_pred = np.zeros (forme = (1, m))

# W = w.reshape (X.shape , 1)

y_pred = np.argmax (softmax ((np.dot (w.T, X) + b) .T), l'axe = 0)

retour y_pred

modéliser def (X_train, Y_train, Y, X_test, Y_test, num_iters, alpha, print_cost):

« » "

: X_train Param:

: Y_train Param:

: X_test Param:

: Y_test Param:

: PARAM num_iterations:

: Learning_rate Param:

: Print_cost Param:

: Retour:

« » "

w, b = initialize (X_train.shape , Y_train.shape )

les paramètres, les grades, les coûts = Optimiser (w, b, X_train, Y_train, num_iters, alpha, print_cost)

w = paramètre

b = paramètres

y_prediction_train = prédire (w, b, X_train)

y_prediction_test = prédire (w, b, X_test)

print ( "précision de train: {}%", somme (y_prediction_train == Y) / (flotteur (len (Y))) * 100)

print ( "Test de précision: {}%", somme (y_prediction_test == Y_test) / (flotteur (len (Y_test))) * 100)

d = { "coûts": les coûts,

"Y_prediction_test": y_prediction_test,

"Y_prediction_train": y_prediction_train,

"W": w,

"B": b,

"Learning_rate": alpha,

"Num_iterations": num_iters}

# Courbe d'apprentissage de terrain (avec frais)

#costs = np.squeeze (d )

# Plt.plot (coûts)

# Plt.ylabel ( 'coût')

# Plt.xlabel ( 'itérations (par centaines)')

# Plt.title ( "taux d'apprentissage =" + str (d ))

# Plt.plot

# Plt.show

# Plt.close

#pri (X_test.T, y_prediction_test)

retour d

def pri (X_test, y_prediction_test):

exemple = X_test

print ( "Prévision pour l'exemple est", y_prediction_test )

plt.imshow (np.reshape (par exemple, ))

plt.plot

plt.show

Faible profondeur réseau de neurones

importer numpy comme np

matplotlib.pyplot importation comme plt

def softmax (z):

z - = np.max (z)

sm = (np.exp (z) .T / np.sum (np.exp (z), l'axe = 1))

retour sm

def couches (X, Y):

« » "

: X Param:

: Param Y:

: Retour:

« » "

n_x = X.shape

n_y = Y.shape

retour n_x, n_y

def initialize_nn (n_x, N_H, n_y):

« » "

: N_x Param:

: N_H Param:

: N_y Param:

: Retour:

« » "

np.random.seed (2)

W1 = np.random.randn (N_H, n_x) * 0,01

b1 = np.random.rand (N_H, 1)

W2 = np.random.rand (n_y, N_H)

b2 = np.random.rand (n_y, 1)

paramètres = { "W1": W1,

"B1": b1,

"W2": W2,

"B2": b2}

paramètres de retour

def forward_prop (X, paramètres):

W1 = paramètres

b1 = paramètres

W2 = paramètres

b2 = paramètres

Z1 = np.dot (W1, X) + b1

A1 = np.tanh (Z1)

Z2 = np.dot (W2, A1) + b2

A2 = softmax (Z2.T)

cache = { "Z1": Z1,

"A1": A1,

"Z2": Z2,

"A2": A2}

retour A2, cache

def compute_cost (A2, Y, paramètres):

m = Y.shape

W1 = paramètres

W2 = paramètres

logprobs = np.multiply (np.log (A2), Y)

coût = - (np.sum logprobs) / m

coût = np.squeeze (coût)

coût retour

def back_prop (paramètres, cache, X, Y):

m = Y.shape

W1 = paramètres

W2 = paramètres

A1 = cache

A2 = cache

DZ2 = A2 - Y

DW2 = (1 / m) * np.dot (DZ2, A1.T)

db2 = (1 / m) * np.sum (DZ2, axe = 1, keepdims = Vrai)

DZ1 = np.multiply (np.dot (W2.T, DZ2), 1 - np.square (A1))

DW1 = (1 / m) * np.dot (DZ1, X.T)

db1 = (1 / m) * np.sum (DZ1, axe = 1, keepdims = Vrai)

= {Grads "DW1": DW1,

"Db1": DB1,

"DW2": DW2,

"Db2": db2}

Grads de retour

def update_params (paramètres, les grades alpha):

W1 = paramètres

b1 = paramètres

W2 = paramètres

b2 = paramètres

DW1 = Grads

DB1 = Grads

DW2 = Grads

db2 = Grads

W1 = W1 - alpha * DW1

b1 = b1 - alpha * db1

W2 = W2 - alpha * DW2

b2 = b2 - alpha * db2

paramètres = { "W1": W1,

"B1": b1,

"W2": W2,

"B2": b2}

paramètres de retour

def model_nn (X, Y, Y_real, test_x, test_y, N_H, num_iters, alpha, print_cost):

np.random.seed (3)

n_x, n_y = couches (X, Y)

paramètres = initialize_nn (n_x, N_H, n_y)

W1 = paramètres

b1 = paramètres

W2 = paramètres

b2 = paramètres

coûts =

pour i dans la plage (0, num_iters):

A2, cache = forward_prop (X, paramètres)

coût = compute_cost (A2, Y, paramètres)

grades = back_prop (paramètres, cache, X, Y)

si (i >  1500):

alpha1 = 0,95 * alpha

paramètres = update_params (paramètres, grades, alpha1)

autre:

paramètres = update_params (paramètres, grades, alpha)

si i == 0% 100:

costs.append (coût)

si print_cost et i == 0% 100:

print ( "Coût après itération pour% i:% f" % (i, coût))

prédictions = predict_nn (paramètres, X)

print ( "précision de train: {}%", somme (de prévisions Y_real) / (flotteur (len (Y_real))) * 100)

prédictions = predict_nn (paramètres, test_x)

print ( "précision de train: {}%", somme (la test_y de prédictions) / (flotteur (len (test_y))) * 100)

# Plt.plot (coûts)

# Plt.ylabel ( 'coût')

# Plt.xlabel ( 'itérations (par centaines)')

# Plt.title ( "taux d'apprentissage =" + str (alpha))

# Plt.show

paramètres de retour

def predict_nn (paramètres, X):

A2, cache = forward_prop (X, paramètres)

prédictions = np.argmax (A2, axe = 0)

prévisions de retour

Et, enfin, DNN:

importer numpy comme np

matplotlib.pyplot importation comme plt

def softmax (z):

cache = z

z - = np.max (z)

sm = (np.exp (z) .T / np.sum (np.exp (z), l'axe = 1))

retour sm, cache

def Relu (z):

« » "

: Param z:

: Retour:

« » "

s = np.maximum (0, z)

cache = z

retour, cache

def softmax_backward (dA, cache):

« » "

: DA Param:

: Activation_cache Param:

: Retour:

« » "

z = cache

z - = np.max (z)

s = (np.exp (z) .T / np.sum (np.exp (z), l'axe = 1))

dZ = dA * s * (1 - s)

retour dZ

def relu_backward (dA, cache):

« » "

: DA Param:

: Activation_cache Param:

: Retour:

« » "

Z = cache

dZ = np.array (dA, copie = true) # simplement convertir dz à un objet correct.

dZ en 17).

coût retour

def linear_backward (dZ, cache):

« » "

: DZ Param:

: Cache Param:

: Retour:

« » "

A_prev, W, b = cache

m = A_prev.shape

dW = (1 / m) * np.dot (dZ, cache .T)

db = (1 / m) * np.sum (dZ, axe = 1, keepdims = Vrai)

dA_prev = np.dot (cache .T, dZ)

retour dA_prev, dW, db

def linear_activation_backward (dA, cache, activation):

« » "

: DA Param:

: Cache Param:

: Activation Param:

: Retour:

« » "

linear_cache, activation_cache = cache

si l'activation == "Relu":

dZ = relu_backward (dA, activation_cache)

dA_prev, dW, db = linear_backward (dZ, linear_cache)

Elif activation == "softmax":

dZ = softmax_backward (dA, activation_cache)

dA_prev, dW, db = linear_backward (dZ, linear_cache)

retour dA_prev, dW, db

def L_model_backward (A_last, Y, des caches):

« » "

: A_last Param:

: Param Y:

: Met en cache Param:

: Retour:

« » "

Grads = {}

L = len (caches) # le nombre de couches

m = A_last.shape

Y = Y.reshape (A_last.shape) # après cette ligne, Y est la même forme que A_last

dA_last = - (np.divide (Y, A_last) - np.divide (1 - Y, 1 - A_last))

current_cache = caches

Diplômées , grades , grades = linear_activation_backward (dA_last,

current_cache,

activation = "softmax")

L inversé en (plage (L - 1)):

current_cache = caches

dA_prev_temp, dW_temp, DB_Temp = linear_activation_backward (grades , current_cache,

activation = "relu")

grades = dA_prev_temp

grades = dW_temp

grades = DB_Temp

Grads de retour

def update_params (params, grades, alpha):

« » "

: Params Param:

: Param Grads:

: Param alpha:

: Retour:

« » "

L = len (params) // 2 # nombre de couches dans le réseau de neurones

L dans la gamme (L):

params = params - * alpha grades

params = params - * alpha grades

params de retour

def model_DL (X, Y, Y_real, test_x, test_y, layers_dims, alpha, num_iterations, print_cost): # lr était 0,009

« » "

Met en uvre un réseau neuronal L-couche: * (L-1) - > Linear > Sigmoïde.

arguments:

X - données, réseau numpy de forme (nombre d'exemples, num_px * num_px * 3)

Y - vrai vecteur "label" (contenant 0 si chat, si une non-cat), de forme (1, nombre d'exemples)

layers_dims - liste contenant la taille d'entrée, et chaque taille de la couche, de longueur (nombre de couches + 1).

taux d'apprentissage de la règle de mise à jour de descente de gradient - alpha

num_iterations - nombre d'itérations de la boucle d'optimisation

print_cost - si vrai, il imprime le coût 100 étapes

Retours:

params - params appris par le modèle Ils peuvent alors être utilisés pour prédire ..

« » "

np.random.seed (1)

coûts = # assurer le suivi des coûts

params = initialize_parameters_deep (layers_dims)

pour i dans la plage (0, num_iterations):

A_last, caches = L_model_forward (X, params)

coût = compute_cost (A_last, Y)

grades = L_model_backward (A_last, Y, caches)

si (i >  800 et i = alpha10,80 * alpha

params = update_params (params, grades, alpha1)

elif (i > = 1700):

alpha1 = 0,50 * alpha

params = update_params (params, grades, alpha1)

autre:

params = update_params (params, grades, alpha)

si print_cost et i == 0% 100:

print ( "Coût après itération% i:% f" % (i, coût))

si print_cost et i == 0% 100:

costs.append (coût)

prédictions = prédire (params, X)

print ( "précision de train: {}%", somme (de prévisions Y_real) / (flotteur (len (Y_real))) * 100)

prédictions = prédire (params, test_x)

print ( "Test de précision: {}%", somme (la test_y de prédictions) / (flotteur (len (test_y))) * 100)

# Plt.plot (np.squeeze (coûts))

# Plt.ylabel ( 'coût')

# Plt.xlabel ( 'itérations (par dizaines)')

# Plt.title ( "taux d'apprentissage =" + str (alpha))

# Plt.show

params de retour

def prédire (paramètres, X):

A_last, cache = L_model_forward (X, paramètres)

prédictions = np.argmax (A_last, axe = 0)

prévisions de retour

Rédigé par caméra

Exécutez le programme python Dig-Rec.py

python Dig-Rec.py

Pour afficher le code d'entrée via la caméra

Exécutez le programme python Digit-Recognizer.py

python Digit-Recognizer.py

Devanagiri Recognizer

akshaybahadur21 / Devanagiri-Recognizer

Devanagiri-Recognizer - utilisation convnetgithub.com classificateur alphabet hindi

Ce code peut vous aider à utiliser Convnets à classer les différents alphabet hindi (Devanagiri).

https://github.com/akshaybahadur21/Devanagiri-Recognizer

Vous pouvez installer Conda comme Python, il peut fournir une compilation de toutes les bibliothèques Python environnement pertinents et connexes pour vous.

Utilisation de la technologie

Je convolution réseau de neurones, tensorflow Keras cadre de l'API, ainsi que de fournir de haut niveau d'abstraction.

structure

couche de cellules de la couche de convolution convolutif couche de cellules de la couche couche entièrement connecté la couche de classification de régression Softmax

Autres points à noter:

  • Vous pouvez également ajouter la couche de convolution.

  • régularisation Augmenter éviter surajustement.

  • Augmenter le nombre d'images pour améliorer la précision.

  • la mise en uvre Python

    Toutes les tailles d'image DHCD (Devnagari caractères du jeu de données) * ensemble de données 32 et 32 sont utilisés à la fois pour le réseau neuronal convolutif.

    Exécutez le programme python Dev-Rec.py

    python Dev-Rec.py

    4. Utilisez une reconnaissance faciale FaceNet

    akshaybahadur21 / reconnaissance faciale utilisant-FaceNet

    https://github.com/akshaybahadur21/Facial-Recognition-using-Facenet

    Ce programme utilise le réseau facenet pour vous aider à faire la reconnaissance faciale (https://arxiv.org/pdf/1503.03832.pdf). Idée Facenets a été proposée dans le document de recherche. Les principaux concepts ont discuté d'une triple perte de fonction de comparer les différentes images de personnes. Ce concept est utilisé réseau de lancement, à partir du fichier frutils.py communautaire DeepingLearning.ai. Dans mon réseau que j'ai ajouté quelques fonctions pour améliorer la stabilité et une meilleure détection.

    La bibliothèque de code nécessaire

    Vous pouvez installer Python Conda, il peut fournir une compilation de toutes les bibliothèques Python environnement pertinents et connexes pour vous, vous pourriez avoir besoin les bibliothèques suivantes:

    • numpy

    • matplotlib

    • CV2

    • keras

    • Dlib

    • h5py

    • scipy

    description

    système de reconnaissance faciale est en mesure d'identifier ou de vérifier le visage de la personne technique à partir d'une image numérique ou vidéo. La construction du système de reconnaissance faciale où il existe de nombreuses façons, mais en général, ils se caractérisent en comparant les données d'image du visage et l'ensemble des fonctions sélectionnées à déterminer.

    Ajout d'une fonctionnalité

    • Seulement lorsque vous ouvrez vos yeux est de détecter le visage.

    • Bibliothèque en utilisant la fonction d'alignement de face Dlib efficace pour prédire en temps réel streaming media.

    la mise en uvre Python

    • Utilisation du réseau de lancement de la construction du réseau

    • papier Source de Google-Facenet

    programme

  • Si vous voulez former le réseau, exécutez Train-inception.py, si vous ne voulez pas former le réseau, parce que j'avais été la formation d'un bon réseau, vous pouvez télécharger le fichier sur votre course local face rec_Google.h5.

  • Maintenant que vous avez un ensemble de données, qui contient beaucoup d'images. Cliquez sur le fichier / images pour plier ces images. Vous pouvez coller l'image dans ici, vous pouvez également utiliser la webcam de cliquer. Vous pouvez exécuter le fichier create-face.py pour ce faire, les images sont stockées dans le dossier / incept dans. Vous devez coller manuellement dans le dossier / dossier images.

  • Exécutez le rec-feat.py du programme mis en uvre toutes les fonctions.

  • 5. Emojinator

    akshaybahadur21 / Emojinator

    Emojinator - sur Github un classificateur d'expression simple.

    https://github.com/akshaybahadur21/Emojinator

    Ces codes peuvent vous aider à distinguer entre les différentes expressions. Jusqu'à présent, nous soutenons que l'expression de la main.

    Les smileys sont des symboles idéogramme et souriant de l'information électronique et l'utilisation du Web. Émoticônes existent dans différents types, y compris les expressions du visage, des objets communs, les lieux et les types de conditions météorologiques et les animaux. Ils aiment émoticônes, mais émoticônes sont l'image réelle, plutôt que l'image d'impression.

    fonction

  • Main détectée par le filtre.

  • CNN utiliser pour former le modèle.

  • la mise en uvre Python

    L'utilisation d'un réseau de neurones convolution

    processus

  • Tout d'abord, vous devez signer une image de la base de données, vous pouvez exécuter le fichier pour obtenir CreateGest.py. Entrez le nom d'un geste, vous pouvez voir deux images. Pousse dans le « C » Regardez le cadre de profil et d'ajuster vos mains pour vous assurer que vous capturez les caractéristiques de votre main. Un geste peut tirer des photos 1200. Essayez de déplacer vos mains dans le cadre, afin d'assurer que votre modèle ne correspond pas sur eux dans le processus de formation.

  • Répétez les étapes ci-dessus pour vous assurer que vous obtenez toutes les fonctionnalités que vous voulez.

  • CreateCSV.py exécuter le programme pour convertir l'image dans un fichier CSV.

  • Si vous voulez former le modèle, puis exécutez le programme « TrainEmojinator.py »

  • Enfin, exécutez le programme Emojinator.py, tester votre modèle par des caméras

  • auteur

    Akshay Bahadur et Raghav Patnecha.

    épilogue

    Je peux seulement dire que je me sens incroyable sur ces projets, tout le monde peut les exécuter sur un ordinateur, ou les exécuter sur la plate-forme profonde Cognition, si vous ne voulez pas installer quoi que ce soit, il peut être exécuté en ligne.

    Je tiens à remercier Akshay et ses amis à contribuer à l'avenir, ainsi que toutes les autres contributions à l'open source. Essayez de les exécuter, et laissez-vous inspirer. Ceci est juste un petit exemple de DL et CV peut faire des choses étonnantes, selon la façon dont vous le transformer en un lieu qui peut aider le monde aille mieux.

    Ne renoncez jamais, nous avons besoin de tout le monde intéressé à beaucoup de choses différentes. Je pense que nous pouvons améliorer le monde, améliorer notre vie, le travail de façon que nous, de penser et de résoudre des problèmes, si nous orientons toutes les ressources sont maintenant faire ces domaines de travail de connaissances pour obtenir des avantages plus importants, nous pouvons dans le monde et notre ont un impact positif énorme sur la vie.

    Nous avons besoin de plus de gens sont intéressés, plus de cours, plus professionnels, plus enthousiastes. Nous avons besoin de vous :)

    Merci de lire ceci, je l'espère, vous trouverez ici est plus intéressant :)

    Si vous avez des questions, s'il vous plaît me contacter sur Twitter et LinkedIn:

    • gazouillement

      Favio Vázquez (@FavioVaz)

    • LinkedIn:

      Favio Vázquez - Scientifique principal de données - OXXO | LinkedIn

    Dans les pays étrangers, en violation des lois de la circulation, comment payer le billet après son retour?
    Précédent
    X Nubian étoile double écran version Edition Collector interactive 5299 yuans
    Prochain
    processeur Millet, mais rien à voir avec l'auto-développé
    Remodeler les années 1980 classiques, UNIQLO UT x série de collaboration TOMMY GUERRERO à être en vente
    Ligue aussi simple Cambiasso comment faire? Essayez ces restrictions héroïques barre de Cambiasso
    Meizu Pro7 écran peint est petit écran, téléphone mobile à double écran avant et après les grèves!
    T700 ZHONGTAI intérieur couleur unie exposition Figure image Volvo
    Interview Blue Harbor Hao Xiaowei: haut-parleurs principaux de qualité sont insipide cheval ou noir
    examen général partie théorique « l'information du personnel de maintenance des terminaux de réseau de communication » à la validation complète à Pékin
    connaissance froide Andy Shu que l'auto-développement de CPU de téléphone mobile national, la recherche et le développement indépendant qui vraiment?
    Cette paire de la nouvelle marque de Crazy Explosive2017 Primeknit si champ beaucoup plus de gaz, vous aider à surfer sur le stade!
    « Spider-Man: univers parallèle » jeté un grand fan de Londres débuts jouer appel sur le terrain
    Nokia 8 ou atterrissage en Chine le mois prochain, et comment par rapport à la vedette nationale?
    AI La route de la puce de Microsoft, en fait, sont allés sept ou huit ans