Windows环境运行DPM(Discriminatively Trained Deformable Part Models)V3.1_Demo

本文详细介绍了在Windows环境下使用Matlab配置Deformable Part Model (DPM)的全过程,包括目录设置、程序配置及运行demo等步骤,并分享了一些避免常见错误的经验。

前言

       笔者之前一直在OpenCV进行DPM研究,目前因为研究需要转向Matlab,但是作者发布的源代码用的不是Windows平台,引起了很多不便,网上的资料虽然不少,但是还是折腾不少时间,现在将我的配置过程公布如下,免去很多可能与我陷入同样编译错误的童鞋不必要的麻烦。如有不足之处,敬请指正,一起学习,一同进步!

实验环境:

Windows7_64/matlab R2014b/VS2013

DPM版本:

voc-release3.1

VOC开发包版本:VOC2007_devkit_08-Jun

 Deformable Part Model 第三版voc-release3.1下载:http://cs.brown.edu/~pff/latent-release3/

 PASCAL VOC 2007 数据集及开发包下载:http://pascallin.ecs.soton.ac.uk/challenges/VOC/voc2007/index.html


一.目录设置:

1.globals.m中的目录设定

cachedir=‘D:\...’;

tmpdir ='D:\...';

VOCdevkit =['D:\PascalVOC\VOCdevkit'];

cachedir存储模型结果和中间数据,tmpdir临时文件目录,这两个目录任意设定,关系不大。

VOCdevkit开发包目录,请指向你的VOC开发包所在目录


2.建议目录结构:

-VOCdevkit

   -local

      -VOC2006

      -VOC2007

   -results

      -VOC2006

      -VOC2007

   -VOC2007

      -Annotations

      -ImageSets

      -JPEGImages

      -SegmentationClass

      -SegmentationObject

   -VOCcode

注意上面的VOC2007是整个PASCAL VOC数据集!我们在下载完训练集和测试集图片及标注文件后,需要将他们放在一起,标注文件放在Annotations中,图片文件放在JPEGImages中,这里要完整数据集!


二.下面我们主要关注程序配置:


1.解压完源程序压缩包后,修改dt.cc,fconv.cc,features.cc和resize.cc的后缀为.cpp;然后到compile.m中修改上述文件名。

compile.m配置如下:


2.在dt.cpp中添加 #define int32_t  int(位置当然是开头)

3.features.cpp、resize.cpp和fconv.cpp中加入

#define bzero(a, b) memset(a, 0, b)

注意,这里很多网上的资料都让加入int round(float a) float tmp (int)a; iftmp >= 0.5 return (int)a 1; else return (int)a; }

但是,我加入了却提示重载错误,不加反而正确,细细研究发现,源程序调用round时都做了强制类型转换,例如:a=(int)rount(b);

所以,加那句话是画蛇添足。当然,如果你们发现按照我的方法不行的话,可以加上这句话试试。总之,一切为了解决问题!

4.在resize.cpp的大约36行的样子,将alphainfo ofs[len];  改为  alphainfo *ofs = new alphainfo[len];  

    当然,在函数最后要加上 delete [] ofs; (至于位置,我们做研究的都有一双慧眼,作用域不难找,但需谨慎~)

5.到这里,运行compile.m按理说已经OK了,但是有报错:大致是这么说的process函数需要一个返回值,但是process函数明明是void,好吧,那我们就加上一个return 0;又何妨。

6.运行compile。编译通过!

7.运行demo.m显示结果。


三.实验结果:




感悟:

笔者之前一直用VS,对matlab很陌生,对它也有点抵触,通过今晚的摸索发现,不是想象的那么难。懂matlab的人说语法比C++简单的多。逢山开道,遇水架桥,方法永远比困难多!想想当初我们一次次被各种奇葩编译错误困扰时,最后不都一一解决走到了现在!我想我们对未知的领域都有一份抵触吧,究其原因,懒惰也好,不自信也罢,我想说的是别人能做到的,我们就也能做到,只是他们比我们多花了功夫罢了!同样,当你取得一些成绩时,戒骄戒躁,你要知道,你只是比别人多努力了点罢了!谨记,前进的道路永远没有终点!因为不进则退!

参考资料:

我将我看到的有用的参考网站全部放在这里,大家如果发现什么问题,可以根据他们的提示,大胆尝试,我想说的是,我们不应该完全按照步骤来做,而是运行自己的程序,根据错误提示,修改相应错误的部分,方为快速解决问题之道!

http://blog.sina.com.cn/s/blog_4af4d81f0101dk38.html

http://blog.csdn.net/masibuaa/article/details/22855473

http://blog.csdn.net/pozen/article/details/7103412

http://blog.csdn.net/dreamd1987/article/details/7399151

http://blog.csdn.net/pozen/article/details/7103412




