しえログ

qiita との使い分けに悩んでる

Grey Level Co-occurrence Matrix メモ

Content-Based Image Retrieval に関する以下の比較検証論文読んでたら初っ端からして聞いたことのない手法だったので調べたメモ。

[1208.6335] Comparative Study and Optimization of Feature-Extraction Techniques for Content based Image Retrieval

Grey Level Co-occurrence Matrix とは

略して GLCM 。
サイズ { m } x { n }{ p } 階調のグレスケ画像 { I } に対して、各要素が以下の計算で求められるサイズ { p } x { p } の共起行列 { C } のこと。

{ \begin{eqnarray}
C_{\Delta x, \Delta y}(i, j) = \sum_{x=1}^n \sum_{y=1}^m
  \begin{cases}
    1 & \mathrm{if} \ I(x,y) = i \ \mathrm{and} \ I(x+\Delta x,y+\Delta y) = j\\
    0 & \mathrm{otherwise}
  \end{cases}
\end{eqnarray} }

つまり、オフセットによって定まる位置関係上のピクセル値パターンのカウントを階調分行って出来上がる行列のこと。
テクスチャ解析法としてかなりポピュラーらしい。

画像での一例

簡潔のため、下記のような4階調の4x4画像で考える。

0 0 1 1
0 0 1 1
0 2 2 2
2 2 3 3

このとき、  { (\Delta x, \Delta y) = (1, 0)} の場合は以下のような GLCM になる。

2 2 1 0
0 2 0 0
0 0 3 1
0 0 0 1

参考サイト

定義的にはもうちょい色々あるらしいけど、一旦よく使われるらしい second order なるやり方でした。

部署間調整能力

週末にちょっと色々聞いたので憂さ晴らしポエム。

他部署間で色々やり取りする以上、確かにバジェットなどの問題はある。 今回はそこについては完全にクリアしたつもりだったし、こちらと先方それぞれの御上の同意もいただいていた(はず)。

ただ、完全に予想外のところで揉め事があったらしく、寝耳に水だった。 どうやら優先的に話を通しておくべき人に話を通しそびれていたらしい。

結構な温度感らしく、何勝手にやってんだ、みたいな感じで先方が詰められたという話を聞いた。 そこについては本当に申し訳なく思うし、きっと自分の進め方のミスなんだろう。

しかしながら、話をしておくべき人を過不足なくリストアップするのは正直完璧にはできないと思うし、そもそもなんで実態が何なのかの把握もせずに激怒?してるのか謎。 普通にそっちから話を聞きにきてもいいのではないかと。

まーとりあえず直接俺に話がくるまで一旦待機かな。 来るのか知らんけど。


今週もあんま実装できなかった。。。 ジョギングも土曜日しかできてないし、来週はもっとシャンとしよう。 GW 最初の土曜はオタクのフレンズと一緒に東武動物公園に行く予定である。

デブの引っ越し

流行りの mastodon に、 mstdn.jp 上で登録してみた。

mstdn.jp

更新頻度どうなるかはさっぱりわかりません。 自分でインスタンス持ってプライベート垢作れば自分用オンラインメモになるんかなーとか思ったけど、それもフツーにツイッターでいいんじゃね、ってなった。


ここ2週間、オフィスの席替えの関係で別ビルでの勤務を余儀なくされていたのだけれど、明日から元のビルに戻れることになったのでせいせいしている。 明日の朝も少しは晴れやかな気分で迎えられそうだ。

あのビルは協力子会社のオフィスが入っていた関係で少し前に毎日訪問していたのだけれど、正直ビルの作りも廊下のニオイも何もかもがあまり好きになれなかった。古めの雑居ビルのあの感覚。わかるかな。わからないか・・・。

あと、今の会社では勤務地というか勤務ビルの変更は結構頻繁で、その一貫と思えばまぁそこまで辛くはないんだけど、大勢での引っ越しでない限り業者も使えず1人で運ばなきゃならないのはどうにかしてほしい。あの雨の中の4往復は今後忘れることはないであろう。


