ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从 0.1 里程碑看 ccv 的四大核心算法:BBF 人脸检测、DPM 行人检测、SWT 文本检测与 SIFT 特征匹配

从 0.1 里程碑看 ccv 的四大核心算法:BBF 人脸检测、DPM 行人检测、SWT 文本检测与 SIFT 特征匹配 计算机视觉深度学习【免费下载链接】ccvC-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library项目地址https://gitcode.com/gh_mirrors/cc/ccv点击查看免费下载2012 年 6 月 29 日ccvC-based/Cached/Core Computer Vision Library正式迈过 0.1 里程碑——距离首个 commit 恰好两年。这篇里程碑博客宣布了四件兑现当初承诺的成果用于刚性物体的超快检测算法 BBF、能处理较复杂物体的精确检测算法 DPM、当时处于前沿的文本检测算法 SWT以及长期沉淀下来的特征点检测算法 SIFT。本文以该里程碑博客为核心结合当前仓库中 doc/bbf.rst、doc/dpm.rst、doc/swt.rst、doc/sift.rst 等文档与 lib 目录下的源码实现逐项讲解这四大算法的设计定位、命令行用法、检测效果与可复现的性能数据并补充训练自有检测器所需的核心参数帮助读者理解 ccv 早期以应用驱动为导向的算法选型思路。里程碑背景应用驱动哲学下的第一个版本在 ccv 的立项目标中modern被定义为与其提供一卡车过时的算法不如在广泛的应用场景中提供同类最佳的算法。这一理念在《Application driven philosophy》中被明确为 ccv 的开发基调——先选定应用再按需实现算法。当时承诺的首批四个应用方向是物体匹配object matching物体检测object detection文本检测text detection三维重建3d reconstruction。而 0.1 里程碑兑现的版本对应的是其中与检测、匹配直接相关的四套算法。里程碑博客特别注明文中所有配图均为算法直接输出未做任何后处理——这既是对算法真实效果的背书也反映了 ccv 一贯开箱即用的工程取向。值得一提的是这种应用驱动哲学在代码库中留下了大量痕迹例如ccv_sample_down是在实现 BBF 物体检测需要图像金字塔时引入的而ccv_sample_up直到 SIFT 实现需要上采样以获得更好结果时才出现至今ccv_resample仍缺少 scale-up 选项原因仅仅是已实现的应用里没有这个需求。1. BBF面向刚性物体的快速检测人脸检测BBF 全称 Brightness Binary Feature亮度二值特征是 0.1 里程碑中主打速度的刚性物体检测器其典型应用场景是人脸检测。里程碑博客中的检测结果如下用法与命令行按 BBF 文档 的记录检测命令是./bbfdetect 包含人脸的图片 ../samples/face | ./bbfdraw.rb 包含人脸的图片 output.pngbbfdetect从 samples/face 目录加载训练好的级联分类器该目录下是分阶段保存的stage-*.txt级联模型对输入图片做多尺度滑窗检测bbfdraw.rb把检测框绘制出来输出到output.png。源码级原理BBF 的核心实现在 lib/ccv_bbf.c对外 API 为ccv_bbf_detect_objects声明见 lib/ccv.h。从 lib/ccv_bbf.c 的实现可以看到它的多尺度检测策略以params.size感兴趣的最小物体尺寸为基准按scale pow(2., 1. / (params.interval 1.))构造图像金字塔在每两个相邻尺度之间插入interval层中间图像级联分类器逐 stage 串行判定每个 stage 对窗口内的一组二值特征做加权求和一旦sum classifier-threshold立即拒绝该窗口flag 0并跳出从而实现早停式的快速排除params.accurate控制精度/速度的权衡置 1 时每个尺度额外生成 4 种空间位置变体置 0 时只扫描 1 种变体速度约提升 3 倍但精度下降。对应参数结构ccv_bbf_param_t见 lib/ccv.h。算法本身的依据是 Abramson 与 Steux 的 YEF* Real-Time Object Detection以及 Huang、Ai 等人改进的多视角人脸检测工作详见 doc/bbf.rst。文档记录的检测性能BBF 文档 在 MITCMU 人脸检测数据集上记录了如下对比该数据为文档作者在特定硬件上的实测记录指标bbfdetectOpenCV 默认人脸检测器检测率82.97%12 个误报86.69%15 个误报耗时整个测试集约 9.3 秒约 28 秒即 BBF 的检测率略低约 4 个百分点但速度约为 OpenCV 默认检测器的 3 倍。文档作者同时指出检测率差距可以通过自行训练更好的检测器弥补。训练自己的 BBF 检测器BBF 文档 给出了完整的训练流程在bbfcreate同目录下建立data/工作目录准备好正样本列表与负样本背景图片列表后运行./bbfcreate --positive-list faces.dat --background-list negs.dat --negative-count 26250 --working-dir data其中--negative-count表示每轮从背景图中抽取的负样本数量经验上约为正样本数的两倍。训练过程支持 OpenMP 并行加速需在 makefile 中开启配置且随时可以中断——最新结果会保存在data/目录清理该目录即可重新开始。训练参数结构ccv_bbf_new_param_t见 lib/ccv.h还暴露了pos_crit目标召回率、neg_crit目标拒绝率、balance_k正负样本加权、layer级联最大层数、feature_number每级最大特征数与optimizerCCV_BBF_GENETIC_OPT遗传搜索或CCV_BBF_FLOAT_OPT浮点搜索等可调项。历史定位0.7 起已被 SCD 取代值得注意的是BBF 文档 开头明确标注该特性已 deprecated在 libccv 0.7 中BBF 被认为对于人脸检测既不够快也不够准实现将在 0.7 之后的版本中移除由 SCD人脸检测取而代之。因此在当前仓库中BBF 更适合作为理解级联二值特征 多尺度金字塔这一经典检测范式的学习材料。2. DPM面向复杂物体的精确检测行人检测DPMDeformable Parts Model可变形部件模型面向有些难度的物体——例如姿态多变的行人。其思想是物体由若干部件构成检测器先找到整体的匹配再用部件模型对结果进行精调。0.1 里程碑配图展示了在街景中框出多个行人的效果用法与命令行按 DPM 文档./dpmdetect 包含行人的图片 ../samples/pedestrian.m | ./dpmdraw.rb 包含行人的图片 output.pngpedestrian.m即仓库自带的行人模型见 samples/pedestrian.m。此外仓库还附带了一个用 VOC2011 trainval 数据训练的混合模型 samples/car.m其验证集结果为 46.19%16 个误报。源码与性能记录DPM 检测入口为ccv_dpm_detect_objects见 lib/ccv_dpm.c。DPM 文档 记录了在 INRIA 2008 数据集上的对比阈值为 0.8重叠面积超过两框较大者 60% 计为真正例实现检测率误报数ccv 的 DPM默认参数训练约 3 天76.74%49OpenCV 自带 peopledetect HOG 检测器scale factor 1.09 以对齐 interval847.37%133作者官方 Matlab 实现INRIA 专用模型-0.3 阈值75.38%55速度方面在 288 张图像的 INRIA 测试集上ccv 的 DPM 单线程耗时约 8 分 19 秒OpenCV 的 HOG 检测器约 1 分 56 秒约快 4.34 倍——这正是文档所述DPM 的卖点是识别难物体的能力而非速度的写照。训练自己的 DPM 检测器DPM 文档 提供了dpmcreate训练工具./dpmcreate --help可查看全部选项。使用 INRIA 行人数据集时先借助dpmext.rb脚本把 INRIA 格式的标注框转换成 ccv 格式文件路径 x y width height得到正样本列表再用find生成负样本列表./dpmcreate --positive-list pedestrian.samples --background-list no-pedestrian.samples --negative-count 12000 --model-component 1 --model-part 8 --working-dir 工作目录 --base-dir INRIA数据集/Train/pos/--model-component与--model-part分别控制混合模型中的组件数与每个组件的部件数。文档提示该训练在当时的笔记本上约需 3 天且当时实现不支持 OpenMP需要耐心等待。3. SWT语言无关的文本检测SWTStroke Width Transform笔画宽度变换试图捕捉文本独有的特征并利用文本的几何签名过滤掉非文本区域从而得到语言无关的可靠文本区域——它不依赖任何语言特有的字符形状先验。0.1 里程碑配图展示了它对标识牌上多行英文的框选结果用法与命令行按 SWT 文档./swtdetect 包含文本的图片 | ./swtdraw.rb 包含文本的图片 output.pngSWT 检测入口为ccv_swt_detect_words见 lib/ccv_swt.c。该文档目前仍标注为 work in progress但核心数据已可复现。性能与精度记录SWT 文档 记录了如下实测数据速度不带尺度不变支持多尺度时640x480 图片在当时的笔记本上低于 50 毫秒扩展到多尺度后精度提升约 10%耗时约为原来的 2~4 倍。精度ICDAR 2003旧评测方法ccv 实现达到 precision 66%、recall 59%论文报告值分别为 73% 与 60%。精度ICDAR 2011在训练集上做参数搜索后达到 precision 59%、recall 61%、调和均值 60%文档称在当时榜单中可排到第 2~3 名且对比方法多为语言特定依赖 SVM/Adaboost 训练字符形状信息而 SWT 语言无关、不使用任何语言特定特征。4. SIFT特征点检测与图像匹配SIFTScale Invariant Feature Transform是里程碑中承诺的特征点检测算法用于两幅图像之间的特征点提取与匹配。0.1 里程碑配图展示了它在一幅装饰画与其在真实场景中对应物之间的匹配连线用法与命令行按 SIFT 文档仓库提供siftmatch示例程序直接传入两幅图即可./siftmatch ../samples/book.png ../samples/scene.png配合siftdraw.rb可以可视化匹配连线./siftmatch ../samples/book.png ../samples/scene.png | ./siftdraw.rb ../samples/book.png ../samples/scene.png output.pngsiftmatch的输入样例 book.png 与 scene.png 都存放在 samples 目录下。若要进一步估计单应矩阵文档提到可以接入外部的 homest 程序siftmatch ... | siftdraw.rb ... homest目录/homest_demo作者当时还在权衡是否要在后续版本内置类似ccv_find_homography的函数。源码定位SIFT 在 ccv 中的实现主要受 VLFeat 影响。其核心 API 为ccv_sift见 lib/ccv.h函数签名ccv_sift(a, keypoints, desc, type, params)同时输出关键点数组与描述子矩阵type参数用于控制输出类型ccv_sift_default_params提供默认参数。这与文档中用siftmatch完成关键点提取 匹配的使用方式一一对应。从 0.1 里程碑回看算法选型留下的注脚0.1 里程碑是 ccv应用驱动哲学的第一次集中兑现四套算法分别覆盖快速检测BBF、复杂物体检测DPM、文本检测SWT与特征匹配SIFT且每一套都能在 samples 与 doc 中找到配套的模型与使用文档。今天再读这份里程碑博客值得留意的两点是其一BBF 的定位在后续版本中被重新审视并最终弃用说明应用驱动同样意味着算法会随应用需求的进化而被替换BBF 文档 对此有明确说明其二所有展示图像均无后处理体现了 ccv 一贯强调的真实可复现的检测结果这一工程标准。对于希望从零理解经典 CV 算法落地细节的读者这四套算法及其源码、模型、文档共同构成了一套完整的可运行教材。赞分享计算机视觉深度学习【免费下载链接】ccvC-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library项目地址https://gitcode.com/gh_mirrors/cc/ccv点击查看免费下载相关推荐ccv 中 BBF 亮度二值特征人脸检测从级联检测到自定义训练实战指南ccv 中 BBF 亮度二值特征人脸检测从级联检测到自定义训练实战指南 BBFBrightness Binary Feature亮度二值特征是 ccv计算机视觉深度学习ccv BBF 人脸检测指南Brightness Binary Feature 的检测、评测与自定义训练实战ccv BBF 人脸检测指南Brightness Binary Feature 的检测、评测与自定义训练实战 BBFBrightness Binary Fe计算机视觉深度学习Kornia特征检测与匹配算法实践Kornia特征检测与匹配算法实践 Kornia提供了先进的深度学习特征检测与匹配算法包括LoFTR无检测器特征匹配、LightGlue高效Transform计算机视觉深度学习人工智能图像处理上一篇Apache Thrift在线教育平台互动学习体验构建下一篇Milligram无障碍屏幕阅读器支持提升可访问性创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表