[AI教程]TensorFlow入门:使用卷积网络模型实现手势识别

深度学习实例一——手势数字识别(tensorflow&pytorch) 这是吴恩达老师深度学习工程师(网上有资源,大家可以去看看吴老师的课程,还是很有收获。),第二次课第三周的课后实例作业,可以作为初学者练手的好项目。原项目是tensorflow写的,我又用pytorch写了一遍。数据文件和完整代码都传到github上了。详情见:https://github.com/idotc/Gesture-digit-recognition 一、Problem statement... 阅读详情

介绍

本文介绍了搭建简单的卷积网络模型进行手势数字识别
数据集:https://github.com/stormstone/deeplearning.ai/tree/c38b8ea7cc7fef5caf88be6e06f4e3452690fde7
工具:TensorFlow 1.9.0 + Python 3.6.3

1.相关包导入

// An highlighted block
import math
import numpy as np
import h5py
import matplotlib.pyplot as plt
import scipy
from PIL import Image
from scipy import ndimage
import tensorflow as tf
from tensorflow.python.framework import ops
from cnn_utils import *
%matplotlib inline
np.random.seed(1)

2.数据准备

本实验使用SIGNS数据集是6个符号的集合,表示从0到5的数字。
训练集:1080个图像(64乘64像素)的符号表示从0到5的数字(每个数字180个图像)。
测试集:120张图片(64乘64像素)的符号,表示从0到5的数字(每个数字20张图片)。

2.1数据实例

下面将显示数据集中标记图像的示例。 随意更改下面的index的值,然后重新运行以查看不同的示例。

index = 6
plt.imshow(X_train_orig[index])
print ("y = " + str(np.squeeze(Y_train_orig[:, index])))

y = 2
在这里插入图片描述

2.2数据检查

X_train = X_train_orig/255.
X_test = X_test_orig/255.
Y_train = convert_to_one_hot(Y_train_orig, 6).T
Y_test = convert_to_one_hot(Y_test_orig, 6).T
print ("number of training examples = " + str(X_train.shape[0]))
print ("number of test examples = " + str(X_test.shape[0]))
print ("X_train shape: " + str(X_train.shape))
print ("Y_train shape: " + str(Y_train.shape))
print ("X_test shape: " + str(X_test.shape))
print ("Y_test shape: " + str(Y_test.shape))
conv_layers = {}

运行结果:
number of training examples = 1080
number of test examples = 120
X_train shape: (1080, 64, 64, 3)
Y_train shape: (1080, 6)
X_test shape: (120, 64, 64, 3)
Y_test shape: (120, 6)

3.参数初始化

# GRADED FUNCTION: initialize_parameters

def initialize_parameters():
    """
    Initializes weight parameters to build a neural network with tensorflow. The shapes are:
                        W1 : [4, 4, 3, 8]
                        W2 : [2, 2, 8, 16]
    Returns:
    parameters -- a dictionary of tensors containing W1, W2
    """
    
    tf.set_random_seed(1)                              # so that your "random" numbers match ours
        
    ### START CODE HERE ### (approx. 2 lines of code)
    W1 = tf.get_variable("W1", [4,4,3,8], initializer = tf.contrib.layers.xavier_initializer(seed = 0))
    W2 = tf.get_variable("W2", [2,2,8,16], initializer = tf.contrib.layers.xavier_initializer(seed = 0))
    ### END CODE HERE ###

    parameters = {"W1": W1,
                  "W2": W2}
    
    return parameters
tf.reset_default_graph()
with tf.Session() as sess_test:
    parameters = initialize_parameters()
    init = tf.global_variables_initializer()
    sess_test.run(init)
    print("W1 = " + str(parameters["W1"].eval()[1,1,1]))
    print("W2 = " + str(parameters["W2"].eval()[1,1,1]))

运行结果:
W1 = [ 0.00131723 0.1417614 -0.04434952 0.09197326 0.14984085 -0.03514394
-0.06847463 0.05245192]
W2 = [-0.08566415 0.17750949 0.11974221 0.16773748 -0.0830943 -0.08058
-0.00577033 -0.14643836 0.24162132 -0.05857408 -0.19055021 0.1345228
-0.22779644 -0.1601823 -0.16117483 -0.10286498]

