『python』计算机视觉_经典目标检测算法中的几个概念

图像金字塔

1.在从cv2.resize中,传入参数时先列后行的

2.使用了python中的生成器,调用时使用for i in pyramid即可

3.scaleFactor是缩放因子,需要保证缩放后的图不小于最小尺寸,对应神经网络就是训练尺寸

‘‘‘图像金字塔‘‘‘
def resize(img, scaleFactor):
    # cv2.resize先接收列后接收行,返回亦然
    return cv2.resize(img, (int(img.shape[1] * (1/scaleFactor)),
                            int(img.shape[0] * (1/scaleFactor))),
                      interpolation=cv2.INTER_AREA)
def pyramid(image, scale=1.5, minSize = (200, 80)):
    yield image

    while True:
        image = resize(image, scale)
        if image.shape[0]  < minSize[1] or image.shape[1] < minSize[0]:
            break
        yield  image

滑动窗口

‘‘‘滑动窗口‘‘‘
def sliding_window(image, stepSize, windowSize):
    for y in range(0, image.shape[0], stepSize):
        for x in range(0, image.shape[1], stepSize):
            yield(x, y, image[y:y+windowSize[1], x:x+windowSize[0]])

非极大值抑制

‘‘‘非极大值抑制‘‘‘
def non_max_suppression_fast(boxes, overlapThresh):
    # 如果没有box,返回空list
    if len(boxes) == 0:
        return []
    # 修改boxes的格式为float方便处理
    if boxes.dtype.kind == ‘i‘:
        boxes = boxes.astype(‘float‘)
    # 使用pick收集boxes
    pick = []
    x1 = boxes[:, 0]
    y1 = boxes[:, 1]
    x2 = boxes[:, 2]
    y2 = boxes[:, 3]
    scores = boxes[:, 4]
    area = (x2 - x1 + 1) * (y2 - y1 + 1)
    # 按照score从小到大的顺序排序indexes
    idxs = np.argsort(scores) # [::-1],源程序有这么一个逆序,不过我觉得应该去掉

    while len(idxs) > 0:
        # 分配最后一个(得分最低)index给i,并使用pick收集这个index(即i)
        last = len(idxs) - 1
        i = idxs[last]
        pick.append(i)
        # 在得分大于当前i的boxes中,
        # 找到重合部分的左上点和右下点
        xx1 = np.maximum(x1[i], x1[idxs[:last]])
        yy1 = np.maximum(y1[i], y1[idxs[:last]])
        xx2 = np.minimum(x2[i], x2[idxs[:last]])
        yy2 = np.minimum(y2[i], y2[idxs[:last]])
        # 计算上面得到的重合面积
        w = np.maximum(0, xx2 - xx1 + 1)
        h = np.maximum(0, yy2 - yy1 + 1)
        # 计算重合度
        overlap = (w * h) / area[idxs[:last]]
        # 删除得分最高的项(循环开始已经收集了),
        # 删除
        idxs = np.delete(idxs, np.concatenate(([last],
                                               np.where(overlap > overlapThresh))))  # [0])))
        # 加上索引之后只删除一个得分最高的过重合矩形,所以不应该加索引

    return boxes[pick].astype(‘int‘)
时间: 2024-12-25 05:54:52

『python』计算机视觉_经典目标检测算法中的几个概念的相关文章

『python』计算机视觉_OpenCV3角点特征Harris提取方法

因为当下的计划是熟悉语言和库,而图像特征提取脱离理论就很没意思了,并且很可能事倍功半,所以计算机视觉特征提取这部分跳过,直接开始和深度学习结合较为紧密的目标检测&识别部分. 本节介绍了OpenCV3中提取图像角点特征的函数: 1 # coding=utf-8 2 import cv2 3 import numpy as np 4 5 6 '''Harris算法角点特征提取''' 7 8 img = cv2.imread('chess_board.png') 9 gray = cv2.cvtCol