昨日は飲みのあと、見事に天一に吸い込まれてしまった。反省して今日のジョギングはちょっと暑い中頑張ったけど、昼飯に焼肉丼、夜にハンバーガーを食してしまったので完全なるアウトである。こんなんで痩せたいとかほざいてるんだから笑えますね。

R によるデータサイエンスの第2版を買った

この週末は気になっている映画が3本も同時多発的に上映しはじめたらしい。

近場の映画館で上映してたら平日のレイトショー狙って会社帰りにでも観ようかな。


今日は池尻の図書館でちょっとばかり勉強した後、渋谷まで歩いてジュンク堂へ。 もし物理的に積んでいたらそろそろ倒れてきそうな積読に懲りずにまた新しい書籍に手を出してしまった。

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによるデータサイエンス データ解析の基礎から最新手法まで

R によるデータサイエンス本の草分け的存在の1冊といっても過言でないであろう書籍の第2版。 大学にいたころ、学部の卒業研究に取り組んでいるときに R を利用し始めたのだけれど、とりあえずなんか関連書籍で慣れてみるか、ってことで手を出したのが初版との出会いだった。当時は R の情報はお世辞にも多いとは言えなかった状況だったし、数少ない日本語のありがたい書籍だったことを覚えている。

結局分析手法の理論的な側面を深堀りするに至らずコードの写経がメインだった気もしなくもないけど、自分が R をイチ言語として利用するようになるきっかけを作ってくれた書籍なので、実に感慨深い。院進学後も授業の課題を R で解いてたりしたし、この書籍の影響はとても大きかった。奇しくも今は仕事でもこうしてデータ関係の業務に携わるようになっているし、タイミングが良いというか縁があるというか。

最近は R よりかはもっぱら Python なのだけれど、分析手法を俯瞰出来る内容でもあるので、あえて Python に置き換えて実践してみるのも悪くはない。 ともあれ出版おめでとうございました。またお世話になります。


最近 PS3 の電源を入れてもその直後に電源が切れる頻度が高くなってきていてとてもツライ。セーフモードから起動すればなんとかなっているんだけど、いちいち電源ボタンの長押しを繰り返さなきゃいけないし、そろそろ本気で PS4 への乗り換えどきかなぁ、などと。 アニメ録画の関係でここ5年以上ほぼ毎日起動しているし、寿命といえば寿命な気もしなくもないので怒りは感じずにただただ物悲しくなってきている春の夜だった。

ECCV2016 の Deep Automatic Portrait Matting 読んだメモ

タイトル

Deep Automatic Portrait Matting

著者

Xiaoyong Shen, Xin Tao, Hongyun Gao, Chao Zhou, Jiaya Jia

概要

肖像画的な写真に対する高精細なマスク画像を、ユーザインタラクションなしに自動で生成する CNN-based な仕組みを提案。
例えば髪の毛の毛先までしっかりとアルファブレンドできるようなセグメンテーションマスクを生成できる。
人が自分で前景・背景を指定するやり方はプロじゃない人には難しいし、プロでも難しい。
これを自動で解決するのが image matting と呼ばれる手法であり、入力画像 { I } を背景 { B } と前景 { F } に分解するものである。
提案手法(ネットワーク)は

  • 新しい要素(前景・背景・不明領域のラベルスコアと shape mask )を含んだ、前景・背景・不明領域に分割する FCN
  • 前後方型の image matting レイヤ

を利用してこの問題へ対処する。

利用技術・前提知識・用語

  • portrait image
  • image matting
    • 画像から前景のアルファ値を抽出する処理
  • ill-posed
    • 不良設定問題
  • trimap
    • ここでは前景、背景、処理対象のそれぞれの領域を表している
  • FCN
    • Fully Convolutional Network
    • 論文: Fully convolutional networks for semantic segmentation
  • CRFasRNN

手法

