meiqua / shape_based_matching

try to implement halcon shape based matching, refer to machine vision algorithms and applications, page 317 3.11.5, written by halcon engineers
BSD 2-Clause "Simplified" License
1.26k stars 484 forks source link

VS2019怎么开启加速? #59

Open xinsuinizhuan opened 5 years ago

xinsuinizhuan commented 5 years ago

MIPP tests

Instr. type: NO Instr. full type: NO_INTRINSICS Instr. version: 1 Instr. size: 0 bits Instr. lanes: 1 64-bit support: yes Byte/word support: yes in this SIMD, int8 max is not inplemented by MIPP in this SIMD, int8 shuff is not inplemented by MIPP

construct response map elasped time:0.120221s

templ match elasped time:0.0316569s

elasped time:0.154669s

matches.size(): 69

match.template_id: 0 match.similarity: 100

检测完成总共150多毫秒,怎么开启加速? 属性-》C/C++-》优化,优化已经选择:最大优化(优选速度) (/O2) 另外,启动openMP时,编译报错: 图片 图片 怎么破?

meiqua commented 5 years ago

SIMD选项可以在这找:

Yes, we will add an option to enable AVX2 in the drop-down menu at: Project Property Pages | Configuration Properties | C/C++ | Code Generation | Enable Enhanced Instruction Set.

openmp可参考

xinsuinizhuan commented 5 years ago

SIMD选项可以在这找:

Yes, we will add an option to enable AVX2 in the drop-down menu at: Project Property Pages | Configuration Properties | C/C++ | Code Generation | Enable Enhanced Instruction Set.

openmp可参考

非常感谢。但是openMP的问题,还是不知道怎么解决?那个链接已经失效。

meiqua commented 5 years ago

新链接 还有问题的话在这提就可以了,这样比较集中。

xinsuinizhuan commented 5 years ago

新链接 还有问题的话在这提就可以了,这样比较集中。

非常感谢。openmp已经可以用。我已经把三个都开启了: 1、SIMD:enable AVX2 Project Property Pages | Configuration Properties | C/C++ | Code Generation | Enable Enhanced Instruction Set.

2、openmp:enable openmp Project Property Pages | Configuration Properties | C/C++ | Language | Enable Open MP Support.

3、MO2: set o2 Project Property Pages | Configuration Properties | C/C++ | Optimization | Optimization, set to Maximum Optimization(Favor Speed)(/o2)

速度有所提升,但是最好108ms,平均115ms。还有没有更多的提升速度方案了?

meiqua commented 5 years ago

转成灰度图还能提高1/3吧。我这边默认的测试案例200万像素120ms,转灰度图80ms。

xinsuinizhuan commented 5 years ago

转成灰度图还能提高1/3吧。我这边默认的测试案例200万像素120ms,转灰度图80ms。

OK。let me have a try!

xinsuinizhuan commented 5 years ago

使用opencl 和 halide的案例有没有试过,效果怎么样?

meiqua commented 5 years ago

没有,不过原理上只读写一趟主存是极限了,应该就是halcon的程度

xinsuinizhuan commented 5 years ago

没有,不过原理上只读写一趟主存是极限了,应该就是halcon的程度

能达到halocn的程度,我觉得已经可以工业用了。20ms左右,可以满帧,至少30fps跑,足够了。

xinsuinizhuan commented 5 years ago

大佬,建议试试。我觉得是我们的希望!现在的成果,只能是实验室效果。

meiqua commented 5 years ago

哈哈是的,不过因为我已经够用了就没试了,以后有时间写写看

xinsuinizhuan commented 5 years ago

哈哈是的,不过因为我已经够用了就没试了,以后有时间写写看

哈哈。很期待啊。希望可以尽快看到成果。期待,再期待,直到望眼欲穿!

xinsuinizhuan commented 5 years ago

转成灰度图还能提高1/3吧。我这边默认的测试案例200万像素120ms,转灰度图80ms。

我刚试了试,使用灰度图检测: MIPP tests

Instr. type: AVX Instr. full type: AVX2 Instr. version: 2 Instr. size: 256 bits Instr. lanes: 2 64-bit support: yes Byte/word support: yes

construct response map elasped time:0.103375s

templ match elasped time:0.007104s

elasped time:0.113017s

matches.size(): 22

match.template_id: 4 match.similarity: 83.3333 test end 没有达到您说的可以降低到80ms的效果。您除了设置那三处外,还设置了其他的地方没? 比如: 1、line2Dup::Detector detector(30, {4, 8});?? 2、 shape_based_matching::shapeInfo_producer shapes(img, mask); shapes.angle_range = {0, 360}; shapes.angle_step = 1; shapes.produce_infos(); 3、auto matches = detector.match(test_img, 70, ids);

meiqua commented 5 years ago

这一行

xinsuinizhuan commented 5 years ago

这一行 不是直接把图片转成灰度图(也就是直接用黑白相机拍摄),训练和测试都用灰度图?而是训练可以彩色,测试的时候,用cvtColor(test_img, test_img, CV_BGR2GRAY);转就可以达到80ms效果?

meiqua commented 5 years ago