新社会人のための「チケット駆動議事録」

新社会人のための「チケット駆動議事録」というキャッチーなタイトルにしてもうすこしポップな内容にすればよかった。

あとは、よく言われる「重要×緊急でない」 デキる人の秘密は「第二領域」なんてみんな知っているんだから、もうこっちにシフトしてると思うんだけど、これもキャッチーなタイトルつけときゃよかった。

本文を解析してキャッチーなタイトルを考えくれるサービスないかなぁ。

なければ作ってみようかな。

最近飲んだ日本酒とか

正雪の誉富士のやつ。辛口純米とあるように、すっきりしている感があるので、燗をつけてみたけどやっぱりスッキリしすぎてた。濁りのほうが旨いな。誉富士ってどうなのかなぁ?静岡県全体としてプッシュしないといけないんだろうけどどうなのかなぁ?って言いたい。

1368650056

國権の特純。夢の香という酒米を使用している。ラベルの綺麗さとは対照的に結構どっしり感のある味わい。山廃が得意な蔵なのかな。

1368650058

臥龍梅の純米吟醸の山田は、安定の美味さだな(僕が冒険してないとも言える)。「あー日本酒切らしてるわー」って時に犬の散歩がてら近所の酒屋に寄って買う場合は大体臥龍梅になるというかそんな感じ。

1368650059

白隠正宗からでている米焼酎。これは美味い

1368650060

バグではなく仕様

写真はパグです。

1368783238

from base64 import encodestring, decodestring
from random import randint

mat = encodestring(open("orig.jpg", "rb").read())
gt = "".join([str(randint(0, 9)) if c == '0' and randint(0, 9) < 1 else c for c in mat])
open("glitched.jpg", "wb").write(decodestring(gt))

Harris corner detectorとSIFT

実践コンピュータビジョンだけではいまいちHarris corner detectorとSIFTの理解が出来なかったので調べた。記述子の意味がわからないと気持ち悪いので。

ProductName 実践 コンピュータビジョン
Jan Erik Solem
オライリージャパン / 3150円 ( 2013-03-23 )


大体は理解した。

Harris corner detector

エッジとコーナーの検出アルゴリズム。本を読んだ時にはエッジとコーナーって何が違うねんって思っていたけど

微分値が特定方向に大きい場合はエッジ,多方向に大きい場合はコーナーと考えるHarris Corner Detection

という説明を読んで、あー、なんだそういうことかと気がついた。

SIFT

Harris corner detectorがわかっていれば理解しやすかった。下のスライドがわかりやすい

実装は次のpdfを見れば良い

実践コンピュータビジョン 7-10章

6章の画像クラスタリングを含めて7-9章は画像認識を扱っている章になっている。10章はOpenCVを触り程度に紹介。

7章は画像から記述子を取り出してきて、テキストマイニングするような感じで画像検索を行う。というよりtf-idf法を使っているだけなのでわかりやすい。最終的にCherryPyを使ってWebアプリを作っているが、色々応用が効きそうなヒントが得られた。

8章は画像認識で、これまた面白い。最初にkNNを使ってSIFT特徴量から手話画像の認識をさせる。でこれの精度を改良するためにいくつかのアルゴリズムを試す。

最初はベイズ分類+SIFTをPCAで次元削減したものを利用するが精度が改善しない。しかしこの手法の良いところは元のデータを保持しなくていいところ。

次にSVMを使って精度が改善するという流れ。次元を減らしても精度がそれほど落ちないとか、よくある話に持っていく。

今時なら、このあとにRandomForestが出てきて云々がはじまるのが定番なんだけど、この本ではそこまでは説明していないので、興味があればRFまでやってみるのがいいかもしれない。

最後に多クラスSVMとして数独の写真を認識する例がある。3章でやった射影変換を利用して斜めに移った写真でもきちんと正方形になおしてから分類するという内容で興味深かった。

9章は画像の領域分割で「背景を分離する」みたいな話。最大フローとかそういう話題。最初ベイズ分類器が出てくるのがよく分からなかくて悩んだんだけど、図9.2を見ながらよく考えたら理解した。

10章はOpenCVの基本なので。興味を持ったらドキュメントを読むか他の本をあたれというところか。

ProductName 実践 コンピュータビジョン
Jan Erik Solem
オライリージャパン / 3150円 ( 2013-03-23 )


まとめ

あまり手を動かしてないので、次は章末の演習問題も解きながらやってみるかもしれない。入門機械学習の次に読む本としても面白いかも(Pythonを書けることが前提になるかもしれないが)。

OpenCVとScipyのドキュメントはひと通り目を通しておく。

他に気になる本

ProductName 詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識
Gary Bradski
オライリージャパン / 4830円 ( 2009-08-24 )


ProductName Learning Opencv: Computer Vision in C++ With the Opencv Library
Gary Bradski
Oreilly & Associates Inc / 6309円 ( 2013-06 )


