IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> hog+SVM -> 正文阅读

[人工智能]hog+SVM

OpenCV+python计算机视觉图像处理_哔哩哔哩_bilibili

目录

HOG(梯度直方图)

应用场景

HOG 基本概念

模块划分

计算模块的梯度和方向,

bin投影,

各个模块的hog如何计算

cell的复用?

svm的判决image

小狮子识别:SVM+HOG

样本

样本准备

hog+SVM 代码


HOG(梯度直方图)

应用场景

主要是将这种方法应用在静态图像中的行人检测上,但在后来,他们也将其应用在电影和视频中的行人检测,以及静态图像中的车辆和常见动物的检测。

HOG描述器最重要的思想是:在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。

首先将图像分成小的连通区域,我们把它叫细胞单元。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。

为了提高性能,我们还可以把这些局部直方图在图像的更大的范围内(我们把它叫区间或block)进行对比度归一化(contrast-normalized),所采用的方法是:

先计算各直方图在这个区间(block)中的密度,然后根据这个密度对区间中的各个细胞单元做归一化。通过这个归一化后,能对光照变化和阴影获得更好的效果。

HOG 基本概念

模块划分

  • win :特征计算最顶层单元,包含一个目标——得到所有描述信息
    • SIZE 大小任意:50*100,20*50,64*128(推荐)
  • block 滑动窗口
    • size: 是win大小的整数倍 16*16
    • step:blcok如何在win下滑动 8*8
    • count:可以滑动多少次 105 水平滑动次数 (64-16)/8+1 * 竖直滑动次数(128-16)/8+1
  • cell 不可滑动
    • size 8*8
    • block中多少个cell = 4 cell1 cell2 cell3 cell4
    • bin :和方向有关(360度按40度划分,9块,9bin)bin1:20度一个连续范围 bin,投影在0-20 180-200,在此夹角内的在一个方向 bin1 和bin2在同一个方向
      • cell中完整包含一个360度的信息,包含9个bin的信息。

计算模块的梯度和方向,

  • 特征维度:向量 几维空间
    • 维度计算:计算单位bin——每个win中有几个block——hog特征用来分类,所以包含win的所有信息。 105 * 4*9 = 3780
  • 梯度——计算单位:像素 【每个像素都有一个梯度(大小,方向angle)】,所有像素组合在一起构成特征。
    • 特征模板:水平【1 0 -1】,竖直【【1】 【0】 【-1】】 与像素进行卷积运算
    • a = 左中右像素* 模板相乘 相邻像素之差
    • b= 上下像素之差
    • 幅值 根号下a方+b方
    • 角度 arctan a/b

bin投影,

  • bin的投影——梯度
    • 某个像素到底在哪个bin范围
    • bin1:20度一个连续范围 bin,投影在0-20 180-200,在此夹角内的在一个方向 bin1 和bin2在同一个方向
    • 对某个像素ij 幅值f角度10°,位于中心位置 投影到了bin1 190°,也投影在bin1上——在当前bin上的投影就是f
    • 如果不在正中间,分解到bin1 bin2上 f1=f*g(夹角) f2= f*(1-f(夹角)) f夹角(0,1.0) 运算量大
      • 优化算法:投影到某区间,就+1

各个模块的hog如何计算

  • 整体的hog特征:3780维(win(block cell bin))
    • bin的计算:
      • 一个block下 cell0 -cell3,将cell0 分成9份bin0-bin8:
        • cell0 bin0-bin8 :[ bin0,bin1,bin2,bin3,bin4,bin5,bin6,bin7]
        • cell1 bin0-bin8
        • cell2 bin0-bin8
        • cell3 bin0-bin8
      • 像素ij :投影在了cell 0 的 bin0上, bin0 的内容 是f0
      • 像素i+1 j:投影在了cell0上的bin0, bin0 的内容是f1
      • 遍历完 bin0 累加 ==》bin0 =(f0+f1,。。。) cell0下所有bin0的值

cell的复用?

  • cell0 bin0-bin8
  • cell1 bin0-bin8
  • cell2 bin0-bin8
  • cell3 bin0-bin8
  • 每个block 分成3组:cellx0 cellx2 cellx4

svm的判决image

判决:SVM——线性分类器——得到3780维度的向量。

hog*svm向量 vs 判决门限 大于判决门限,是目标,小于判决门限,不是目标

小狮子识别:SVM+HOG

样本

正样本pos:需要检测的目标对象均包含在图片中。

特点:尽可能多样(环境多样,干扰多样,光照强弱,角度,是否完整,背景)

