close

由於專題需要parsing clothes
所以找到了這個opensource的code
http://vision.is.tohoku.ac.jp/~kyamagu/research/clothing_parsing/
不過在使用上遇到不少問題
因此在部落格上紀錄一下

如果只是照他README上面寫的乖乖的只打sbu.make
一開始就會看到一大堆的訊息
然後就會選擇性的只看下面好幾行的
Building with 'g++'.
MEX completed successfully.
看到completed successfully就會自以為一切都沒問題
但其實中間藏了不少error
需要一個一個慢慢解
(訊息很多但還是要面對阿QQ)

首先要先確定matlab的mex用的gcc和g++版本都是4.7.x(或以下)的
就是去/usr/bin下面看有沒有gcc-4.7.x之類的東西存在
但存在不代表它一定會用到(因為有可能同時好幾個版本的gcc存在)
所以建議是直接重新建立soft link
建立soft link的方法可以參考這裡:
http://www.cyberciti.biz/faq/creating-soft-link-or-symbolic-link/
總之就是先rm gcc和rm g++(記得要sudo)
然後sudo ln -s gcc-4.7.x gcc (g++方法一樣)
這樣就把gcc/g++的版本更新了


上述完成後編譯時還是會遇到不少問題
出現的error大致上長這樣
[svmpredict.mexa64] Error 255
然後說什麼CC#g++ not found之類的
要解決這個問題就是去/ib/+libsvm和/lib/+liblinear下面兩個的MAKEFILE裡面把

MEX_OPTION = CC\#$(CXX) CXX\#$(CXX) CFLAGS\#"$(CFLAGS)" CXXFLAGS\#"$(CFLAGS)"

改成

MEX_OPTION = CC=$(CXX) CXX=$(CXX) CFLAGS="$(CFLAGS)" CXXFLAGS="$(CFLAGS)"

就好了
參考:http://stackoverflow.com/questions/24599491/installing-liblinear-on-matlab-r2014a

還沒結束
接著還會遇到
/usr/bin/ld: cannot find -lboost_program_options-mt
collect2: ld returned 1 exit status
make: *** [tests/testdai] Error 1
這時請進到/lib/libdai裡的Makefile.LINUX

BOOSTLIBS_PO=-lboost_program_options-mt
改成
BOOSTLIBS_PO=-lboost_program_options
問題就解決了
參考:https://groups.google.com/forum/#!topic/libdai/rEGQLzvkJ2U

不過這次它就又會再出現
CXX#g++ not found
make: *** [+libdai/dai.mexa64] Error 255
這樣的error
同樣在Makefile.LINUX裡面

MEXFLAGS:=CXX\#g++ CXXFLAGS\#'$(CCFLAGS)'
改成
MEXFLAGS:=CXX=g++ CXXFLAGS='$(CCFLAGS)'
問題消失~~~

然後換新問題
/usr/bin/ld: cannot find -lboost_unit_test_framework-mt
make: *** [tests/unit/var_test] Error 1
一樣把-mt刪掉就好了


大功告成~~~~終於阿~~~


然後要注意的是他的README似乎不是很準
有些上面說的function都不能用...
測試之後沒問題的作法大概就是

Parsing: (跑一張圖還滿久的)

im = imread('myphoto.jpg');
parser = sbu.ClothParser.default_parser;
photo = parser.parse(im,{'t-shirt','pants','shoes'}); % specific parsing


Display:

 

photo.segmentation.show_superpixels;
photo.segmentation.show;                        % Plain parse
photo.segmentation.show('image', photo.image);  % Overlaid parsing

% Adding a color bar in the plot
clothings = sbu.Fashionista.clothings;
photo.segmentation.show('image', photo.image, 'labels', clothings);

然後要看pose的話可以用

 

 

photo.pose.show;                         % Plain pose in xy coord
photo.pose.show('image', photo.image);   % Pose overlaid on an image

出來結果長這樣(pose的):

 

 

 

 


阿parsing結果長這樣:

 

 

他旁邊那個圖示條跟文字好像沒有很對到
但順序一樣就是了

其實結果沒有到想像中那麼好
但大致上也正確了

以上。

 

 

2016.9.25補充

若想單純estimate pose 

可以用以下方法

 

im = imread('myphoto.jpg');
estimator = uci.PoseEstimator.default_estimator;
boxes = estimator.estimate(im);
pose = sbu.Pose(boxes);
pose.show('image', im);

 

出來結果會像這樣

 

arrow
arrow
    全站熱搜

    慈 發表在 痞客邦 留言(0) 人氣()