目标检测讲解

环境准备

pip install scikit-image -i https://pypi.tuna.tsinghua.edu.cn/simple

图片读取&画框

from skimage import io
import matplotlib.pyplot as plt
import matplotlib.patches as mpss = io.imread('dogs.jpg')_, ax = plt.subplots(ncols=1, nrows=1, figsize=(6, 6))
ax.imshow(ss)rect = mp.Rectangle((600, 400), 100, 80, fill=False, edgecolor='red', linewidth=1)
ax.add_patch(rect)plt.show()

运行代码,显示如下

方法特点

  • 捕捉不同尺度(Capture All Scales)
  • 多样化(Diversification)
  • 快速计算(Fast to Compute)

图像中区域特征比像素更具代表性

  • 计算所有邻近区域之间的相似性;
  • 两个最相似的区域被组合在一起;
  • 计算合并区域和相邻区域的相似度;
  • 重复2、3过程,直到整个图像变为一个区域

 

另外加入一些多样性的衡量

  • 颜色相似性
  • 纹理相似性
  • 尺度相似性
  • 形状重合度

效果如下

 

Selective Search环境准备

pip install selectivesearch

生成示例图片的框

from skimage import io
import selectivesearchss = io.imread('dogs.jpg')# ss生成目标框
_, regions = selectivesearch.selective_search(ss, scale=500, sigma=0.9, min_size=10)print(len(regions))
for i in regions[0:5]:print(i)

运行代码,打印信息如下

2437
{'rect': (0, 0, 1299, 951), 'size': 47450, 'labels': [0.0]}
{'rect': (48, 0, 96, 0), 'size': 97, 'labels': [1.0]}
{'rect': (432, 0, 319, 0), 'size': 320, 'labels': [2.0]}
{'rect': (1120, 0, 47, 1), 'size': 64, 'labels': [3.0]}
{'rect': (0, 7, 340, 0), 'size': 341, 'labels': [4.0]}

对候选框进行过滤

  • 去除重复框
  • 删除小框
  • 删除宽高比较大的框

代码如下

candidates = set()
for r in regions:# with different segmentsif r['rect'] in candidates:continue# 删除 < 2000 pixelsif r['size'] < 2000:continue# 删除 宽高比 > 1.2x, y, w, h = r['rect']if w / h > 1.2 or h / w > 1.2:continuecandidates.add(r['rect'])
print(candidates)

运行代码,打印如下

{(857, 523, 429, 375), (864, 520, 426, 431), (207, 266, 139, 143), (508, 523, 330, 373), (1058, 344, 75, 65), (75, 522, 405, 375), (854, 520, 434, 378), (1060, 344, 73, 64), (23, 32, 233, 268), (75, 522, 406, 375), (176, 600, 307, 298), (1059, 11, 141, 165), (0, 133, 258, 275), (493, 523, 346, 376), (1105, 285, 141, 124), (1102, 280, 144, 129), (855, 521, 431, 377), (776, 8, 519, 503), (396, 122, 279, 285), (1059, 344, 74, 64), (1101, 236, 137, 129), (508, 523, 330, 376), (137, 551, 347, 347), (508, 523, 331, 376), (65, 521, 419, 377), (589, 228, 172, 181), (1057, 11, 93, 88), (0, 8, 349, 401), (1101, 227, 186, 182), (154, 551, 330, 347), (855, 521, 433, 377), (688, 750, 150, 148), (1129, 285, 117, 124), (1057, 9, 229, 216), (1059, 11, 142, 165), (363, 9, 399, 400), (23, 32, 323, 377), (363, 9, 398, 400), (341, 8, 423, 405), (176, 551, 308, 347), (887, 650, 186, 187), (176, 600, 308, 298), (23, 32, 324, 377)}


显示满足条件的候选框

from skimage import io
import selectivesearch
import matplotlib.pyplot as plt
import matplotlib.patches as mpss = io.imread('dogs.jpg')_, regions = selectivesearch.selective_search(ss, scale=500, sigma=0.9, min_size=10)# 过滤框
candidates = set()
index = 0
for r in regions:index += 1print(index)# with different segmentsif r['rect'] in candidates:continue# 删除 < 2000 pixelsif r['size'] < 2000:continue# 删除 宽高比 > 1.2x, y, w, h = r['rect']if w / h > 1.2 or h / w > 1.2:continuecandidates.add(r['rect'])# 画图
fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(6, 6))
ax.imshow(ss)
for x, y, w, h in candidates:rect = mp.Rectangle((x, y), w, h, fill=False, edgecolor='red', linewidth=1)ax.add_patch(rect)plt.show()

