`
rensanning
  • 浏览: 3547271 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38123
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607206
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682188
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89278
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401737
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69667
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91670
社区版块
存档分类
最新评论

TensorFlow 之 构建人物识别系统

 
阅读更多
从零构建一个自己的人物识别CNN模型,识别图像里的人是谁。这里以识别SHE的Ella和Selina为例!

只是一个简单的示例,重在理解机器学习的过程,以及机器学习的难点,比如:
- 数据(样本的数量、样本的质量)
- 模型(构成、算法)
- 学习方法(节点初始值、学习率)

机器学习的前提是需要大量的训练样本,但获取一定规模的采样数据并逐个标记并不是那么的容易。大体过程如下:
1-采用爬虫根据指定关键字爬取图像(比如百度、谷歌)
2-根据需求对爬取来的图像做特殊处理(比如通过OpenCV识别并裁剪出人脸)
3-排查并整理图像(筛选图像以及调整图像大小等)
4-整理标记文件
5-编写模型
6-训练数据
7-测试确认

版本
TensorFlow 1.2 + OpenCV 2.5

相关文章:
TensorFlow 之 入门体验
TensorFlow 之 手写数字识别MNIST
TensorFlow 之 物体检测
TensorFlow 之 构建人物识别系统

(1)文件结构

/usr/local/tensorflow/sample/tf-she-image
引用
├ ckpt [checkpoint文件]
├ data [学习结果]
├ eval_images [测试图像]
├ face [OpenCV提取的人脸]
│ ├ ella
│ └ selina
├ original [从百度图片抓取的原始图像]
│ ├ ella
│ └ selina
├ test [完成学习后检验模型精度的图像]
│ ├ data.txt [图像路径及标记]
│ ├ ella
│ └ selina
└ train [训练学习用图像]
  ├ data.txt [图像路径及标记]
  ├ ella
  └ selina


(2)抓取图像

根据关键字从百度图片的搜索结果中抓取图片,Python抓取百度图片网上有很多可以参考的例子,都比较简单。由于要提供给机器作为样本学习,所以要尽可能多的抓取有脸部特征的高质量图像。

/usr/local/tensorflow/sample/tf-she-image/original/ella


/usr/local/tensorflow/sample/tf-she-image/original/selina


(3)提取人脸

作为人脸识别的样本,只需要面部的局部数据即可,所以抓下来的图需要特殊处理一下,通过OpenCV识别出图像中的人脸,提取并保存。

/usr/local/tensorflow/sample/tf-she-image/face/ella


/usr/local/tensorflow/sample/tf-she-image/face/selina


face_detect.py
import cv2
import numpy as np
import os.path

input_data_path = '/usr/local/tensorflow/sample/tf-she-image/original/ella/'
save_path = '/usr/local/tensorflow/sample/tf-she-image/face/ella/'
cascade_path = '/usr/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml'
faceCascade = cv2.CascadeClassifier(cascade_path)

image_count = 16000

face_detect_count = 0

for i in range(image_count):
  if os.path.isfile(input_data_path + str(i) + '.jpg'):
    try:
      img = cv2.imread(input_data_path + str(i) + '.jpg', cv2.IMREAD_COLOR)
      gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
      face = faceCascade.detectMultiScale(gray, 1.1, 3)

      if len(face) > 0:
        for rect in face:
          x = rect[0]
          y = rect[1]
          w = rect[2]
          h = rect[3]

          cv2.imwrite(save_path + 'face-' + str(face_detect_count) + '.jpg', img[y:y+h, x:x+w])
          face_detect_count = face_detect_count + 1
      else:
        print('image' + str(i) + ': No Face')
    except Exception as e:
      print('image' + str(i) + ': Exception - ' + str(e))
  else:
      print('image' + str(i) + ': No File')


(3)整理图像

由于抓到的图质量,以及OpenCV识别率的问题,还需要重新筛选图像,只留下真正有明显面部特征的图像。

/usr/local/tensorflow/sample/tf-she-image/train/ella


/usr/local/tensorflow/sample/tf-she-image/train/selina


这一步是非常费时间的!因为提供的训练样本的质量越高识别就越准确。最终这里提取到ella 380张、selina 350张。所以要特别感谢那些已经开源的数据集的提供者们!

整理图像的labels文件:data.txt
引用
/usr/local/tensorflow/sample/tf-she-image/train/ella/ella-00001.jpg 0
/usr/local/tensorflow/sample/tf-she-image/train/ella/ella-00002.jpg 0
/usr/local/tensorflow/sample/tf-she-image/train/ella/ella-00003.jpg 0
/usr/local/tensorflow/sample/tf-she-image/train/ella/ella-00004.jpg 0
/usr/local/tensorflow/sample/tf-she-image/train/ella/ella-00005.jpg 0
/usr/local/tensorflow/sample/tf-she-image/train/ella/ella-00006.jpg 0
/usr/local/tensorflow/sample/tf-she-image/train/ella/ella-00007.jpg 0
/usr/local/tensorflow/sample/tf-she-image/train/ella/ella-00008.jpg 0
。。。
/usr/local/tensorflow/sample/tf-she-image/train/selina/selina-00344.jpg 1
/usr/local/tensorflow/sample/tf-she-image/train/selina/selina-00345.jpg 1
/usr/local/tensorflow/sample/tf-she-image/train/selina/selina-00346.jpg 1
/usr/local/tensorflow/sample/tf-she-image/train/selina/selina-00347.jpg 1
/usr/local/tensorflow/sample/tf-she-image/train/selina/selina-00348.jpg 1
/usr/local/tensorflow/sample/tf-she-image/train/selina/selina-00349.jpg 1
/usr/local/tensorflow/sample/tf-she-image/train/selina/selina-00350.jpg 1


*** 检验模型精度的图像可以选择和训练一样。

(4)编写模型

train.py
import sys
import cv2
import random
import numpy as np
import tensorflow as tf
import tensorflow.python.platform

NUM_CLASSES = 2

IMAGE_SIZE = 28

IMAGE_PIXELS = IMAGE_SIZE*IMAGE_SIZE*3

flags = tf.app.flags
FLAGS = flags.FLAGS

flags.DEFINE_string('train', '/usr/local/tensorflow/sample/tf-she-image/train/data.txt', 'File name of train data')

flags.DEFINE_string('test', '/usr/local/tensorflow/sample/tf-she-image/test/data.txt', 'File name of test data')

flags.DEFINE_string('train_dir', '/usr/local/tensorflow/sample/tf-she-image/data/', 'Directory to put the training data')

flags.DEFINE_integer('max_steps', 100, 'Number of steps to run trainer.')

flags.DEFINE_integer('batch_size', 20, 'Batch size Must divide evenly into the dataset sizes.')

flags.DEFINE_float('learning_rate', 1e-4, 'Initial learning rate.')

def inference(images_placeholder, keep_prob):
  def weight_variable(shape):
    initial = tf.truncated_normal(shape, stddev=0.1)
    return tf.Variable(initial)

  def bias_variable(shape):
    initial = tf.constant(0.1, shape=shape)
    return tf.Variable(initial)

  def conv2d(x, W):
    return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')

  def max_pool_2x2(x):
    return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],
                          strides=[1, 2, 2, 1], padding='SAME')

  x_image = tf.reshape(images_placeholder, [-1, IMAGE_SIZE, IMAGE_SIZE, 3])

  with tf.name_scope('conv1') as scope:
    W_conv1 = weight_variable([5, 5, 3, 32])

    b_conv1 = bias_variable([32])

    h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)

  with tf.name_scope('pool1') as scope:
    h_pool1 = max_pool_2x2(h_conv1)

  with tf.name_scope('conv2') as scope:
    W_conv2 = weight_variable([5, 5, 32, 64])

    b_conv2 = bias_variable([64])

    h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)

  with tf.name_scope('pool2') as scope:
    h_pool2 = max_pool_2x2(h_conv2)

  with tf.name_scope('fc1') as scope:
    W_fc1 = weight_variable([7*7*64, 1024])
    b_fc1 = bias_variable([1024])
    h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64])

    h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)

    h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)

  with tf.name_scope('fc2') as scope:
    W_fc2 = weight_variable([1024, NUM_CLASSES])
    b_fc2 = bias_variable([NUM_CLASSES])

  with tf.name_scope('softmax') as scope:
    y_conv=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)

  return y_conv

def loss(logits, labels):
  cross_entropy = -tf.reduce_sum(labels*tf.log(logits))

  tf.summary.scalar("cross_entropy", cross_entropy)

  return cross_entropy

def training(loss, learning_rate):
  train_step = tf.train.AdamOptimizer(learning_rate).minimize(loss)
  return train_step

def accuracy(logits, labels):
  correct_prediction = tf.equal(tf.argmax(logits, 1), tf.argmax(labels, 1))

  accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))

  tf.summary.scalar("accuracy", accuracy)
  return accuracy

if __name__ == '__main__':

  f = open(FLAGS.train, 'r')
  train_image = []
  train_label = []

  for line in f:
    line = line.rstrip()
    l = line.split()

    img = cv2.imread(l[0])
    img = cv2.resize(img, (IMAGE_SIZE, IMAGE_SIZE))

    train_image.append(img.flatten().astype(np.float32)/255.0)

    tmp = np.zeros(NUM_CLASSES)
    tmp[int(l[1])] = 1
    train_label.append(tmp)

  train_image = np.asarray(train_image)
  train_label = np.asarray(train_label)
  f.close()

  f = open(FLAGS.test, 'r')
  test_image = []
  test_label = []
  for line in f:
    line = line.rstrip()
    l = line.split()
    img = cv2.imread(l[0])
    img = cv2.resize(img, (IMAGE_SIZE, IMAGE_SIZE))
    test_image.append(img.flatten().astype(np.float32)/255.0)
    tmp = np.zeros(NUM_CLASSES)
    tmp[int(l[1])] = 1
    test_label.append(tmp)
  test_image = np.asarray(test_image)
  test_label = np.asarray(test_label)
  f.close()

  with tf.Graph().as_default():
    images_placeholder = tf.placeholder("float", shape=(None, IMAGE_PIXELS))
    labels_placeholder = tf.placeholder("float", shape=(None, NUM_CLASSES))
    keep_prob = tf.placeholder("float")
    logits = inference(images_placeholder, keep_prob)
    loss_value = loss(logits, labels_placeholder)
    train_op = training(loss_value, FLAGS.learning_rate)
    acc = accuracy(logits, labels_placeholder)

    saver = tf.train.Saver()

    sess = tf.Session()
    sess.run(tf.global_variables_initializer())

    summary_op = tf.summary.merge_all()
    summary_writer = tf.summary.FileWriter(FLAGS.train_dir, sess.graph)

    for step in range(FLAGS.max_steps):
      for i in range(int(len(train_image)/FLAGS.batch_size)):
        batch = FLAGS.batch_size*i

        sess.run(train_op, feed_dict={
          images_placeholder: train_image[batch:batch+FLAGS.batch_size],
          labels_placeholder: train_label[batch:batch+FLAGS.batch_size],
          keep_prob: 0.5})

      train_accuracy = sess.run(acc, feed_dict={
        images_placeholder: train_image,
        labels_placeholder: train_label,
        keep_prob: 1.0})
      print("step %d, training accuracy %g" % (step, train_accuracy))

      summary_str = sess.run(summary_op, feed_dict={
        images_placeholder: train_image,
        labels_placeholder: train_label,
        keep_prob: 1.0})
      summary_writer.add_summary(summary_str, step)

  print("test accuracy %g" % sess.run(acc, feed_dict={
    images_placeholder: test_image,
    labels_placeholder: test_label,
    keep_prob: 1.0}))

  save_path = saver.save(sess, '/usr/local/tensorflow/sample/tf-she-image/ckpt/model.ckpt')


(5)训练数据

accuracy越接近1表示精度越高。
引用
(tensorflow) [root@localhost tf-she-image]# python train.py
step 0, training accuracy 0.479452
step 1, training accuracy 0.479452
step 2, training accuracy 0.480822
step 3, training accuracy 0.505479
step 4, training accuracy 0.531507
step 5, training accuracy 0.609589
step 6, training accuracy 0.630137
step 7, training accuracy 0.639726
step 8, training accuracy 0.732877
step 9, training accuracy 0.713699
。。。。。。
step 89, training accuracy 0.994521
step 90, training accuracy 0.994521
step 91, training accuracy 0.994521
step 92, training accuracy 0.994521
step 93, training accuracy 0.994521
step 94, training accuracy 0.994521
step 95, training accuracy 0.994521
step 96, training accuracy 0.994521
step 97, training accuracy 0.994521
step 98, training accuracy 0.994521
step 99, training accuracy 0.994521
test accuracy 0.994521


执行完成后,/usr/local/tensorflow/sample/tf-she-image/ckpt/ 里会生成以下文件:
引用
model.ckpt.index
model.ckpt.meta
model.ckpt.data-00000-of-00001
checkpoint


(6)查看训练结果

(tensorflow) [root@localhost tf-she-image]# tensorboard --logdir=/usr/local/tensorflow/sample/tf-she-image/data





(7)测试确认

准备四张图像来测试一下是否能够正确识别:

test-ella-01.jpg


test-ella-02.jpg


test-selina-01.jpg


test-selina-02.jpg


确认结果:
(tensorflow) [root@localhost tf-she-image]# python eval.py
/usr/local/tensorflow/sample/tf-she-image/eval_images/test-ella-01.jpg
[{'name': 'ella', 'rate': 85.299999999999997, 'label': 0}, {'name': 'selina', 'rate': 14.699999999999999, 'label': 1}]
/usr/local/tensorflow/sample/tf-she-image/eval_images/test-ella-02.jpg
[{'name': 'ella', 'rate': 99.799999999999997, 'label': 0}, {'name': 'selina', 'rate': 0.20000000000000001, 'label': 1}]
/usr/local/tensorflow/sample/tf-she-image/eval_images/test-selina-01.jpg
[{'name': 'selina', 'rate': 100.0, 'label': 1}, {'name': 'ella', 'rate': 0.0, 'label': 0}]
/usr/local/tensorflow/sample/tf-she-image/eval_images/test-selina-02.jpg
[{'name': 'selina', 'rate': 99.900000000000006, 'label': 1}, {'name': 'ella', 'rate': 0.10000000000000001, 'label': 0}]


可以看到识别率分别是:85.2%、99.7%、100%、99.9%。识别的还不错!

eval.py
import sys
import numpy as np
import cv2
import tensorflow as tf
import os
import random
import train

cascade_path = '/usr/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml'
faceCascade = cv2.CascadeClassifier(cascade_path)

HUMAN_NAMES = {
  0: u"ella",
  1: u"selina"
}

def evaluation(img_path, ckpt_path):
  tf.reset_default_graph()

  f = open(img_path, 'r')
  img = cv2.imread(img_path, cv2.IMREAD_COLOR)

  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  face = faceCascade.detectMultiScale(gray, 1.1, 3)

  if len(face) > 0:
    for rect in face:
      random_str = str(random.random())

      cv2.rectangle(img, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), (0, 0, 255), thickness=2)

      face_detect_img_path = '/usr/local/tensorflow/sample/tf-she-image/eval_images/' + random_str + '.jpg'

      cv2.imwrite(face_detect_img_path, img)
      x = rect[0]
      y = rect[1]
      w = rect[2]
      h = rect[3]

      cv2.imwrite('/usr/local/tensorflow/sample/tf-she-image/eval_images/' + random_str + '.jpg', img[y:y+h, x:x+w])

      target_image_path = '/usr/local/tensorflow/sample/tf-she-image/eval_images/' + random_str + '.jpg'
  else:
    print('image:No Face')
    return
  f.close()
  f = open(target_image_path, 'r')

  image = []
  img = cv2.imread(target_image_path)
  img = cv2.resize(img, (28, 28))

  image.append(img.flatten().astype(np.float32)/255.0)
  image = np.asarray(image)

  logits = train.inference(image, 1.0)

  sess = tf.InteractiveSession()

  saver = tf.train.Saver()

  sess.run(tf.global_variables_initializer())

  if ckpt_path:
    saver.restore(sess, ckpt_path)

  softmax = logits.eval()

  result = softmax[0]

  rates = [round(n * 100.0, 1) for n in result]
  humans = []

  for index, rate in enumerate(rates):
    name = HUMAN_NAMES[index]
    humans.append({
      'label': index,
      'name': name,
      'rate': rate
    })

  rank = sorted(humans, key=lambda x: x['rate'], reverse=True)

  print(img_path)
  print(rank)

  return [rank, os.path.basename(img_path), random_str + '.jpg']

if __name__ == '__main__':
  TEST_IMAGE_PATHS = [ 'test-ella-01.jpg', 'test-ella-02.jpg', 'test-selina-01.jpg', 'test-selina-02.jpg' ]
  for image_path in TEST_IMAGE_PATHS:
    evaluation('/usr/local/tensorflow/sample/tf-she-image/eval_images/'+image_path, '/usr/local/tensorflow/sample/tf-she-image/ckpt/model.ckpt')


参考:
http://qiita.com/neriai/items/bd7bc36ec42c8ef65b2e
  • 大小: 1.1 MB
  • 大小: 1.1 MB
  • 大小: 995.7 KB
  • 大小: 921.4 KB
  • 大小: 1.3 MB
  • 大小: 1.2 MB
  • 大小: 16.3 KB
  • 大小: 117.1 KB
  • 大小: 17.6 KB
  • 大小: 23.5 KB
  • 大小: 41.3 KB
  • 大小: 6.8 KB
1
1
分享到:
评论
4 楼 fexiong 2018-05-11  
博主,能否提供完整源码用于学习?邮箱:2199611997@qq.com,感谢,谢谢
3 楼 xiaoluobo123 2018-01-08  
博主,train.py代码中为什么要测试?直接训练出模型不就行了吗?
2 楼 sierno 2017-12-07  
您好,看完您的文章,看到了一个学习的方向。请问您能不能发一份代码,我想深入学习。请问是否可行。邮箱46928982@qq.com。非常感谢您。
1 楼 Pu丶迷离 2017-10-24  
你好,能不能给我一份你的源码,包括图片处理的所有代码让我学习学习,谢谢了。我刚刚接触tensorflow,想从人脸识别上手,写了。             

相关推荐

    tensorflow 验证码识别程序

    **验证码识别程序基于TensorFlow** 验证码识别是计算机视觉领域中的一个常见任务,它涉及图像处理、模式识别和深度学习技术。在这个项目中,我们将...通过不断迭代和优化,我们可以构建出高效准确的验证码识别系统。

    基于TensorFlow的人脸识别容器云平台框架.pdf

    该框架在IaaS层的服务器虚拟化基础之上,构建了GPU资源池以适应视频节目的大规模并行处理,并在PaaS层以人脸识别为主要着力点,引入TensorFlow、Kubernetes的容器技术实现人脸识别程序在CPU、GPU上并行部署和任务...

    tensorflow2.8猫狗识别案例

    标题“tensorflow2.8猫狗识别案例”是一个关于使用TensorFlow 2.8版本进行图像分类的项目,特别地,是区分猫和狗的类别。这个案例可能涉及到深度学习的基本概念,如卷积神经网络(CNN)以及图像处理技术。 描述中...

    Python-YOLO3动漫人脸识别基于keras和tensorflow

    YOLO(You Only Look Once)是一种实时目标检测系统,它在计算机视觉领域有着广泛的应用,尤其是在实时的人脸识别和动漫人物识别中。YOLOv3是YOLO系列的第三个版本,相较于前两个版本,它在准确性和速度上都有显著...

    基于深度学习的人脸识别考勤系统,具备基础的人脸录入,人脸识别,考勤管理,课堂管理,班级管理,日志管理等功能.zip

    当相似度超过预设阈值时,系统将识别出对应的人物身份。 三、考勤管理 考勤管理功能允许系统自动记录员工或学生的到岗或上课情况。通过摄像头实时捕捉面部,系统能迅速进行人脸识别,完成签到或签退。同时,考勤...

    基于深度学习的人脸识别系统.zip

    2. 模型训练:采用深度学习框架(如TensorFlow、PyTorch等)构建CNN模型,使用预处理的数据集进行训练,优化目标通常为最小化识别错误率。 3. 特征提取:训练好的CNN模型可以作为特征提取器,从新的人脸图像中抽取...

    基于tensorflow的微笑检测

    TensorFlow是一种广泛使用的开源库,由谷歌大脑团队开发,用于构建和训练机器学习模型,特别是深度学习模型。VGGNet(Visual Geometry Group Network)是深度学习领域的一个经典卷积神经网络(CNN)架构,它在2014年...

    人脸检测系统-用于毕设_人传人人脸_人脸识别毕设_人脸识别设计_人脸检测系统_毕设

    在这个“人脸检测系统-用于毕设”项目中,我们关注的重点是构建一个简单但功能齐全的人脸识别系统,适合用作毕业设计。 一、人脸检测 人脸检测是人脸识别的第一步,它涉及到在图像或视频流中找到人脸的位置。常用的...

    tensorflow-使用tensorflow实现人体姿态估计算法.zip

    首先,人体姿态估计算法旨在识别图像或视频中人物的关键关节位置,例如肩、肘、腕、髋、膝和脚踝等。这些信息对于动作识别、运动分析、人机交互等应用至关重要。常见的姿态估计方法包括基于模板匹配、特征点检测和...

    结合OpenCV与TensorFlow进行人脸识别的实现

    在本文中,我们将深入探讨如何结合OpenCV和TensorFlow进行人脸识别。OpenCV是一个强大的计算机视觉库,而TensorFlow则是一个广泛使用的深度学习框架。这两个工具的结合可以创建高效且准确的人脸识别系统。 首先,...

    基于Python的口罩识别系统(包含UI)

    用户只需打开应用程序,系统就能自动检测摄像头前的人物并显示口罩佩戴情况。 综上所述,基于Python的口罩识别系统结合了Python编程、计算机视觉技术以及用户界面设计,为公众提供了一种便捷的口罩佩戴监控工具,有...

    图像识别_detect.zip

    1. **图像识别**:图像识别是让计算机理解并解释图像中的内容,包括物体、人物、文字等。在现代科技中,图像识别广泛应用于自动驾驶、安防监控、医疗诊断、社交媒体等领域。 2. **TensorFlow**:TensorFlow是谷歌...

    tensorflow.example

    4. **构建模型**:接下来,你可以使用Keras构建一个简单的卷积神经网络(CNN)模型。这里提供一个基础示例: ```python model = tf.keras.models.Sequential([ tf.keras.layers.Conv2D(32, (3, 3), activation='...

    Python-人体姿势估计和跟踪的简单基线的TensorFlow实现

    **人体姿势估计** 是计算机视觉中的一个任务,目标是识别和定位图像或视频中人物的关键关节位置,如肩、肘、腕、髋、膝和脚踝等。这通常通过深度学习模型来实现,例如卷积神经网络(CNNs)或者最近的轻量级模型如...

    应用tensorflow编写的一个基于卷积神经网络的表情识别算法,训练及验证的数据集来自于CK数据库.zip

    通过分析和理解这些代码,我们可以深入学习如何使用TensorFlow构建和训练CNN模型,以及如何利用特定数据集进行表情识别。对于有兴趣深入研究深度学习和计算机视觉的人员来说,这是一个有价值的实践案例。

    基于python的图片识别

    通过结合OpenCV、PIL等库,以及深度学习框架如TensorFlow,我们可以构建高效、准确的图像识别系统。在"图片识别.py"中,你可以找到具体的代码实现,进一步了解这些概念和技术如何在实际项目中发挥作用。

    Python基于OpenCV的CNN人脸识别

    9. **实际应用**: 一旦模型训练完成,可以将其部署到实时系统中,进行人脸检测和识别,例如在视频流中实时识别特定人物。 总结起来,Python和OpenCV结合CNN模型提供了一种强大且灵活的方法来实现人脸识别。通过理解...

    程序设计大作业-人脸识别检测器识别视频中人物的性别、年龄,以及人流总数的功能

    在这个程序设计大作业中,我们关注的是人脸识别检测技术在视频分析中的应用,特别是对人物的性别、年龄识别,以及人流总数的统计。这些功能在安全监控、智能零售、人群管理等多个领域具有广泛的实用价值。 首先,...

    深度学习在网络色情图像识别中的研究与应用.pdf

    深度学习模型NSFW通常采用TensorFlow框架构建,基于加权的混合卷积神经网络(CNN)模型来实现。该模型体系结构包括多个CNN模型,每个模型使用相同的结构,并采用最小二乘法来计算每个模型的权重。最终,模型将输入...

    人脸识别,手势识别.zip

    通过这个项目,学习者可以了解如何利用深度学习框架(如TensorFlow或PyTorch)构建这些模型,以及如何处理和预处理图像数据。同时,项目可能还提供了评估指标和可视化工具,帮助用户理解和改进模型性能。 总的来说...

Global site tag (gtag.js) - Google Analytics