4.前向传播

在TensorFlow中,有内置函数可以执行卷积步骤。

  • tf.nn.conv2d(X,W1, strides = [1,s,s,1], padding = ‘SAME’): 给定一个输入?和一组滤波器?1,第三个输入([1,f,f,1])表示过滤器在每个维度移动的步长,SAME表示0填充。
  • tf.nn.max_pool(A, ksize = [1,f,f,1], strides = [1,s,s,1], padding = ‘SAME’): 给定输入A,此函数使用大小为(f,f)的窗口和大小(s,s)的跨度来在每个窗口上执行最大池化。
  • tf.nn.relu(Z1): 激活函数,可以是任意维度的。
  • tf.contrib.layers.flatten§:给定输入P,此函数将每个示例展平为一维向量,同时保持batch-size大小。 它返回一个形状为[batch_size,k]的张量。
  • tf.contrib.layers.fully_connected(F, num_outputs): 给定输入F,它返回使用全连接层计算的输出。
    我们将按照CONV2D -> RELU -> MAXPOOL -> CONV2D -> RELU -> MAXPOOL -> FLATTEN -> FULLYCONNECTED的顺序实现前向传播功能。
# GRADED FUNCTION: forward_propagation

def forward_propagation(X, parameters):
    """
    Implements the forward propagation for the model:
    CONV2D -> RELU -> MAXPOOL -> CONV2D -> RELU -> MAXPOOL -> FLATTEN -> FULLYCONNECTED
    
    Arguments:
    X -- input dataset placeholder, of shape (input size, number of examples)
    parameters -- python dictionary containing your parameters "W1", "W2"
                  the shapes are given in initialize_parameters

    Returns:
    Z3 -- the output of the last LINEAR unit
    """
    
    # Retrieve the parameters from the dictionary "parameters" 
    W1 = parameters['W1']
    W2 = parameters['W2']
    
    ### START CODE HERE ###
    # CONV2D: stride of 1, padding 'SAME'
    Z1 = tf.nn.conv2d(X,W1, strides = [1,1,1,1], padding = 'SAME')
    # RELU
    A1 = tf.nn.relu(Z1)
    # MAXPOOL: window 8x8, sride 8, padding 'SAME'
    P1 = tf.nn.max_pool(A1, ksize = [1,8,8,1], strides = [1,8,8,1], padding = 'SAME')
    # CONV2D: filters W2, stride 1, padding 'SAME'
    Z2 = tf.nn.conv2d(P1,W2, strides = [1,1,1,1], padding = 'SAME')
    # RELU
    A2 = tf.nn.relu(Z2)
    # MAXPOOL: window 4x4, stride 4, padding 'SAME'
    P2 = tf.nn.max_pool(A2, ksize = [1,4,4,1], strides = [1,4,4,1], padding = 'SAME')
    # FLATTEN
    P2 = tf.contrib.layers.flatten(P2)
    # FULLY-CONNECTED without non-linear activation function (not not call softmax).
    # 6 neurons in output layer. Hint: one of the arguments should be "activation_fn=None" 
    Z3 = tf.contrib.layers.fully_connected(P2, 6,activation_fn=None)
    ### END CODE HERE ###

    return Z3
tf.reset_default_graph()

with tf.Session() as sess:
    np.random.seed(1)
    X, Y = create_placeholders(64, 64, 3, 6)
    parameters = initialize_parameters()
    Z3 = forward_propagation(X, parameters)
    init = tf.global_variables_initializer()
    sess.run(init)
    a = sess.run(Z3, {X: np.random.randn(2,64,64,3), Y: np.random.randn(2,6)})
    print("Z3 = " + str(a))

运行结果:
Z3 = [[ 1.4416984 -0.24909666 5.450499 -0.2618962 -0.20669907 1.3654671 ]
[ 1.4070846 -0.02573211 5.08928 -0.48669922 -0.40940708 1.2624859 ]]