运行代码,显示如下

候选区域预处理

SelectiveSearch在一张图片上提取出来约2000个侯选区域, 需要注意的是这些候选区域的长宽不固定

如下图所示

 

将每个region固定到227*227的尺寸

why ?

  • CNN主要由两部分组成:卷积和全连接部分
  • 卷积部分通过滑窗进行计算,并输出代表激活的空间排布的特征图(feature map),卷积并不需要固定的图像尺寸,可以产生任意尺寸的特征图
  • 全连接层的输入数据维度是固定的

RCNN结构

 

CNN特征提取

 

CNN训练

使用imagenet上预训练的AlexNet,把网络的最后一个fc层的1000改为(论文测试的数据集是20类object+background)N+1(N为类别的数目,1是加一个背景)来fine-tuning用于提取特征的CNN。

正样本

  • 候选区域与人工标注的真实框的IOU >=0.5

负样本

  • IOU小于0.5

正负样本比例

  • 每个batch_size = 128,32个是正样本,96个是负样本

学习率

  • 0.001(初始学习率的1/10

梯度更新:SGD

SVM分类

正样本

  • 候选框包含整个目标

负样本

  • IoU < 0.3

一张图片产生2000个侯选区域,提取出来的就是2000 x 4096这样的特征向量(R-CNN当中默认CNN层输出4096特征向量)

对20类中的每一类,分别训练一个SVM分类器

 

候选框回归

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/855972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零编程数据可视化展示:十个简易案例!

数据可视化是呈现数据内在价值的最终手段。数据可视化实例利用各种图表和图形设计手段&#xff0c;合乎逻辑地展示复杂而不直观的数据。为了让用户直观清楚地了解他们想要的数据及其比较关系&#xff0c;数据可视化实例的呈现至关重要。即时设计整理了10个数据可视化实例&#…

C语言练习01-循环

一、打印五行五列的三角形 如下图&#xff1a; #include<stdio.h>int main() {for (int i 1;i < 5; i){for (int j i; j < 5; j){printf("*");}printf("\n");}return 0; }#include<stdio.h>int main() {for (int i 1;i < 5; i){f…

Java 开发面试题精选:RocketMQ 一篇全搞定

前言 RocketMQ作为一个高性能、高可用的分布式消息和流处理平台&#xff0c;广泛应用于分布式系统中的解耦、异步通信和数据流处理场景。这篇文章我精选了一些关于RockerMQ面试题目&#xff0c;这些问题涵盖了RocketMQ的所有关键知识点&#xff0c;从基本概念到高级应用&#…

leetcode21 合并两个有序单链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#xff1a;[]示例…

压缩pdf文件大小,如何压缩pdf

压缩PDF文件是现代办公中常见的需求&#xff0c;因为PDF文件往往包含了大量的图片、文本和格式信息&#xff0c;导致文件体积较大&#xff0c;不利于传输和存储。本文将详细介绍如何压缩PDF文件&#xff0c;我们一起来看一下。 浏览器打开 "轻云处理pdf官网" &#x…

Go 1.19.4 字符串-Day 06

1. 编码表 计算机中只有数字&#xff08;0和1&#xff09;&#xff0c;如果有一个字符串&#xff08;字符串由字符组成&#xff09;要存储&#xff0c;在内存中该如何表达这个字符串&#xff1f; 那么所有的字符都必须数字化&#xff0c;也就是一个字符对应一个特定的数字&…

js文件导出功能

效果图&#xff1a; 代码示例&#xff1a; <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title>html 表格导出道</title><script src"js/jquery-3.6.3.js"></script><st…

18个机器学习核心算法模型总结

最强总结&#xff01;18个机器学习核心算法模型&#xff01;&#xff01; 大家好~ 在学习机器学习之后&#xff0c;你认为最重要的算法模型有哪些&#xff1f; 今儿的内容涉及到~ 线性回归逻辑回归决策树支持向量机朴素贝叶斯K近邻算法聚类算法神经网络集成方法降维算法主成…

LabVIEW版本、硬件驱动和Windows版本之间兼容性

在LabVIEW应用开发和部署过程中&#xff0c;确保LabVIEW版本、硬件驱动和Windows版本之间的一致性和兼容性至关重要。这不仅影响程序的稳定性和性能&#xff0c;还关系到项目的成功实施。本文从多角度详细分析这些因素之间的兼容性问题&#xff0c;并提供相关建议。 兼容性考虑…

【尚庭公寓SpringBoot + Vue 项目实战】登录管理(十八)

【尚庭公寓SpringBoot Vue 项目实战】登录管理&#xff08;十八&#xff09; 文章目录 【尚庭公寓SpringBoot Vue 项目实战】登录管理&#xff08;十八&#xff09;1、登录业务介绍2、接口开发2.1、获取图形验证码2.2、登录接口2.3、获取登录用户个人信息 1、登录业务介绍 登…

SpringCloud Netflix和SpringCloud Alibaba核心组件

1.SpringCloud Netflix组件 1.1 Netflix Eureka-服务注册发现 Eureka 是一种用于服务发现 的组件&#xff0c;它是一个基于 REST 的服务&#xff0c;用于定位运行在 AWS 弹性计算云&#xff08;EC2&#xff09;中的中间层服务&#xff0c;以便它们可以相互通讯。 注册&#xf…

day14-226.翻转二叉树+101. 对称二叉树+104.二叉树的最大深度

一、226.翻转二叉树 题目链接&#xff1a;https://leetcode.cn/problems/invert-binary-tree/ 文章讲解&#xff1a;https://programmercarl.com/0226.%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE 视频讲解&#xff1…

C++ —— unordered_set、unordered_map的介绍及使用

目录 unordered系列关联式容器 unordered_set的介绍 unordered_set的使用 unordered_set的定义方式 unordered_set接口的使用 unordered_multiset unordered_map的介绍 unordered_map的使用 unordered_map的定义方式 unordered_map接口的使用 unordered_multimap …

智慧校园发展趋势:2024年及未来教育科技展望

展望2024年及未来的教育科技领域&#xff0c;智慧校园的发展正引领着一场教育模式的深刻变革&#xff0c;其核心在于更深层次地融合技术与教育实践。随着人工智能技术的不断成熟&#xff0c;个性化学习将不再停留于表面&#xff0c;而是深入到每个学生的个性化需求之中。通过精…

密钥管理简介

首先我们要知道什么是密钥管理&#xff1f; 密钥管理是一种涉及生成、存储、使用和更新密钥的过程。 密钥的种类 我们知道&#xff0c;对称密码主要包括分组密码和序列密码。但有时也可以将杂凑函数和消息认证码划分为这一类&#xff0c;将它们的密钥称为对称密钥&#xff1b;…

白酒:酒文化的地域特色与差异

中国的白酒文化&#xff0c;作为一种深深植根于人们生活中的文化现象&#xff0c;其发展历程深受地域特色的影响&#xff0c;从而形成了丰富多样的地域特色与差异。云仓酒庄的豪迈白酒&#xff0c;作为中国白酒的品牌&#xff0c;其背后所蕴含的地域特色与差异更是值得我们去探…

在 Ubuntu 18.04.4 LTS上安装 netmap

文章目录 步骤运行配置文件编译安装使用netmap 步骤 sudo su sudo apt-get update sudo apt install build-essential sudo apt-get install -y git sudo apt-get install -y linux-headers-$(uname -r)rootVM-20-6-ubuntu:/home/ubuntu/netmap/LINUX# git clone https://gith…

外观模式(大话设计模式)C/C++版本

外观模式 C #include <iostream> using namespace std;class stock1 { public:void Sell(){cout << "股票1卖出" << endl;}void Buy(){cout << "股票1买入" << endl;} };class stock2 { public:void Sell(){cout << …

el-cascader 支持多层级,多选(可自定义限制数量),保留最后一级

多功能的 el-cascader 序言&#xff1a;最近遇到一个需求关于级联的&#xff0c;有点东西&#xff0c;这里是要获取某个产品类型下的产品&#xff0c;会存在产品类型和产品在同一级的情况&#xff0c;但是产品类型不能勾选&#xff1b; 情况1&#xff08;二级菜单是产品&…

【mysql】排错和调优

通用的一些排错方法。 1、查看进程信息 mysql> show full processlist;mysql> show processlist; 2、information_schema information_schema这张数据表保存了MySQL服务器所有数据库的信息。如数据库名&#xff0c;数据库的表&#xff0c;表栏的数据类型与访问权限等。…