システム全体の入力・出力は以下。

入力: 肖像画{ I }

出力: アルファマット { \mathcal{A} }

Trimap Labeling

幾つか新しい要素を混ぜ込んだ FCN を使って前景・背景・不明な領域に分割する。

入力画像のピクセルが前景・背景・不明のどれに属するのかを予測し、 trimap labeling を行う。これをピクセル分類問題として FCN-8s をベースにして解き、入力画像のピクセルに対して以下の3つの値と、 { shape\:mask } というもう一つのチャンネルを出力する。

{ F^s, B^s, U^s }: 前景・背景・不明のそれぞれのスコア

{ shape\:mask }: アルファマットを合理的に初期化するためのチャンネル。学習データである portrait-matte ペア { \{P^i, M^i\} } に対して、平均をとることで生成する。数式は省略。

{ P^i }: 顔器官の特徴点(ランドマーク?)

{ M^i }: ラベル付けされたアルファマット

Image Matting Layer

FCN-8s の結果で得られた { F^s, B^s, U^s } を元に { F, B } の probability map (確率分布って訳しておk?)を以下の softmax 式で求める。

{ F=\displaystyle \frac{\exp(F^s)}{\exp(F^s)+\exp(B^s)+\exp(U^s)} }

そうすると { \boldsymbol{\rm{F}}=\mbox{diag}(F), \boldsymbol{\rm{B}}=\mbox{diag}(B) } として次式によりアルファマットを求める事ができる。

{ \min\lambda \mathcal{A}^T \boldsymbol{\rm{B}} \mathcal{A}+\lambda(\mathcal{A}−\boldsymbol{1})^T \boldsymbol{\rm{F}} (\mathcal{A}−\boldsymbol{1})+\mathcal{A}^T\mathcal{LA} }

{ \mathcal{L} }: 入力画像 { I } におけるラプラシアン行列

{ \lambda }: データ項とラプラシアン行列とのバランスを取るための係数

そして、この解法に従って、{ \mathcal{A} } は次式のような関数の出力で表現される。

{ f(F,B;\lambda)=\lambda(\lambda \boldsymbol{\rm{B}}+\lambda \boldsymbol{\rm{F}}+\mathcal{L})^{-1}F }

あとは論文内の誤差逆伝搬式で { \lambda } を調整する。先行研究ではこれは人力で行われてた。

Loss Function

Ground Truth と予測された { \mathcal{A} } との間の損失関数は以下の通り。

{ L(\mathcal{A},\mathcal{A}^{gt})=\displaystyle \sum_i w(\mathcal{A}_i^{gt}) \|\mathcal{A}_i - \mathcal{A}_i^{gt}\| }

{ w(\mathcal{A}_i^{gt})=-\log (p(A=\mathcal{A}_i^{gt})) }

alpha matte は殆どの要素が0,1のスパースな行列になるため、単純にL1,L2ノルムを取るとバイアスがかかってしまうため上記のような重みを用いた式になった。

実験と結果

教師となる Ground Truth { \mathcal{A}^{gt} } は closed-form matting と KNN matting で作成してみてよかった方を採用した。クオリティが低いものに関してはフォトショでも修正した。

これによって2000もの画像における徹底的な高精度アルファマットを作成し、学習用データセットとした(クロスバリデーションも行った)。

精度評価には勾配と連結性の指標( matte perceptual error *1)を利用。

提案手法は前景・背景・不明領域の推測能力だけでなく、matting layer による trimap の調整においても効果を発揮した。

所感

  • 恥ずかしながら image matting というを初めて聞いた。
  • デモとかで Shape Mask 作るところまでをやってみたい。
    • 特に FCN とか CRF as RNN とかでの image matting は自分でも早めに試してみたいな。
  • 高精細なアルファマットの教師データ作成、なかなか骨折れそうだ
  • 応用例の広さは言わずもがなだと思うので試してみたい。

次読みたい論文

