在Matlab下训练级联目标检测器

2024-06-10 05:58

本文主要是介绍在Matlab下训练级联目标检测器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Matlab下,vision.CascadeObjectDetector可以用来进行目标检测,Matlab系统中自带了一些已经训练好的分类器用于目标检测,目前比较成熟的检测器有人脸检测,鼻子检测,人眼检测和上半身检测。但是仅仅是这些检测器是不能应用于其它领域的。还好,Matlab提供了trainCascadeObjectDetector函数,可根据自已的需求重新训练一个检测器,用于目标检测。基本的流程如下:




在训练满足自己需求的检测器之前,需要对自己的图像数据进行处理,也就是勾出图片中要检测的目标。这个过程貌似有点麻烦,还好,不用担心,Matlab自带有这样的工具,这个工具就是Training Image Labeler。怎样打开这个工具呢?如下图所示:






然后点击Add Images,便可把图片载入到当前界面,然后用框图勾出你要检测的目标,勾出的框可以多个可以重叠,完成后,直接点击Save Session或Export  ROIs,保存即可。保存的结果是一个结构体,域名field names分别为imageFilename和objectBoundingBoxes,分别保存了图像的存储路径与图像待检测目标的ROI坐标[x y width height]。这一步处理完成后,相当于训练集处理完成,接下来便是用它来训练检测器。

怎样训练检测器呢?前边已经说啦,提到过一个函数,那就是trainCascadeObjectDetector函数,它是Matlab的built-in函数。这个函数有很多输入参数,但我们只需输入三个参数即可,其他的都有默认值。目前,该函数支持Haar,LBP,HOG特征检测器,默认为HOG目标检测器。

trainCascadeObjectDetector(outputXMLFileName, positiveInstances, negativeImages)

其中,outputXMLFileName为训练好的检测器保存文件,是XML文件,positiveInstances为正样本,也就是图片中含有待检测的目标,它也就是前边那一步处理后,Save Session或Export ROIs时保存的结构体,它是一个矩阵文件。negativeImages为负样本,也就是图片中不含有待检测的目标,通常为背景图片。同 正样本一样,negativeImages为负样本的存储路径。具体详情请参考

help trainCascadeObjectDetector

下面是Matlab自带的一个训练检测器到检测的示例:

 %Example - Training a stop sign detector% Load the positive samples data from a mat file% The file names and bounding boxes are contained in an array% of structures named 'data'. The samples were created using% trainingImageLabeler app.load('stopSigns.mat');% Add the image directory to the MATLAB pathimDir = fullfile(matlabroot, 'toolbox', 'vision', 'visiondata',...'stopSignImages');addpath(imDir);% Specify folder with negative imagesnegativeFolder = fullfile(matlabroot, 'toolbox', 'vision', ...'visiondata', 'nonStopSigns');% Train a cascade object detector called 'stopSignDetector.xml'% using HOG features.% NOTE: The command below can take several minutes to runtrainCascadeObjectDetector('stopSignDetector.xml', data, ...negativeFolder, 'FalseAlarmRate', 0.1, 'NumCascadeStages', 5);% Use the newly trained classifier to detect a stop sign in an imagedetector = vision.CascadeObjectDetector('stopSignDetector.xml');img = imread('stopSignTest.jpg'); % read the test imagebbox = step(detector, img); % detect a stop sign% Insert bounding box rectangles and return marked imagedetectedImg = insertObjectAnnotation(img, 'rectangle', bbox, 'stop sign');figure; imshow(detectedImg); % display the detected stop signrmpath(imDir); % remove the image directory from the path

实验结果:













参考:

1. Train a Cascade Object Detector


这篇关于在Matlab下训练级联目标检测器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1047377

相关文章

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering)

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering) Power Iteration Clustering (PIC) 是一种基于图的聚类算法,用于在大规模数据集上进行高效的社区检测。PIC 算法的核心思想是通过迭代图的幂运算来发现数据中的潜在簇。该算法适用于处理大规模图数据,特别是在社交网络分析、推荐系统和生物信息学等领域具有广泛应用。Spa

SigLIP——采用sigmoid损失的图文预训练方式

SigLIP——采用sigmoid损失的图文预训练方式 FesianXu 20240825 at Wechat Search Team 前言 CLIP中的infoNCE损失是一种对比性损失,在SigLIP这个工作中,作者提出采用非对比性的sigmoid损失,能够更高效地进行图文预训练,本文进行介绍。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注类别数:4 标注类别名称:["Platelets","RBC","WBC","sickle cell"] 每个类别标注的框数:

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

libsvm在matlab中的使用方法

原文地址:libsvm在matlab中的使用方法 作者: lwenqu_8lbsk 前段时间,gyp326曾在论坛里问libsvm如何在matlab中使用,我还奇怪,认为libsvm是C的程序,应该不能。没想到今天又有人问道,难道matlab真的能运行libsvm。我到官方网站看了下,原来,真的提供了matlab的使用接口。 接口下载在: http://www.csie.ntu.edu.