『python』计算机视觉_OpenCV3目标检测器(待续)

bulid-in目标检测器 调用内部函数进行人体检测,实际效果并不好.民工三连: hog = cv2.HOGDescriptor() # 启动检测器对象 hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector()) # 指定检测器类型 found, w = hog.detectMultiScale(img) # 加载&&监测图像 完整程序: import cv2 import numpy as np def is_insi

『python』计算机视觉_OpenCV3库安装

Anaconda打包安装: conda install --channel https://conda.anaconda.org/menpo opencv3 验证: >>> import cv2 >>> cv2.__version__ '3.2.0' 注意:这种安装方式仅支持python2. Windows下安装方式: Win下python库资源集合 1. 下载所需的版本,注意版本号的对应: opencv_python-3.1.0-cp35-cp35m-win_amd6

『Python』常用函数实践笔记

库安装: 1).pip & conda 2).在win10下手动安装python库的方法: 『python』计算机视觉_OpenCV3库安装 原生: list.append():添加元素到list末尾 list.extend():使用一个list扩展另一个list 字典列表化:字典是有顺序的,而且list字典等于list字典的key dict = {'c':1,'b':2,'a':3} list(dict) # Out[13]: # ['c', 'b', 'a'] list(dict.keys(

『Python』Numpy学习指南第九章_使用Matplotlib绘图

坐标轴调节以及刻度调节参见:『Python』PIL&plt图像处理_矩阵转化&保存图清晰度调整 数据生成: 1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 func = np.poly1d(np.array([1,2,3,4])) 5 func1 = func.deriv(m=1) # 求一阶导数 6 func2 = func.deriv(m=2) # 求二阶导数 7 8 x = np.linspace(-10,10,3

10 行Python 代码,实现 AI 目标检测技术,真给力!

只需10行Python代码,我们就能实现计算机视觉中目标检测. from imageai.Detection import ObjectDetection import os execution_path = os.getcwd() detector = ObjectDetection() detector.setModelTypeAsRetinaNet() detector.setModelPath( os.path.join(execution_path , "resnet50_coco_b

『Python』内存分析_List对象内存占用分析

『Python』内存分析_下_list和array的内存增长模式 list声明后结构大体分为3部分,变量名称--list对象(结构性数据+指针数组)--list内容,其中id表示的是list对象的位置, v引用变量名称,v[:]引用list对象,此规则对python其他序列结构也成立,以下示范可用id佐证, a=b时,a和b指向同一个list对象 a=b[:]时,a的list对象和b的list对象指向同一个list内容 Q1:元素存储地址是否连续 首先见得的测试一下list对象存储的内容(结构3

『Python』内存分析_list和array的内存增长模式

『Python』内存分析_List对象内存占用分析 在Python中,列表是一个动态的指针数组,而array模块所提供的array对象则是保存相同类型的数值的动态数组.由于array直接保存值,因此它所使用的内存比列表少.列表和array都是动态数组,因此往其中添加新元素,而没有空间保存新的元素时,它们会自动重新分配内存块,并将原来的内存中的值复制到新的内存块中.为了减少重新分配内存的次数,通常每次重新分配时,大小都为原来的k倍.k值越大,则重新分配内存的次数越少,但浪费的空间越多.本节通过一系

目标检测算法SSD在window环境下GPU配置训练自己的数据集

由于最近想试一下牛掰的目标检测算法SSD.于是乎,自己做了几千张数据(实际只有几百张,利用数据扩充算法比如镜像,噪声,切割,旋转等扩充到了几千张,其实还是很不够).于是在网上找了相关的介绍,自己处理数据转化为VOC数据集的格式,在转化为XML格式等等.具体方法可以参见以下几个博客.具体是window还是Linux请自行对号入座. Linux:http://blog.sina.com.cn/s/blog_4a1853330102x7yd.html window:http://blog.csdn.n