Part Based Models demo程序分析

程序主要用了这几个函数:

[dets, boxes] = imgdetect(im, model, 0.4);
bbox = bboxpred_get(model.bboxpred, dets, reduceboxes(model, boxes));
bbox = clipboxes(im, bbox);
top = nms(bbox, 0.5);
result = bbox(top,:);

其中[dets, boxes, info] = imgdetect(input, model, thresh, bbox, overlap)

调用了:gdetect(pyra, model, thresh, bbox, overlap);

pyra为Hog的金字塔特征值,model为模型参数,thresh为分数的阈值。后面两个参数可以不写。

之后我们会得到dets和boxes两个矩阵

代码里面的解释为:

% dets is a matrix with 6 columns and one row per detection.  Columns 1-4 
% give the pixel coordinates (x1,y1,x2,y2) of each detection bounding box.  
% Column 5 specifies the model component used for each detection and column 
% 6 gives the score of each detection.
%
% boxes is a matrix with one row per detection and each sequential group
% of 4 columns specifies the pixel coordinates of each model filter bounding
% box (i.e., where the parts were placed).  The index in the sequence is
% the same as the index in model.filters.

我的理解为dets为root filter检测的结果,boxes为part filter检测的结果

是root filter的检测结果其实已经不错了(就是hog的检查结果)

bboxpred_get用来得到预测的结果,我觉得更像是一个检测结果融合

clipboxes用来优化窗体结构,不影响结果

nms用来去除重叠的检测窗口

其实我觉得程序可以简化成这样:

[dets, boxes] = imgdetect(im, model, 0.4);
bbox = clipboxes(im, dets);
top = nms(bbox, 0.5);
result = bbox(top,:);
不过这样就没用用到parts model的意思了

完全就是hog检测了。没有意义了。自娱自乐写就好。

最后用:

showboxes(im, dets);
来显示检测的结果。

好的,下面是建造者模式的Java程序示例: ``` // Product类,表示需要被构建的复杂对象 class Product { private String partA; private String partB; private String partC; public void setPartA(String partA) { this.partA = partA; } public void setPartB(String partB) { this.partB = partB; } public void setPartC(String partC) { this.partC = partC; } public String getPartA() { return partA; } public String getPartB() { return partB; } public String getPartC() { return partC; } } // Builder类,定义了如何构建Product对象的接口 abstract class Builder { protected Product product = new Product(); public abstract void buildPartA(); public abstract void buildPartB(); public abstract void buildPartC(); public Product getResult() { return product; } } // ConcreteBuilder类,实现了Builder接口,构建具体的Product对象 class ConcreteBuilder extends Builder { public void buildPartA() { product.setPartA("PartA"); } public void buildPartB() { product.setPartB("PartB"); } public void buildPartC() { product.setPartC("PartC"); } } // Director类,使用Builder接口来构建Product对象 class Director { private Builder builder; public Director(Builder builder) { this.builder = builder; } public void construct() { builder.buildPartA(); builder.buildPartB(); builder.buildPartC(); } } // 测试程序 public class BuilderDemo { public static void main(String[] args) { Builder builder = new ConcreteBuilder(); Director director = new Director(builder); director.construct(); Product product = builder.getResult(); System.out.println(product.getPartA() + " " + product.getPartB() + " " + product.getPartC()); } } ``` 这个示例中,Product类表示需要被构建的复杂对象,Builder类定义了如何构建Product对象的接口,ConcreteBuilder类实现了Builder接口,构建具体的Product对象,Director类使用Builder接口来构建Product对象。在测试程序中,首先创建了一个ConcreteBuilder对象和一个Director对象,然后通过Director对象来构建Product对象,最后获取构建完成的Product对象并输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值