内容概要:本文提出一种基于灰狼优化算法(GWO)优化改进互补集合经验模态分解(CEEMDAN)的混合储能风电功率平抑策略。通过GWO算法对CEEMDAN的关键参数(如白噪声幅值、最大本征模态函数数量等)进行全局寻优,显著提高了信号分解的精度与自适应性,有效克服模态混叠与残余噪声问题。在此基础上,将分解后的风电功率序列按频域特征分配给电池与超级电容构成的混合储能系统,充分发挥电池长时储能与超级电容快速响应的优势,实现高频分量由超级电容平抑、低频分量由电池承担的协调控制。结合Matlab平台完成算法仿真与系统建模,验证了该方法在平抑风电功率波动、降低储能系统综合损耗、延长设备寿命及提升电网电能质量与运行稳定性方面的优越性能。; 适合人群:具备一定电力系统分析、可再生能源并网技术、现代信号处理(如EMD类方法)及智能优化算法基础的研究生、科研人员及从事新能源发电控制、储能系统设计与智能电网调度的工程技术人员。; 使用场景及目标:①应用于风电场配套混合储能系统的实时功率协调控制,提升并网友好性;②优化非平稳、非线性风电功率信号的自适应分解精度,服务于后续预测与调度;③结合GWO等群智能优化算法,提升储能系统在平抑可再生能源波动中的动态响应能力、运行经济性与工程实用性。; 阅读建议:建议读者结合提供的Matlab代码深入理解GWO优化CEEMDAN参数选择机制与混合储能功率分配逻辑,重点关注信号分解效果评价指标(如相关系数、均方根误差)与储能系统性能指标(如SOC变化、功率应力)的关联分析,可进一步拓展至多目标优化、在线滚动优化及其他智能算法(如鲸鱼优化、麻雀搜索)的对比研究。
代码下载链接: https://pan.quark.cn/s/ce7b749cac89 家政上门预约服务小程序源码是一款用于构建专业家政门到门预约服务应用的小程序软件,能够帮助用户创建一个独立的品牌中心,不仅有助于构建一种身临其境的客户体验,而且能够以「美图秀秀」风格的方式展示专业的维修项目以及维修人员,使得服务信息一目了然。该源码主要适用于单一区域(或无需设置城市),不支持企业直接入驻(企业可以选择以个人身份进行入驻),其后台系统功能完备,订单分配方式丰富多样。维修人员能够参与订单的竞争获取,管理员则有权进行订单的指派,同时系统支持客户自主选择维修师傅,并配备了分销与促销、会员优惠、积分兑换、子卡使用等多种营销手段。源码所含功能:城市定位:允许设置多个城市,一旦启用城市功能,客户在进入首页时将自动进行位置识别,同时在首页和下单页面对客户是否位于运营城市进行提示。注意:每个城市提供的服务的种类相同,此功能并非城市加盟或代理功能,城市设置的主要目的是提醒客户当前所在城市非运营区域。下单途径:提供多种下单方式,包括选择服务下单(可选择配件/可直接选择师傅/仅显示后台设定的距离范围内的师傅)、次卡下单(需先购买次卡/次卡可设定使用次数和有效期)、管理员派单(客户需扫描绑定至个人微信)。抢单/派单:后台可设定距离范围,维修人员仅能参与范围内订单的竞争(抢单功能可根据需求关闭),管理员在派单页面会按照师傅与客户的距离进行排序,同时展示师傅的联系电话,以便在派单前与师傅进行电话确认订单:
内容概要:本文围绕“考虑光伏-储能-数据中心多能互补的园区容量优化配置”展开研究,提出了一种基于Matlab代码实现的综合优化模型,旨在通过深度融合光伏发电、储能系统与数据中心的算力负荷特性,实现园区内能源供给与信息负载的协同优化。研究构建了一个兼顾可再生能源出力波动性、储能系统动态响应能力以及数据中心弹性算力需求的多目标优化框架,采用先进的优化算法求解光伏装机容量与储能配置容量的最优组合,以实现能源利用率最大化、运行成本最小化及碳排放最低化的多重目标。文中提供了完整的Matlab实现代码,涵盖数据预处理、模型构建、求解流程与结果可视化,便于读者复现、验证与拓展研究。; 适合人群:具备一定电力系统、能源工程、运筹学或自动化背景的科研人员、研究生及工程技术人员,尤其适用于从事综合能源系统规划、可再生能源集成、数据中心节能优化、低碳园区建设等相关领域的专业人士。; 使用场景及目标:①用于高校与科研机构开展多能互补系统容量配置的理论研究与教学示范;②为工业园区、数字经济园区、绿色数据中心等提供科学的能源系统规划与设计依据;③支撑智能微电网、虚拟电厂、碳中和园区等新型能源形态的仿真验证与决策支持。; 阅读建议:建议读者结合Matlab代码与技术文档同步研读,重点关注优化模型的数学建模逻辑、目标函数设计、约束条件设定及求解器调用过程,推荐在实际案例数据基础上调整参数进行仿真实验,以深入理解多能互补系统的协同运行机制与优化配置规律。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值