5.代价函数

可以调用下面的函数计算损失:

  • tf.nn.softmax_cross_entropy_with_logits(logits = Z3, labels = Y):计算softmax熵损失, 该函数既可以用作softmax激活函数,也可以用来计算产生的损失。
# GRADED FUNCTION: compute_cost 

def compute_cost(Z3, Y):
    """
    Computes the cost
    
    Arguments:
    Z3 -- output of forward propagation (output of the last LINEAR unit), of shape (6, number of examples)
    Y -- "true" labels vector placeholder, same shape as Z3
    
    Returns:
    cost - Tensor of the cost function
    """
    
    ### START CODE HERE ### (1 line of code)
    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = Z3, labels = Y))
    ### END CODE HERE ###
    
    return cost
tf.reset_default_graph()

with tf.Session() as sess:
    np.random.seed(1)
    X, Y = create_placeholders(64, 64, 3, 6)
    parameters = initialize_parameters()
    Z3 = forward_propagation(X, parameters)
    cost = compute_cost(Z3, Y)
    init = tf.global_variables_initializer()
    sess.run(init)
    a = sess.run(cost, {X: np.random.randn(4,64,64,3), Y: np.random.randn(4,6)})
    print("cost = " + str(a))

运行结果:
cost = 4.66487

6.构造模型

# GRADED FUNCTION: model

def model(X_train, Y_train, X_test, Y_test, learning_rate = 0.005,
         num_epochs = 100, minibatch_size = 64, print_cost = True):
   """
   Implements a three-layer ConvNet in Tensorflow:
   CONV2D -> RELU -> MAXPOOL -> CONV2D -> RELU -> MAXPOOL -> FLATTEN -> FULLYCONNECTED
   
   Arguments:
   X_train -- training set, of shape (None, 64, 64, 3)
   Y_train -- test set, of shape (None, n_y = 6)
   X_test -- training set, of shape (None, 64, 64, 3)
   Y_test -- test set, of shape (None, n_y = 6)
   learning_rate -- learning rate of the optimization
   num_epochs -- number of epochs of the optimization loop
   minibatch_size -- size of a minibatch
   print_cost -- True to print the cost every 100 epochs
   
   Returns:
   train_accuracy -- real number, accuracy on the train set (X_train)
   test_accuracy -- real number, testing accuracy on the test set (X_test)
   parameters -- parameters learnt by the model. They can then be used to predict.
   """
   
   ops.reset_default_graph()                         # to be able to rerun the model without overwriting tf variables
   tf.set_random_seed(1)                             # to keep results consistent (tensorflow seed)
   seed = 3                                          # to keep results consistent (numpy seed)
   (m, n_H0, n_W0, n_C0) = X_train.shape             
   n_y = Y_train.shape[1]                            
   costs = []                                        # To keep track of the cost
   
   # Create Placeholders of the correct shape
   ### START CODE HERE ### (1 line)
   X, Y = create_placeholders(n_H0, n_W0, n_C0, n_y)
   ### END CODE HERE ###

   # Initialize parameters
   ### START CODE HERE ### (1 line)
   parameters = initialize_parameters()
   ### END CODE HERE ###
   
   # Forward propagation: Build the forward propagation in the tensorflow graph
   ### START CODE HERE ### (1 line)
   Z3 = forward_propagation(X, parameters)
   ### END CODE HERE ###
   
   # Cost function: Add cost function to tensorflow graph
   ### START CODE HERE ### (1 line)
   cost = compute_cost(Z3, Y)
   ### END CODE HERE ###
   
   # Backpropagation: Define the tensorflow optimizer. Use an AdamOptimizer that minimizes the cost.
   ### START CODE HERE ### (1 line)
   optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)
   ### END CODE HERE ###
   
   # Initialize all the variables globally
   init = tf.global_variables_initializer()
    
   # Start the session to compute the tensorflow graph
   with tf.Session() as sess:
       
       # Run the initialization
       sess.run(init)
       
       # Do the training loop
       for epoch in range(num_epochs):

           minibatch_cost = 0.
           num_minibatches = int(m / minibatch_size) # number of minibatches of size minibatch_size in the train set
           seed = seed + 1
           minibatches = random_mini_batches(X_train, Y_train, minibatch_size, seed)

           for minibatch in minibatches:

               # Select a minibatch
               (minibatch_X, minibatch_Y) = minibatch
               # IMPORTANT: The line that runs the graph on a minibatch.
               # Run the session to execute the optimizer and the cost, the feedict should contain a minibatch for (X,Y).
               ### START CODE HERE ### (1 line)
               _ , temp_cost = sess.run([optimizer, cost],feed_dict = {X:minibatch_X,Y:minibatch_Y})
               ### END CODE HERE ###
               
               minibatch_cost += temp_cost / num_minibatches
               

           # Print the cost every epoch
           if print_cost == True and epoch % 5 == 0:
               print ("Cost after epoch %i: %f" % (epoch, minibatch_cost))
           if print_cost == True and epoch % 1 == 0:
               costs.append(minibatch_cost)
       
       
       # plot the cost
       plt.plot(np.squeeze(costs))
       plt.ylabel('cost')
       plt.xlabel('iterations (per tens)')
       plt.title("Learning rate =" + str(learning_rate))
       plt.show()

       # Calculate the correct predictions
       predict_op = tf.argmax(Z3, 1)
       correct_prediction = tf.equal(predict_op, tf.argmax(Y, 1))
       
       # Calculate accuracy on the test set
       accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
       print(accuracy)
       train_accuracy = accuracy.eval({X: X_train, Y: Y_train})
       test_accuracy = accuracy.eval({X: X_test, Y: Y_test})
       print("Train Accuracy:", train_accuracy)
       print("Test Accuracy:", test_accuracy)
               
       return train_accuracy, test_accuracy, parameters
