2014年8月9日土曜日

How to build pcl-1.7.1 on iMac (OS X ver. 10.9.4)

in Japanese

At first I tried to build libpcl by using the macports. After installing the libraries on which libpcl depends, I failed to build it. It seems difficult for me to install libpcl through the macports. So I decided to build it from the source code.

After downloading the source code from here, I decompressed it. The dependent libraries are already installed by the macports. Unfortunately an error caused the building to stop. The error is due to the definitions of the non-member template functions described in pcl-pcl-1.7.1/io/include/pcl/io/ply/ply_parser.h. It may be clang's bug. I fixed it in accordance with this site. The fixed code is as follows:
1. delete definitions of two functions named at: 2. delete definitions of funcions named at once more: 3. move the deleted four definitions to a different area as: Again make. I got an error as: Seeing this site, I fixed it as Again make. I had a different error: I gave up the compilation of all modules libpcl has. Since the modules that I am unable to compile are just ones relate to linemode, I excluded them from the building targets. To this aim, I commented out lines from 114 to 121 in pcl-pcl-1.7.1/tools/CMakeLists.txt. Again, make. Mission accomplished!
The sample code worked well.

2014年8月6日水曜日

Coatesの方法 追記

先に考察したCoatesの方法について、クラスタリングの数 $K$ を変えた結果を示す。その他のパラメータは先と同じである。 テスト画像は100枚である。

1. MITforest/MITmountainの組


$K$ accuracy accuracy(Hellinger Kernel)
1000 81%(81/100) 86%(86/100)
1500 86%(86/100) 86%(86/100)
2000 69%(69/100) 88%(88/100)


2. industrial/CALsuburbの組


$K$ accuracy accuracy(Hellinger Kernel)
1000 88%(88/100) 97%(97/100)
1500 88%(88/100) 97%(97/100)
2000 97%(97/100) 98%(98/100)


3. MITmountain/MITopencountryの組


$K$ accuracy accuracy(Hellinger Kernel)
1000 75%(75/100) 83%(83/100)
1500 64%(64/100) 87%(87/100)
2000 87%(87/100) 81%(81/100)


4. 考察

  1. 最後の組の $K=2000$ の場合を除けば、Hellinger Kernelを使用したときの識別率は、それを使用しないときより低くなることはない。
  2. 最後の組の $K=2000$ の場合を除けば、Hellinger Kernelを使用したときの識別率は、$K$ が大きい程高くなる。
  3. ただし、Hellinger Kernelを使わない場合も考慮に入れると、$K$ の増加がそのまま識別率の向上につながるわけではないことが分る。
今回使用した識別器は以下の2種類である。
  1. 線形SVM
  2. Homogeneous Kernel Mapという手法により導入したHellinger Kernel

5. テスト画像の例


以下に各カテゴリのテスト画像の例を示す。

〜 MITforest 〜


〜 MITmountain 〜


〜 industrial 〜


〜 CALsuburb 〜


〜 MITopencountry 〜