前言
最近想要了解卷积神经和深度学习,才发现并不是我想象中的简单,也不是我想象中的难.
我想的难是指没有任何思路:
不知道这是个什么玩意,里面的流程是不是很难,我想的简单就是
:也就是用人家的包,全都是用来导包,我只需要知道这个包是怎么用的,从来没想过自己怎么开发出来一个依赖包供别人来使用,我这里说的依赖包就是算法模型…,我现在还不理解卷积神经和深度学习的关系,他们俩又和人工智能有什么关系呢???,可能我理解的比较片面,有过有需要修改的请在下方对我的文章进行批评指正
正文
这一部分就是如何理解
卷积神经
,什么是深度学习
,他们和人工智能
又有什么关系呢?他到底是个什么?我们先来看一下官方的解释,这里解释我是对ChatAI
进行的提问卷积神经网络(Convolutional Neural Network,CNN)是深度学习的一种模型,是一种特殊的神经网络。它具有多层卷积和池化层,可以用于图像分类、目标检测、语音识别、自然语言处理等各种任务。深度学习是一种机器学习算法,可以通过构建深层次的神经网络模型来实现数据的自动提取和特征学习。深度学习已经被广泛应用于计算机视觉、自然语言处理、语音识别等各个领域。 人工智能(Artificial Intelligence,AI)是计算机科学研究中的一个重要分支,旨在通过模拟人类智能行为和思维过程,使计算机具备一定的智能。深度学习是人工智能的一种实现方式,可以通过构建深层次的神经网络模型实现各种人工智能任务,如图像识别、自然语言处理、智能机器人等。 因此,可以将卷积神经网络视为深度学习的一种模型,而深度学习是实现人工智能的一种有效方法。在计算机视觉和自然语言处理等领域,卷积神经网络和深度学习已经成为了非常重要的工具和技术。
看了上面的这段话,也就是说,卷积神经网络就是一个
提供给深度学习的一种选择,我暂且这么理解
,那这个只是他的一种选择,所以是叫模型,因为它可以进行训练,把训练好的情况都给保存下来,那这个过程就是训练,因为识别的过程是很慢的,所以我们需要把识别的结果都给保存下来,那下一次我们就不需要再去识别了,因为结果里已经有了,那直接拿结果就行…因为判断是很慢的特别是特别多的判断时,这个思想是深度学习的思想.
这还没到说卷积神经是什么呢…下面就说卷积神经是什么.卷积神经
上面有提到,
卷积神经
就是一种模型,那这个模型是用来提供给深度学习的一种选择,那么他就是一种算法模型,用来保存你的判断条件的,通过上面很浅显的了解了大多数和卷积神经同一类的计算模型比如循环神经网络
,生成对抗网络
都是这种思想,那我来浅显的说一下卷积神经
是什么样的一个逻辑模型.卷积神经有
卷积层
和池化层
,卷积层我理解就是一种判断层,池化层就是用来做选择缩小的,还有一个激活函数
我理解为达到某些结果就会执行某些函数,还有一个全连接层
,全连接层我理解为数据的输出通过这些可以进行数据的保存到一个地方,那这个过程就叫做训练,那也可以理解为深度学习,深度学习就是一个训练过程.在这整个的卷积神经中,可以无限叠加整个流程也就是卷积,池化,激活,把这些给输出.卷积神经的思路就是通过不断变化的输入,来对输出产生影响,并且这种输出是有一定范围的,就可以判定他是卷积,卷积也有公式,更像是离散和线性代数.
通过上面对卷积神经的描述,大概知道了他只是深度学习的一种选择,别的模型也有别的逻辑,那深度学习也是人工智能实现的一种很好的方式,那就不难理解这些了.
例子(这里别人已经训练好了的模型,我只是拿来用)
下面有我使用了别人已经实现的一种人脸识别的库
mediapipe
,下面是具体代码import cv2 import mediapipe as mp mp_drawing = mp.solutions.drawing_utils mp_hands = mp.solutions.hands # 加载图像 image = cv2.imread('C:\\Users\\Administrator\\Downloads\\123.jpg') # 初始化Hands模型 with mp_hands.Hands( static_image_mode=True, max_num_hands=2, min_detection_confidence=0.5) as hands: # 处理图像,并显示结果 results = hands.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) # 绘制手部识别结果 if results.multi_hand_landmarks: for hand_landmarks in results.multi_hand_landmarks: mp_drawing.draw_landmarks( image, hand_landmarks, mp_hands.HAND_CONNECTIONS) # 检查手心手背 for hand_landmarks in results.multi_hand_landmarks: # 获取第0号手的21个地标点 landmarks = hand_landmarks.landmark if len(landmarks) == 21: # 检查手心手背标志 if landmarks[12].y > landmarks[8].y > landmarks[4].y > landmarks[0].y: print('手心') else: print('手背') # 显示结果 cv2.imshow('MediaPipe Hands', image) cv2.waitKey(0) cv2.destroyAllWindows()
下面是效果图
但是这里日志打印出来的却是手背手背
这可能就是模型的失误
后记
看了上面的东西也就仅仅实现一个手心手背的识别,那我可以拿这个算法模型来做别的事情,比如代码里面判断手心手背的给换成具体的业务逻辑那就可以进行通过手势来操作代码,或者系统.
如果我的博客帮助到了你,你可以关注我的博客
https://blog.csdn.net/weixin_57228276
或者微信公众号搜索幸识SQ
,可以找到我,里面也有更多的优秀文章