_, _, parameters = model(X_train, Y_train, X_test, Y_test)

运行结果:
Cost after epoch 0: 1.921332
Cost after epoch 5: 1.904156
Cost after epoch 10: 1.904309
Cost after epoch 15: 1.904477
Cost after epoch 20: 1.901876
Cost after epoch 25: 1.784078
Cost after epoch 30: 1.681051
Cost after epoch 35: 1.618207
Cost after epoch 40: 1.597971
Cost after epoch 45: 1.566707
Cost after epoch 50: 1.554487
Cost after epoch 55: 1.502188
Cost after epoch 60: 1.461036
Cost after epoch 65: 1.304479
Cost after epoch 70: 1.201502
Cost after epoch 75: 1.144233
Cost after epoch 80: 1.096785
Cost after epoch 85: 1.081992
Cost after epoch 90: 1.054077
Cost after epoch 95: 1.025999
在这里插入图片描述
本文内容编辑:陈鑫

手势识别模型 1.方案整理 方案1:服务端做手势识别 方案流程:服务端做手势识别和图片的预处理,客户端做手势检测,拿到手势图片,调用服务端的http接口,获得手势的识别结果 优点:服务端做手势识别,交互简单,有更好的风险控制,方便模型升级。 缺点:客户端调用服务端的手势接口,因为有网络传输,可能会有手势识别延迟的问题。网络延迟80ms 平均消耗时长:0.045927691459655764 没有cdn 图像下载时间 流程图如下: 方案2:客户端做手势识别 方案流程:服务端做模型训练,客户端... 阅读详情

相关推荐

卫星测试科普(三):卫星载荷的核心测试设备探秘

总的说来,卫星芯片与元器件,部组件与单机,整机与子系统,系统与整星的设计、定型、制造、验证、总装、发射、在轨等环节都离不开各种测试场景,对于这些卫星测试场景而言,“射频三大件”与高速数字示波器是构成强大测试系统的基础。卫星通信信号生成:覆盖Ka、Q等波段,具备扫频、脉冲、数字调制、噪声信号、雷达信号、数据链信号、OFDM 等多种信号库,用于测试和验证卫星电子设备的电气性能、频率响应、抗干扰能力等。卫星的通信需要高效、快速地传输大量数据,高速信号的质量至关重要,如果卫星信号不佳,卫星就会出现故障或者隐患。

