Slide 1

Slide 1 text

OTAMA あるPHP拡張のお話 PHPカンファレンス関西2013 / HIDEO HATTORI

Slide 2

Slide 2 text

自己紹介 , , PHPがっつり使ったのはここ1年程度 CとかPythonとかZshとかが好き アプリケーション開発とか運営とかし ています Hideo Hattori @hhatto Github Bitbucket

Slide 3

Slide 3 text

今日話すこと CBIRって? php-otamaの紹介

Slide 4

Slide 4 text

OTAMAとは いわゆるひとつのCBIR(Content-based image retrieval) 画像同士の類似度を出力できる 画像をクエリに画像が検索できる https://github.com/nagadomi/otama

Slide 5

Slide 5 text

OTAMAPYとは otamaのPythonインターフェース PythonのC拡張でotamaライブラリをた たけるようにしたもの https://github.com/hhatto/otamapy

Slide 6

Slide 6 text

得意な亊 CとかPython CとかPython CとかPython CとかPython CとかPython CとかPython CとかPython CとかPython

Slide 7

Slide 7 text

ある日言われました 「もう少しPHPにも興味持ってください よ」と。

Slide 8

Slide 8 text

興味ないわけじゃないよ!! 得意な亊(C/Python) × PHP = PHP拡張モジュールを書こう!!

Slide 9

Slide 9 text

PHP-OTAMAとは otamaのPHPインターフェース いわゆるPHP拡張モジュール

Slide 10

Slide 10 text

使い方(類似度を求める) lena.jpg lena-affine.jpg

Slide 11

Slide 11 text

使い方(類似度を求める) 設定ファイル(otama.conf) {'driver': {'name': 'vlad_nodb'}}

Slide 12

Slide 12 text

使い方(類似度を求める) Python 実行結果 from otama import Otama db = Otama() db.open('./otama.conf') filename1 = 'images/lena.jpg' filename2 = 'images/lena-affine.jpg' print(db.similarity({'file': filename1}, {'file': filename2})) 0.362881481647

Slide 13

Slide 13 text

使い方(類似度を求める) PHP 実行結果 $db = new Otama(); $db->open("./otama.conf"); $filename1 = "images/lena.jpg"; $filename2 = "images/lena-affine.jpg"; var_dump($db->similarity($filename1, $filename2)); double(0.36288148164749)

Slide 14

Slide 14 text

使い方(類似画像を検索) 設定ファイル(otama.conf) { 'namespace': 'testnamespace', 'driver': {'name': 'color', 'data_dir': './data', 'color_weight': 0.2}, 'database': {'driver': 'sqlite3', 'name': './data/otama.sqlite3'} }

Slide 15

Slide 15 text

使い方(類似画像を検索) Python import os from glob import glob from otama import Otama db = Otama.open('test.conf') db.create_table() files = glob('images/*.jpg') + glob('images/*.png') kvs = {} for filename in files: kvs[db.insert(filename)] = filename db.pull() for result in db.search(5, 'lena.jpg'): print("file=%s, sim=%f" % (kvs[result['id']], result['similarity']))

Slide 16

Slide 16 text

使い方(類似画像を検索) 実行結果 file=image/lena.jpg, sim=1.000000 file=image/lena-768x768.jpg, sim=0.968963 file=image/lena-affine.jpg, sim=0.770081 file=image/lena-rotate.jpg, sim=0.747762 file=image/baboon.png, sim=0.303697

Slide 17

Slide 17 text

使い方(類似画像を検索) PHP まだ使えません!!

Slide 18

Slide 18 text

絶賛開発中 Pull-Requestお待ちしてます!! php-otama

Slide 19

Slide 19 text

参考資料 PHP Extension を作ろう第1回 - まず は Hello World 30分でわかる PHP Extensionの作り方 を学べる記事をかいたよー \(^o^)/ mongo-php-driver php-memcached

Slide 20

Slide 20 text

ご清聴ありがとうございまし た!! m(_ _)m