フロントエンド(webブラウザ)でPythonを使いたい時の選択肢を調べてみた

普段ブラウザまわりのjavascriptが必要な時にはCoffeeScriptで書いているけど、最近ではHaskellでもかけるしPythonでもかけるようになってきているので調べてみた。尚、Fayに関しては「Introduction to Fay」がわかりやすい。

見つかったのは次の5つのプロジェクト。最初の2つはjavascriptで実装されたPython実行環境で残りの3つはPythonコードをJavascriptに変換するトランスレータ。

Brython

ゴールが非常にわかりやすい。

Brython's goal is to replace Javascript with Python, as the scripting language for web browsers.

CoffeeScriptなんかとは競合しますね。

<script type="text/python" src="test.py"></script>

で実行できるのでpythonでwebアプリが作れます。Galleryも面白いのが増えてた。カンバンエミュレータとかヨーロッパの国名一致させるデモとか。

Compiling and running によるとjavascriptのパーサを通して構文解析して構文木をつくってjavascriptを出力してevalしている。そのため最初立ち上げると若干モサッと感はある。あとjavascriptでモジュール書か必要があるのかな(import implementationのところ)

それからjQueryみたいなjavascriptのライブラリを使いまわせるかどうかは分からなかった。ajax用のライブラリとか実装しているところをみるとできないのかなぁ(要調査)

Skulpt

ブラウザでPythonの実行環境を提供するのが目的なのかなぁ。立ち位置がよくわからん。教育を目的としているのかなぁ。

PythonScript

コードを読んだ感じでは、pythonで書かれたトランスレータを通してjavascriptにコンパイルするという流れ。まず最初に、コードがPythonのastモジュールでパースされ抽象構文木に変換された後、PythonToPythonJSにより抽象構文木がちょいちょいといじられてPythonJS(これまた抽象構文木の状態)という中間言語というか制限付きのPython(RPythonみたいなニュアンス?)みたいなものにされる。その後javascriptにダンプされてます。

ドキュメントもあわせて読むとわかりやすいかも。それからPyPyを参照しているのだけどPyPyも同じような流れなのだろうか?あとで調べるかも。

livereloadなんかのサポートを借りればさくさく開発出来そうという意味で、イメージとしてはSass/Compassに近いかなぁ。

JSで囲めば素のjavascriptとして実行されるのと、jQueryがJ()で使えるようになっている。fayがpreludeを置き換え版を提供しているように、PythonScript用の標準モジュールみたいなものを提供することになるのだろうかな?

あとCreating bindings is very easy, jQuery bindings are available. と説明されているようにバインディング書くのは楽そうなので、既存のjavascript資産は有効利用できそうな感じなんだけど、手で書かなきゃいけないのかなぁ。あとでなんか書いてみる。

Pyjaco

py2jsのフォークらしい。PythonScriptと似た感じだけど開発はアクティブではない感じ。version1.0だからひと通り実装できたと見るべきなのかなぁ。

jQueryの呼び出しはこんな感じ。デコレータ使えるのはいいかも。

Pyjs

webアプリケーションを作るためのフレームワークを目指しているらしい。

pyjs contains a Python-to-JavaScript compiler, an AJAX framework and a Widget Set API. pyjs started life as a Python port of Google Web Toolkit, the Java-to-JavaScript compiler.

もともとpyjamasという名前だったのが、名前を変えて新しい開発体制で動いているそうだ。PythonScriptやPyjaco同様トランスレータでjavascriptに変換しているとのことだが、ソースコードをちゃんと読んでないので詳しいところはわからん。

PyjsもJS()で囲めばjavascriptをそのまま実行するらしくjQueryの呼び出しはこうやれば良いらしい。

まとめ

自分が使うならPyjacoがいいかなと思うが、開発の勢い次第ではPythonScriptのほうが充実しそうかなぁ。多分両方使って使いやすい方を選択することになると思う。Brythonも気になるけどjQueryを一緒に使えるのかどうかわからないのとCoffeeScriptみたいにコンパイルされたJavascriptを出力できるのかどうかわからない(プロダクション環境では毎回コンパイルさせたくない)のでそこら辺調べてから決める。

個人的にはbrythonでpython版Spineを書いてみるのは面白いかなと思っているんだけど。まぁそのうちpython版のクライアントサイドMVCフレームワークはなんか出てくるんじゃないかなぁ(出て欲しいなぁ)と。

インタフェースデザインの心理学

Design Rule Indexよりこちらのほうが好み。心理学的な観点からデザインの指針を説く。

例えば、クリック数が少ないほうユーザーにとって使いやすいという常識を、「それはなぜなのか->迷いにくいかkら」ともう一段深い視点にたって、

クリックを増やすか、ユーザーに考えさせるかで迷ったらクリックを増やすほうをとりましょう

というアドバイスされている。