spwbjss的博客 2317

吴恩达作业(5)CNN神经网络(tensorflow实现)--手势识别

作业记录

GuoShao_的博客 1621

存内计算路线再获加持,清华存内芯片登Science

通过这种方法,可以比较有效的控制二氧化铪忆阻层中的微观变化,以及内部的温度和电场,使得器件具有非常优异的电学特性,而且可以在工厂里大规模生产,推动了高性能忆阻器阵列的诞生。团队搭建了全硬件构成的完整存算一体系统,如下图7所示,在系统里集成了多个忆阻器阵列,并在该系统上高效运行了卷积神经网络算法,成功验证了图像识别功能,证明了存算一体架构全硬件实现的可行性,并且成功实现了以更小的功耗和更低的硬件成本完成复杂的计算[6]。根据测试,在一般神经网络中权重更新的最后阶段,调整步长非常接近0,如图9(C)所示,

PXX12345678的博客 1555

深度神经网络学习 :使用tensorflow2.1识别手势0-5

标题1.前言2.训练过程2.1 准备数据2.2 1.前言 该项目是吴恩达深度学习第二课的课后作业,数据来源百度网盘,提取码:dvrc,请在开始之前下载好所需资料,本文参考自百度网盘,由于是第一次训练神经网络,不足之处恳请大家指出。 2.训练过程 2.1 准备数据 下载数据集和读取数据的代码后,先对代码进行处理。 首先将读入数据和、分为训练集和测试集,随后可以选择是否打乱数据集。 由于数据是64*64的图片,训练集1080张,测试集120张,这里我们将训练集X和测试集X分别拉伸为(12288,1080)和(1

qq_43601378的博客 1720

Ghost备份还原Win10全攻略:从老电脑迁移到新硬盘,ESP分区处理是关键

本文详细介绍了使用Ghost工具将Win10系统从旧电脑迁移到新硬盘的全过程,特别强调了ESP分区的关键处理方法。通过分步指导备份、分区准备、系统还原和引导修复,帮助用户实现无缝系统迁移,解决常见问题如启动失败和驱动兼容性。

weixin_30823001的博客 672

Android WLAN STA/AP 并发

Android 9 引入了可让设备同时在 STA 和 AP 模式下运行的功能。对于支持双频并发 (DBS) 的设备,此功能让一些新功能得以实现,例如在用户想要启用热点 (softAP) 时不会中断 STA WLAN。

华南烹鱼宴 1247

[AI教程]TensorFlow入门:手势数字识别

实验说明 本实验为吴恩达课后编程作业第二课第三周内容,通过引导我们将完成一个深度学习框架,使我们可以更轻松地构建神经网络。编程框架不仅可以缩短编码时间,而且有时还可以执行加速代码的优化。 数据集下载地址:[https://github.com/stormstone/deeplearning.ai/tree/c38b8ea7cc7fef5caf88be6e06f4e3452690fde7] 工具:J...

DoctorCuiLab的博客 3743

自定义控件三部曲视图篇(六)——RecyclerView系列之三自定义LayoutManager

前言:把握生命里的每一分钟,全力以赴我们心中的梦,不经历风雨 怎么见彩虹,没有人能随随便便成功 在第一篇中已经讲过,LayoutManager主要用于布局其中的Item,在LayoutManager中能够对每个Item的大小,位置进行更改,将它放在我们想要的位置,在很多优秀的效果中,都是通过自定义LayoutManager来实现的,比如: 可以看到这些效果都非常棒,通过这一节的学习,大...

启舰 1万+

使用TensorFlow进行手势识别

A TensorFlow gesture detector (waving, fist pumping, running, random motion) for the Atltvhead project and exploration into data science. 用于Atltvhead项目的TensorFlow手势检测器(挥手,拳头抽气,跑步,随机运动)和数据科学探索。 While ...

weixin_26752765的博客 3282

一图文带您认识磁编码器

磁编码器是以磁电原理技术生产的编码器。 磁编码器工作原理: 当电流通过一个位于磁场中的导体的时候,磁场会对导体中的电子产生一个垂直于电子运动方向上的的作用力,从而在垂直于导体与磁感线的方向上产生电势差。 如果让施加在这个导体上的磁场以电流流经路径为轴线,按照上图箭头所示的方向旋转,那么这个霍尔电势差就会因为磁场与导体之间角度的改变而发生变化,而这个电势差的变化趋势,与之前一文中次级线圈旋转时的输出电压一样,是一条正弦曲线。因此,基于这个通电导体两侧的电压,就可以反推计算出磁场旋转的角度了。 .

encoder_yang的博客 2万+

软考高级-系统架构设计师 论文范文参考(一)

系统架构设计师 论文参考

片言可决讼,半纸能缚龙 4339

TensorFlow实现:卷积神经网络识别手势动作(有代码与演示)

完整代码见我的GitHub地址:https://github.com/xingjianzhang1997/gesture-recognition 主要思路:1.构建数据集 2.建立神经网络 3.训练并调参 4.保存并调用 另外我还加了界面设计和机械臂控制(通过串口通信把判断结果发给单片机,所以代码中有serial模块) 效果演示: ...

Amigo_1997的博客 3万+

车企自动泊车技术全解|纯视觉/多传感器融合双路线、端到端大模型革新 助力机械车位/无划线车位/极窄车位精准泊车落地

随着智能驾驶技术全面下沉,自动泊车已从高端车型专属配置,普及至十万级家用车型,成为车载核心刚需功能。但市面主流车企的泊车能力差距极大,核心差异源于传感器硬件架构、算法迭代逻辑、场景训练体系的全方位分化。传统规则式泊车算法仅适配标准划线车位,面对地库暗光、标线磨损、机械双层车位、极窄靠墙车位、无划线空地泊车等真实长尾场景极易失效。

getusushu的博客 105

卷积神经网络实现手势图像的识别

零、数据集及工具 传送门 数据集用的是搭建DNN时使用的手势识别图像。 提取码:pcoi 一、原理和框架 这篇文章的卷积网络模型基于LeNet-5,也就是 input→conv1→relu→maxpool1→conv2→relu→maxpool2→fc3→fc4→output(softmax)input\to conv1\to relu\to maxpool1\to conv2\to relu\to maxpool2\to fc3\to fc4\to output(softmax)input→conv1→r

我的技术栈碎碎念空间 6570

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

TensorFlow入门使用卷积网络模型实现手势识别:开启深度学习之旅

TensorFlow入门使用卷积网络模型实现手势识别:开启深度学习之旅 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 TensorFlow入门:使用卷积网络模型实现手势识别,这是一个为TensorFlow初学者量身定制的开源项目。它通过构建一个3层卷积神经网络(CNN),让你能够亲自体验并理解如何实现手势识别这一深度学习任务。项目不仅提供了详尽的步骤引导,还涉及了环境...

gitblog_06776的博客 385

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

卷积神经网络初探(四)用tensorflow搭建卷积模型

以识别手语数字为例,创建卷积网络模型 导入相应模块 import math import numpy as np import h5py import matplotlib.pyplot as plt import scipy from PIL import Image from scipy import ndimage import tensorflow as tf from tensorflo...

He_YI的博客 489

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

使用Tensorflow实现残差网络ResNet-50

这篇文章讲解的是使用Tensorflow实现残差网络resnet-50. 侧重点不在于理论部分,而是在于代码实现部分。在github上面已经有其他的开源实现,如果希望直接使用代码运行自己的数据,不建议使用本人的代码。但是如果希望学习resnet的代码实现思路,那么阅读本文将是一个不错的选择,因为本文的代码的思路是很清晰的。如果你刚刚阅读完resnet的那篇论文,非常建议你进一步学习如何使用代码实现

ChainingBlocks 5万+

深度学习——卷积神经网络在tensorflow框架下的应用案例

一、简单的卷积神经网络的小应用 tensorflow框架下构建训练一个简单的3层卷积神经网络实现分类问题 (一)数据集介绍——SIGNS Datasets 教电脑破译手语,在白色的墙壁前拍照,得到以下数据集。 现在的任务是建立一个算法,使有语音障碍的人与不懂手语的人交流。 训练集:1080张图片,每张图片大小为:64*64*3,表示数字0至5,每个数字的图片为180张

loveliuzz的博客 9806

【深度学习:进阶篇】--3.3.迁移学习+CNN实战代码

本文介绍了迁移学习和卷积神经网络(CNN)在手势识别中的应用。迁移学习通过微调预训练模型(如ImageNet)来解决目标领域数据不足的问题,具体方法包括冻结部分层参数或调整输出层。在CNN实战部分,构建了一个两层卷积网络(含ReLU激活和最大池化)用于识别0-5的手势数字,数据集包含1080张训练图像和120张测试图像。代码实现了数据加载、网络初始化、前向传播、损失计算和模型训练全过程,使用Adam优化器进行参数优化,最终在测试集上评估准确率。实验结果表明该CNN模型能有效学习手势特征,损失值随训练轮次下降

我是个好人呀,O(∩_∩)O 1150

Pytorch搭建SIGNS数据集训练模型

本文利用pytorch搭建了SIGNS手势识别数据集的神将网络并进行了训练

MarkAssassin的博客 548

dabnn未来路线图:二进制神经网络在移动端的演进方向

在移动AI部署领域,**dabnn二进制神经网络框架**正在引领一场效率革命!作为首个针对移动平台高度优化的二进制神经网络推理框架,dabnn已经在Google Pixel 1上实现了惊人的800%-2400%速度提升。然而,这只是开始。本文将深入探讨dabnn的未来发展路线图,揭示二进制神经网络在移动端演进的关键方向。 ## 🚀 当前成就与核心技术突破 dabnn已经取得了令人瞩目的成就,

gitblog_00808的博客 339

手势识别2:基于YOLOv5的手势识别系统(含手势识别数据集+训练代码)

基于YOLOv5的手势识别系统(含手势识别数据集+训练代码),手势识别,动作识别,手势动作识别,手势数据集

AI吃大瓜的博客 8万+

TensorFlow:卷积神经网络手势识别项目的调参感悟

调参感悟 对于网络的选择,我采用通用的由简入繁的做法(在吴恩达的课程中,他也多次表达了这类思想)。 首先,尝试了简单网络LeNet-5,由于网络的设计原因,对于5分类测试集上的表现非常糟糕(过拟合)。 其次,尝试复杂一些的AlexNet。经过调参和优化环节,最终取得了不错的成绩。 调参的过程无非是解决两个问题,欠拟合和过拟合。因为这个五分类问题的复杂度低,因此自始至终,我们面...

Amigo_1997的博客 4400

【程序与注释】TensorFlow-CNN-手势识别

【程序与注释】TensorFlow-CNN-手势识别。

嵌入式阿齐Archie 3782

基于卷积神经网络的猫狗分类系统,resnet50,alexnet, shufflenet模型【pytorch框架+python】

基于卷积神经网络的猫狗分类系统是在pytorch框架下实现的,这是一个完整的项目,包括代码,数据集,训练好的模型权重,模型训练记录,ui界面和各种模型指标图表等。该项目有两个可选模型:resnet50和mobilenet,两个模型都在项目中;GUI界面由tkinter设计和实现。此项目可在windowns、linux(ubuntu, centos)、mac系统下运行。windows保姆级的pycharm+anaconda搭建python虚拟环境_windows启动python虚拟环境-优快云博客。

lanboAI的博客 1676
上一篇: [AI教程]TensorFlow入门:通过二分类来比较神经网络模型和逻辑回归模型
下一篇: 自然语言处理:重要采样的梯度推导
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值