负样本neg:不包含所检测的目标

特点:尽可能多样,以及与正样本相似的背景或目标。

统一设置图像大小:64*128——方便计算

样本来源:

1. 网络 2.公司内部 3 自己设计

1.1 网络公司卖样本 1张 1¥

1.2 自己爬取

2.1 公司内部多年积累 新兴行业——eg 红外图像 mobile,eye,ADAS 99%

3.1 万级别——视频方式 100s*30帧 =3000张

hog:一个好的样本胜过一个复杂的神经网络 机器学习(k w) 深度(M)

样本准备

?整体步骤:

1. 视频分解图片

2. 规范图片大小:540*960————》缩放,裁剪——————》64*128

缩放

  • 等比缩放
  • 非等比缩放

缩放

等比缩放后不等于64*128,进行裁剪。

最终得到:

正样本个数:820 pos

负样本个数: 1931 neg

hog+SVM 代码

import cv2 
import numpy as np
import matplotlib.pyplot as plt
#1参数设置  2创建hog实例 3svm 4计算hog  5标签准备  6 完成训练 7完成预测 8 完成绘图查看效果
PosNum = 820
NegNum =1931 #与实际的一致
winSize=(64,128)
blockSize=(16,16)#win下105个blcok ,
blockStride = (8,8)#4个cell
cellSize =(8,8)#每个cell9个bin
binNum = 9

#2 hog创建
hog = cv2.HOGDescriptor(winSize,blockSize,blockStride,cellSize,binNum)

#3 svm创建
svm = cv2.ml.SVM_CREATE()
#4 计算hog,参数,保存位置
featureNum =int( ( (128-16)/8+1 )* ( (64-16)/8+1 ) *4*9)#3780
featureArray = np.zeros(((posNum+negNum),featureNum),np.float32)
labelArray = np.zeros(((posNum+negNum),1),np.int32)
#svm训练时,监督学习:需要样本标签—————— 学习的是hog特征,是真正的样本

#5特征存储
for i in range(0,posNum):
  fileName='pos/'+str(i+1)+'.jpg' # mac
  img = cv2.imread(filename)#彩色图片
  hist =hog.compute(img,(8*8)) # 3780 hog计算
  for j in range(0,featureNum):
    featureArray[i,j] = hist[j] #装载特征
    labelArray[i,0]=1 #pos样本
    
for i in range(0,negNum):
  fileName='neg/'+str(i+1)+'.jpg'
  img = cv2.imread(filename)#彩色图片
  hist =hog.compute(img,(8*8)) # 3780
  for j in range(0,featureNum):
    featureArray[i+posNum,j] = hist[j] #装载特征
    labelArray[i+posNum,0]=-1 #neg样本

#svm属性设置
svm.setType(cv2.ml.SVM_C_SVC)
svm.setKernel(cv2.ml.SVM_LINEAR)
svm.setC(0.01)

#6 svm训练
ret = svm.train(featureArray,cv2.ml.ROW_SAMPLE,labelArray)

#7 检测
# 创建 hog mydetect<---resultArray,hro)
# myhog==》调用detectMultiScale
alpha = np.zeros((1),np.float32)
rho = svm.getDesisionFuction(0,alpha) #hog描述信息,用于svm判决
print(rho)
print(alpha)

alphaArray = np.zeros((1,1),np.float32)
supoortVArray = np.zeros((1,featureNum),np.float32)
resultArray = np.zeros((1,featureNum),np.float32)
alphaArray[0,0] = alpha
resultArray = -1*alphaArray*suportVArray

#detect
myDectect = np.zeros((3781),np.float32)
for i in range(0,3780):
  myDetect[i] = resultArray[0,i]  
myDetect[3780]=rho[0]

#构建hog:创建hog==》mydetect ==》resultArray,rho
#resultArray--》-1*alphaArray*suportVArray
#rho==》svm--》train
myHog = cv2.HOGDescriptor()
myHog.setSVMDetector(myDetect)

#待检测图片的加载
imageSrc = cv2.imread('Test2.jpg',1)
objs = myHog.detectMultiScale(imageSrc,0,(8*8),(32*32),1.05,2)
#获取检测到的目标 : objs三维,最后一维
x=int(objs[0][0][0])
y=int(objs[0][0][1])
w=int(objs[0][0][2])
h=int(objs[0][0][3])

#目标绘制,展示
cv2.rectangle(imgSrc,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('dst',imageSrc)
cv2.waitKey(0)

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 16:45:14  更:2021-12-02 16:46:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 2:22:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码