Pythonのいろいろごた混ぜライブラリ:yi01lib

何ができるの?

  • 画像から特徴ベクトル(CCV,HOG,GIST)を求める →類似画像検索に使える?
  • Web検索結果を用いた特徴語抽出 →京都の紅葉といえば?⇒[清水寺、大原、南禅寺...]みたいな
  • クラスタリング(K-Means,K-Means++,X-Means)とかページランクとかHITSとか

※研究で使うことしか実装してないので、すごく偏ったライブラリであることは承知の上でご利用ください。また、Linuxでしか動作しない関数が多いです。

ダウンロード

  • 現在進行中で作ってるので、Subversion@Googleコードを使っています。まずは適当なSVNクライアント(→例えばこれ)をあらかじめインストールしておいてください。
  • 以下のアプリケーションが入っていないとおそらく使えません
    • FFTW3(フーリエ変換のため)
    • ImageMagick(画像縮小のため)
    • OpenCV 2.0(ガウシアンフィルタとSURFの利用のため)
    • swig(OpenCVのPythonバインディングを利用するため)
    • Pythonのパッケージで、ctypes,cjson,opencv,numpy,scipy,imaging,psyco
  • チェックアウトでhttp://yi01lib.googlecode.com/svn/trunk/yi01libを適当なフォルダに落とせばOK。Linuxならsvn chechout http://yi01lib.googlecode.com/svn/trunk/yi01lib ./yi01lib とすればカレントフォルダにダウンロードできます。

利用例

画像の特徴ベクトルを求める、、、

from PIL import Image
from yi01lib.ImageProcess import FeatureVector

img=Image.open("hogehoge.jpg") #←画像は用意しておいてね
ccv=FeatureVector.CCV(img).GetVector()
hog=FeatureVector.HOG(img).GetVector()
gist=FeatureVector.GIST(img).GetVector()

print ccv
print hog
print gist

keypoints,descriptors=FeatureVector.SURF(img).GetVector(True)
print keypoints,descriptors
#SURFはOpenCVのメモリ管理の問題かわかりませんが、高い確率でセグメントエラーとなります。

ライバル語抽出とか

from yi01lib.LangProcess import TermExtractor

for tf in TermExtractor.FindRival(u"紅葉",u"京都"):
print tf[0],tf[1]
#▼出力
#奈良 65
#鎌倉 11
#箱根 10
#日光 9

for tf in TermExtractor.FindRival(u"京都 紅葉",u"大原"):
print tf[0],tf[1]
#▼出力
#嵐山 27
#高雄 25
#鞍馬 18
#嵯峨野 14
#貴船 9
#八瀬 8

for tf in TermExtractor.FindSubject(u"京都",u"大原"):
print tf[0],tf[1]

#洛北 12
#紅葉 6
#資格 4