机器学习的主要流程就是神经网络架构,由神经元组成,神经元通过神经元公式
f(sum(x * w ) + b) 输入特征 乘以 输入权重 求和 加上 偏差 再过一下激活函数最后就会出现一个结果。
第一原则:输入的特征 和 预测结果存在因果关系, 没有因果关系就是脏数据会影响机器学习
的预测结果。
神经元公式:f(sum(x * w ) + b)
假设结果为10 数据可能为 特征 x = 2 权重 w = 4 偏差 b=2 算出结果为 10。
x : 特征
特征的选取:
机器学习最关键的是特征的提取。 比如我要识别螃蟹,就不能以颜色作为螃蟹的特征,
因为在于螃蟹不是只有一种颜色。不能想训练什么就无脑的往里面灌数据,神经元公式有一个最最
大的前提就是 。 参数和特征必须有因果关系。我以颜色作为螃蟹的特征,进行识别所有的螃蟹
都是红色的,这显然是不对的,所以这两个没有因果关系。比如我可以把特征改为,八条腿或者横着走。然后得出结论所有的螃蟹都有八条腿,这显然是存在因果关系的。最忌讳的是特征提取不明显,就不停的给他传,这样会严重影响他的判断,出现脏数据。
w: 权重
所有的特征都不是平行关系,都有优先级。 比如我要识别螃蟹 特征1 是八条腿
特征2 是横着走 。 两者相比横着走大权重值更的一些,因为蜘蛛、章鱼、等一些生物都是八条腿。
如果把八条腿设为权重最高,那他可能识别蜘蛛的时候,把螃蟹也识别出来。说白了他就是根据
特征的占比设置出一个权重值。 w越高代表权重越高。
w是通过模型训练得到的,即使某些特征在人类看来非常重要,但可能对模型预测结果的贡献并不大。
b : 偏差
一个可学习的参数,它可以调整模型的偏置,从而更好地拟合数据。
f: 激活函数不仅是把线性死的数据做成非线性活的数据,让他贴合现实 还是为了引入非线性因素,增强模型的表达能力,提高模型的准确性。
把以上这些神经元贴合在一起进行计算就是一个神经网络架构,做深度学习,做强化学习,是可以的
# # 提取视频图片 import os import re import numpy as np # 导入numpy库 import cv2 # import cv2 # 导入cv2库,用于图像处理 # 定义检查图片函数 def check_img(img, target): # 读取需要检测的图片和参照图片 video_img = cv2.imread(img) # 读取需要检测的图片 target_img = cv2.imread(target) # 读取参照图片 # 获取参照物的尺寸 h, w = target_img.shape[:2] # 获取参照物的高度和宽度 # 匹配模板 res = cv2.matchTemplate(video_img, target_img, cv2.TM_CCOEFF_NORMED) # 对需要检测的图片进行模板匹配 print(res) # 设置匹配相似度阈值 threshold = 0.5 # 设定匹配相似度阈值 # 计算匹配位置 loc = np.where(res >= threshold) # 找到符合条件的匹配位置 # 标记匹配位置 for pt in zip(*loc[::-1]): # 遍历每个匹配位置 cv2.rectangle(video_img, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2) # 在需要检测的图片上标记匹配位置 # 展示结果 cv2.imshow("result", video_img) # 将结果展示出来 cv2.waitKey(0) # 等待用户按键0000
他只是做了一个简单的比对,用numpy这个库把图片做为多维向量然后去比对数据。
可以识别,但是功能上不太好,OpenCV存在线性问题。
假设你喜欢黑色的衣服,我就给你推荐所有的黑色的东西,黑色的房子、黑色的书。
比如我给他一张红色螃蟹: 他只能给我识别一个红色螃蟹,并且螃蟹必须是这个样的。
也就是单维度看待问题比较单一。 所以我们要解决线性问题,机器学习可以解决线性问题,
就是把线性问题改成非线性问题, 把单维度换成多维度问题。
什么叫多维度: 就是你给他的特征太单一所以返回单一的结果,在OpenCV智能识别中我们就给他
了一个原始诊图,所以他就只能根据原始诊图来进行识别。
我们应该怎么改进?
因为他一切的结果都取决于你给他的这个特征
假设我们要识别各式各样的螃蟹 , 那我就应该给他提供一定数量的螃蟹特征,然后走模型。(模型训练,引出模型)
训练模型的概念:你给他具体的特征,他去学习,学完以后他把学习结果保存。
保存的那东西就叫模型,以后再去识别他就不需要在走神经元公式了,直接走模型,
模型通过学习成果直接返回预测结果。比如我们要识别螃蟹,但是电脑并不知道什么是螃蟹,他需要将结果和
标签做匹配,人才知道他预测的是什么东西。我们就需要使用深度学习框架了。(引出深度学习)