また、目標勾配効果というものもあって、スタンプが押されていない10個のマスとスタンプが2個押された12個のマスでは後者のほうがスタンプを集めるのが早いそうだ。これはゲーミフィケーションなんかでも出てくる話題だと思うが、最近のサービスでよく見られる仕組みですね。

実践コンピュータビジョン 4-6章

面白いのでどんどん読んでいる。

ProductName 実践 コンピュータビジョン
Jan Erik Solem
オライリージャパン / 3150円 ( 2013-03-23 )


4章はピンホールカメラモデルを使って拡張現実の基礎っぽいあたりを静止画像に対してやっている。つづいて5章では多視点の幾何に移っていくが、こっちはあまり興味が沸かなかったのでとりあえず読み流した。

4章はもうちょっとサンプル的に面白いものを選択して欲しかった。よくあるOpenGLのティーポットが乗っかっててもなぁ。あとで自分でいじってみてなんか他のものをあわせてみる。こびとのモデルとかあればいいんだけど。

6章からは画像のクラスタリングの話に移って、7章で検索、8章が画像認識、9章が領域分割なので6-9がひとまとまりだと思うけど、今日は6章までしか読んでない。K-meansとスペクトラルクラスタリングというオーソドックスな手法。 K-meansはあちこちに分かりやすい説明(これとか)があるけどスペクトラルクラスタリングは本書の説明だけではわかりにくいかもしれないので、きちんと理解したければ「Rで学ぶクラスタ解析」をよめばよい。

ProductName Rで学ぶクラスタ解析
新納 浩幸
オーム社 / 3360円 ( 2007-11 )


SciPyでK-meansって初めて書いたけど、わかりやすかった。

from scipy.cluster.vq import *
from pylab import *
import numpy as np

# サンプルデータを作成
class1 = 1.5 * np.random.randn(100, 2)
class2 = np.random.randn(100, 2) + np.array([5,5])
features = np.vstack((class1, class2))
# 分類
centroids, variances = kmeans(features, 2)
code, distances = vq(features, centroids)
# 可視化
figure()
ndx = where(code==0)[0]
plot(features[ndx,0], features[ndx,1], '*')
ndx = where(code==1)[0]
plot(features[ndx,0], features[ndx,1], 'r.')
plot(centroids[:,0], centroids[:,1], 'go')
axis('off')
show()

出来た図

kmeans

初夏を味わう 黒龍の会

酒のいわせさん主催の酒の会に久しぶりに参加。御殿場線も久しぶりに乗った。

1368311018 1368311013

徳利もグラスもずらり

1368311015 1368311020

仕込み水美味い。白山系の軟水で、地下75mのとこから組み上げた井戸水だそう。

1368311016

大吟醸「しずく」で乾杯。日本酒の繊細さを考えると、大吟醸から始まるのは基本ですね。

1368311021 1368311031

利休餡がけには吟十八号を。フレッシュ生(一回火入れ)

1368311023 1368311024

刺身には吟醸の精米歩合50%のものをあわせてた。

1368311026 1368311028

鮎と鴨とか色々。

1368311029 1368311032

アイナメと水茄子だったかな。ココらへんから燗酒に突入。燗旨い。

1368311034 1368311036

漬物とミョウガの入った粥。これは美味しかった。

1368311037 1368311039

黒龍の酒粕をつかったデザート、吟醸か大吟醸の酒粕で米の食感が残っていて美味しかった。

1368311041

クイズで頑張ったので、Tシャツをゲット。にでも着ていこうか。

1368311042

食事、酒の量もちょうどよかったうえに、クオリティも非常に高かったので満足。

最近の家庭菜園(130512)

Sassが使いやすいので、ブログのデザインをSassベースのフレームワークであるFoundation4に変えようと思っているのだが、まとまった時間がとれないので、もうちょっと手軽な家庭菜園管理用のグリッドシステムを作って遊んでみた。

レスポンシブなグリッドデザインだとwidthを%で指定していくんだけど、それだと高さがうまく指定できなくて困っている。CSSだけでうまく指定できるんだろうか?それともjavascriptで高さと幅を計算する必要があるのかわからん。

とりあえず600px x 600px固定で50pxの12グリッドシステムで書いているがSassのforループで1x1から12x12の区画をサクッと作れるので便利。正直cssだけで書く気にはなれん。ちなみに色はFlat-UIのcolor-swatchを拝借した。

家庭菜園

130506

ゴールデンウィークの最終日は、トマトとナスを定植してきた。除草が面倒なのと、経験上マルチをしたほうがナスの生育がいいので、マルチングも施した。

1368318316 1368318318

130510

雨がふる前にゴーヤを定植。人参は順調な感じだけど、発芽率が悪い。

1368318319 1368318321

ニンニクは葉が枯れてきたので、去年よりは早めに収穫することになりそう。ジャガイモも花が咲いてた。

1368318322 1368318324