Image Matting

  • A Perceptually Motivated Online Benchmark for Image Matting

*1:A Perceptually Motivated Online Benchmark for Image Matting

最高のペペロンチーノを求めて

セマンティックセグメンテーションを image matting 問題として解決する手法に関する以下の論文を今週で読み終えられなかったのがちょっと悔しい・・・。

xiaoyongshen.me

やってる事自体は↑のプロジェクトサイトにあるプレゼン資料でなんとなくわかるけど、細かい計算式とその証明がまだ追えきれていないのでまた明日から読み続けよう。 グラフカットの資料も最後まで読み進められてないし、1つ1つ確実に終わらせていきたいけど、サーベイと勉強を繰り返しているとそうもいかないのがもどかしい。

昨日は以前チームが一緒だったデザイナーさんの結婚式。 式場の裏口を入り口と勘違いしてしまい、式前の写真撮影中の新郎新婦に出くわすというかなりバツの悪いことをしてしまい申し訳ありませんでした。 言い訳をさせてもらうと、最寄りの駅から最短ルートで行った場合は絶対にあの裏口に行き着くような道筋だったし、特に裏口感のある佇まいでもなかったので、あそこから入ろうとした輩はこれまでにもいたんじゃないかと思うんすよ。 披露宴でふるまっていただいた料理が中華料理で印象深かった。味もさることながら量自体も多くてココロもカラダ(腹)も満たされました。しっかりとお祝い出来たか不安だけど、お呼びいただきありがとうございました。

昨日から天気が一転して今日はとてもthe春な日だった。いつもジョギングしてる緑道で花見している方々も大勢見かけたし、つい散歩したくなるような陽気だったので俺も思わずあまり行けてないお店に大好物のペペロンチーノを食べに。あの三宿ラ・ボエムはいつも変わらぬちょうどいい味のプレーンなペペロンを出してくれるのがありがたい。正直1人で入るのがためらわれる店ではあるけれど、あのペペロンのためならどんな目で見られてもいいとすら思える。潰れる心配はしてないけど、この先もずっとペペロンをあの味で提供してほしいお店なんだよな。

ハーレム

先週金曜の夜は先輩の家にお邪魔してふるさと納税でもらったらしい肉ですき焼きを頂きに。柔らかくいい味をしていたため、なくなるのがクソ早かった。ごちそうさまでした。 その後皆で朝まで Amazon Prime に上がってるバチェラー・ジャパン鑑賞会。25人の女性が1人のセレブ男をめぐって争奪戦するという、自分一人では絶対に見ないであろうとんでもない内容の番組。毎回の終わりにどんどん女性が脱落していく流れなので、今回落とされるのは誰かってのがすごく気になるのである。 こういう恋愛系のテレビ番組は今まで全然見たことなかったけど、この番組はハーレム出来上がってていろんな意味で笑いどころが多いし、出演してる方々が次どう動くかとか気になりすぎてヤバい。あの面白さはうまく説明できないので皆さんも見ましょう。

今日は存在を知ってから早3年、ずっと行こう行こうと思ってたものの全然行けてなかった三宿FUNGO に初めて行ってきた。16時という昼飯というのには遅すぎる時間帯での入店だったからか、あまり客はいなかった。まぁこの寒さと雨だしな。肝心の料理は聞いてた通りの肉厚ハンバーガーで食いごたえ抜群。また行きたいけどウェブサイト見る限りだとどうやらデリバリーも一定価格帯からやってるらしくて休日にでも自宅に頼んでみよう。

はてブ見てたら近所の店紹介的な記事が上がってた。色々めぐりたいけど、基本的に土日の昼か夜しか行くチャンスないこと考えるとガッツリ食べ歩くつもりじゃないとなかなか難しいよな。

suumo.jp

やっと暖かくなってきたと思ったらこの寒さである。久々にぶ厚いコートを着て外出した土日だったな・・・。 背中と肩がまた凝ってきているのでそろそろ整体に行こう・・・。