Kerasで転移学習してSNSの画像を分類した話

授業でInstagram, Twitter, Facebookの画像を分類するアプリケーションを作成しました。

データ収集

instagram

まとめサイトでまとめられている、一般人の有名インスタグラマーのidを集め、その人たちの画像を約4万枚集めました。

twitter

1000RT以上、1000Fav以上の画像付きツイートの画像を約1万5千枚集めました。

facebook

これはチームメンバーがやってくれたのですが、友達をひたすらたどって画像を集めたようです。 結果として約1万5千枚集まりました。

モデル作成

フルで学習させると精度が中々出なかったので、ImageNetで学習済みのVGG16を使って転移学習をしました。転移学習なので、画像は結果的に3000枚ずつ、合計9000枚(training: 8100枚, validation: 900枚)を使いました。 転移学習はkerasを使うとめちゃくちゃ簡単にできます。

input_tensor = Input(shape=(100, 100, 3))
vgg16 = VGG16(include_top=False, weights='imagenet', input_tensor=input_tensor)

# FC層を構築
top_model = Sequential()
top_model.add(Flatten(input_shape=vgg16.output_shape[1:]))
top_model.add(Dense(256, activation='relu'))
top_model.add(Dropout(0.2))
top_model.add(Dense(3, activation='softmax'))

# VGG16とFCを接続
model = Model(input=vgg16.input, output=top_model(vgg16.output))

# 最後のconv層の直前までの層をfreeze
for layer in model.layers[:15]:
    layer.trainable = False

# Fine-tuningのときはSGDの方がよい
model.compile(loss='categorical_crossentropy',
              optimizer=optimizers.SGD(lr=1e-4, momentum=0.9),
              metrics=['accuracy'])

軽く解説すると、まず、今回は入力画像を100×100にしました。そしてカラーなので、Inputのshapeは(100, 100, 3)です。 続いてVGG16のモデルを読み込んでいますが、今回は転移学習するので、全結合層の部分は入りません。したがってinclude_top=False, そして、imagenetで学習済みの重みを使うのでweights=’imagenet’です。 そして、全結合層を構築して、先ほどのVGG16と接続しています。今回は、Instagram, Twitter, Facebookの3値分類を行うので最終層の出力は3になっています。 全結合層以外の部分は学習されてほしくないのでfreezeしています。(参照: https://keras.io/ja/getting-started/faq/#freeze

結果

f:id:wakanapo:20180123132205p:plain

epochによるaccuracyの変化

validationのデートセットで約68%ほどの精度を出すことができました。

http://35.190.172.104/で実際に試すことができます。

webアプリケーション

flaskを使ってサーバーを立てました。 これは特に問題なく動いたので、herokuでデプロイしようとしましたが、”30秒ルール” (参照: https://devcenter.heroku.com/articles/error-codes#h12-request-timeout )に引っかかってしまうようでうまく動きませんでした。 次にGoogle App Engineを試してみました。無料枠のstandard版だとpython2.7しかサポートされていません。キレそう。幸い完全に互換性のあるコードだったのでPython2.7でも問題なく動きました。ですが、GAEでは純粋なPythonしかサポートされていないそうです。numpyはbuilt-inとしてサポートされているようですが、OpenCVやKeras(Tensorflow)が使用できないので諦めました。 結局、Google Compute Engineを使ってサーバーを立てました。無料枠だけではメモリが足りなかったのですこしメモリを足しました。

写真が投稿されてから、学習した重みを読み込み推論を行うようになっているのでレスポンスが結構遅いです。続けて2枚目、3枚目の写真を投げた場合は、すでに重みが読み込まれているので少し早くなります。要改善と言った感じです。

おわりに

Deep Learning Day 2018でポスター発表をしました。

www.slideshare.net

https://github.com/wakanapo/SNS_clissfication/blob/master/vgg16.ipynb

参考

http://aidiary.hatenablog.com/entry/20170131/1485864665

emacsチートシート

随時更新

Tide

TypeScriptの定義ジャンプとかしてくれるやつ

GitHub - ananthakumaran/tide: Tide - TypeScript Interactive Development Environment for Emacs

Commands

Keyboard shortcuts Description
M-. Jump to the definition of the symbol at point. With a prefix arg, Jump to the type definition.
M-, Return to your pre-jump position.

M-x tide-restart-server Restart tsserver. This would come in handy after you edit tsconfig.json or checkout a different branch.

M-x tide-documentation-at-point Show documentation for the symbol at point.

M-x tide-references List all references to the symbol at point in a buffer. References can be navigated using n and p. Press enter to open the file.

M-x tide-project-errors List all errors in the project. Errors can be navigated using n and p. Press enter to open the file.

M-x tide-rename-symbol Rename all occurrences of the symbol at point.

M-x tide-format Format the current region or buffer.

M-x tide-fix Apply code fix for the error at point.

importjs

C-c i importjsd起動(二回)

https://joppot.info/2017/04/14/3796

flycheck

C-M-N flycheck next error

C-M-P flycheck previous error

Neo Tree

=== Shortcut (Only in Neotree Buffer) ===

  • n next line , p previous line。
  • SPC or RET or TAB Open current item if it is a file. Fold/Unfold current item if it is a directory.
  • g Refresh
  • A Maximize/Minimize the NeoTree Window
  • H Toggle display hidden files
  • C-c C-n Create a file or create a directory if filename ends with a ‘/’
  • C-c C-d Delete a file or a directory.
  • C-c C-r Rename a file or a directory.
  • C-c C-c Change the root directory.
  • C-c C-p Copy a file or a directory.

=== Commands(Global) ===

  • neotree-dir show NeoTree window and specify a directory as its root
  • neotree-show or neotree show NeoTree window using current directory as its root
  • neotree-hide Hide NeoTree window
  • neotree-toggle toggle/hide NeoTree window
  • neotree-find show NeoTree window and use the file of current buffer as its root

=== Command(Only in NeoTree Buffer) ===

  • neotree-enter Open File / Unfold Directory
  • neotree-refresh Refresh
  • neotree-stretch-toggle Maximize / Minimize
  • neotree-change-root Switch Root Directory
  • neotree-hidden-file-toggle Toggle hidden files
  • neotree-rename-node Rename a Node
  • neotree-delete-node Delete a Node
  • neotree-create-node Create a file or a directory (if filename ends with ‘/’)

最近読んだ本のまとめ

①白と黒のとびら

 ずっと気になってた本。テーマはオートマトンだけど、完全に小説仕立てになっているので、軽く読めて良い。最初は、オートマトンを知っている人にとってはじれったいペースで話が進むので、子供だましな感じの本かなとちょっと不安になったけど、最終的にはちゃんと考えてストーリーが練られてて内容もしっかりしていて面白かった。オートマトンについて知らない人にとっては勉強になるとおもう。知っている人も、余暇とか気分転換として読むのにオススメ。

 

②コンピュータ&テクノロジー解体新書

コンピューター&テクノロジー解体新書 ビジュアル版

コンピューター&テクノロジー解体新書 ビジュアル版

 

 図がいっぱいなのですんなり読めるだろうと思ったら、説明が結構多くて意外と時間かかった本。コンピュータ関係のことが広く浅く説明されている感じ。抵抗の仕組み・ブール演算・セキュリティの話・ゲームのグラフィックやサウンド・カメラの仕組み・インターネット・プリンタなどとにかくあらゆるものの仕組みが説明されている。eeicに進もうと考えている駒場生とかが読むと、全体像がつかめていい気がする。すでに電気・情報系にいる人も、電気・情報に関わること全般を広く浅く知れるので教養として役に立つかも。難点としては、図に説明を入れるスタイルで書かれているので、説明が色々なとこにとんでて、読む順番がちょっとわかりにくい(一応番号は振られている)っていうのと、翻訳がそんなにうまくないところ。

 

③スタア・バーへようこそ

スタア・バーへ、ようこそ (文春文庫PLUS)

スタア・バーへ、ようこそ (文春文庫PLUS)

 

プロフェッショナルで岸さんの回(岸久(2016年2月15日放送)| これまでの放送 | NHK プロフェッショナル 仕事の流儀)を見てからずっと気になってた本。プロフェッショナルのこの回は、めっちゃお気に入りで何度も見た。 アイリッシュ・コーヒーを作るシーンはこっちまでドキドキさせられた。本の話にもどると、この本はバーとかお酒に関する思いがつれづれと書き綴られているという印象。岸さん流のカクテルのレシピが10種類挙げられている部分では、こんなに色々考えて工夫しているんだなってなってめっちゃカクテル飲みたくなっちゃいます。モルトウイスキーの話の部分では、スコットランドで蒸留所に行ったりウイスキーを飲んだりしたくなっちゃいました。まぁ、冷静にウイスキーそんな飲めないんですけども。色々なことを考えてバーをやっているっていうのがすごく伝わってきてすごいなーって感じなんだけど、そのこだわりの理由がたまにめっちゃ感覚的だったりするのでそこがまたおもしろかったりします。ロックのお酒に使う氷を冷凍庫から出したての締まった氷ではなく、すこし緩んできた氷をつかう理由は個人的にウケたw そのまえで、冷凍庫から出したての氷は霜が付いていてお酒が薄まるのでステアには緩んだ氷がいいとか、逆にハードシェイクには締まった氷がいいとか氷へのこだわりがたくさん述べられていたので、ロックに緩んだ氷をつかうのも大きな理由があるのだろうなと思って身構えてたら、「僕がクリアで水晶みたいな透明の氷が好きだから」という理由で拍子抜けしました。

numpyの多次元配列の扱いではまったところ

numpyの多次元配列の要素にアクセスするのにa[i][j]って書くのとa[i, j]って書くのの違いを区別してなかったせいではまった。
それぞれの挙動を見てみると、

>>> a = np.array([[1, 2], [3, 4], [5, 6]])
>>> a[1][1]
4
>>> a[1, 1]
4

この場合は結果は同じになるので、今まであまり違いを意識したことはなかった。今回問題になったのはつぎのような場合。

>>> a[:][1]
array([3, 4])
>>> a[:, 1]
array([2, 4, 6])

a[i][j]って書くと、aのi番目の配列a[i]をとってきて、a[i]のj番目の要素にアクセスするので、a[:][1]ならば、a[:](= a)をとってきて、その1番目の要素にアクセスするので結局a[1]が得られる。
一方a[i, j]って書くと、aのi行j列の要素にアクセスするので、a[:, 1]ならば、全部の行の1列目の要素が得られる。

なるほどなぁって思ったのでメモ_φ(・_・

ピカチュウbrain fxck

 この記事はeeic advent calendar 2016 の17日目の記事ピカチュウ語でブログ書いてみた - わかなぽのはてなぽ)の解説記事です。

 

まずはじめに、あのようなクソみたいなブログを解読してくださったみなさんありがとうございます。解読したところでどっちにしろクソみたいな文章しかでてこないクソofクソだったことでしょう。解読しようとしてくれる人がいるなんて思いもせず、「やばwアドベントカレンダー書いてないw(12月17日夜20時頃)」と「ピカチュウ可愛い!ピカチュウ語喋る〜〜〜〜〜」っていう気持ちに任せて勢いで作って、投稿してしまいました。申し訳ありません。

Brainfuckとは??

Brainfuck(ブレインファック)は難解プログラミング言語のひとつ[要出典]。なお名称に卑語が含まれるため、Brainf*ckなどと表記されることがある。 

(Brainfuck - Wikipedia)

 Wikipediaで簡潔に説明されています。それをさらに要約すると、><+-.,[]の8つの記号だけを用いたチューリング完全な言語です。Hello Worldのコードは次のようになります。

みてわかるとおり、記号の羅列にしかみえない。気持ち悪い言語です(*´д`*)気持ち悪い言語大好きな私は興奮しますが、皆さんどうでしょう?

派生Brainfuck!!!!

brain fuckに使う記号は上記の8つである必要はありません。そのため、いろいろな記号、文字に置き換えておもしろい言語がたくさん作られています。その中でも、楽しくて、有名なのは、Nyaruko(GitHub - masarakki/nyaruko_lang: いつもニコニコあなたの隣に這いよる混沌ニャルラトホテプ言語ですっ)でしょうか。こんな感じで、好きな言葉で気持ち悪い言語を作ることができます。

Let's Brainfuck!(0゚・∀・)+ ワクワクテカテカ +

Brainfuckインタープリタを作るのは難しくありません、定義をそのままコードに書き下せばOKです。サンプルコードもたくさん転がっています。が、それもめんどくさいというあなたに朗報です!r-fxxk というrubyのプログラムを拝借すると、一瞬でできてしまいます。

これを使って作成したピカチュウ言語のインタープリタのコードはこんな感じになります。

めっちゃ簡単ですね!これでこのピカチュウ語も解読できます!

で、ここでどうやってピカチュウ語の方を作成するかが問題となってきます。頭のいい人は手打ちでピカチュウ語かけると思いますが、自分にはなかなか厳しい。そうなったときに、ネット上で公開されているbrainfuck変換ツールを使って作成したbrainfuckのコードをピカチュウ語に書きなおしちゃうっていうのが一番楽だと思います。例のブログ記事では、時間がなかったので

このページでtextをbrainfuckに変換し、それをピカチュウ語に置換して作成しました。最終的にたった50行程度しかコードをかかずに記事を作成しました。

GAE! GAE!(*´д`*)

ピカチュウ語を広めたい!という一心で、後日、Go言語でtextをピカチュウ語に変換するプログラムをかいてGAEで公開しました。

ピカチュウ語translator

結局なんて書いてあったの???

結局、例の記事はなんて書いてあったかというと、

Hello eeic!

Judan nomikai dodeshita?

Seppun shiteikouna^-^

でした。 eeic2016, 2017の方々が強いという噂をきいたので、ただ技術力だけあるオタクにならずに、飲み会で接吻しちゃうぐらいの人間になってほしいなという願いをこめた文章でした。

 Future Work

 アニメでのピカチュウの発言をみると、基本的に「ピカチュー」という鳴き声は連続することは少ないことがわかります。繰り返しがでてくるのは「ピカ」が多いと思います。にもかかわらず、私が作成したピカチュウ言語では、続けて出てくることが多い inc に"ピカチュー "を割り当ててしまいました。その結果、リアルピカチュウが言ってなさそうなピカチュウ語になってしまいました。とっても悲しいです。今後、アニメのピカチュウの発言を調査して、より、ピカチュウが言ってそうなピカチュウ語を目指したいと思います。

参考動画

(【公式】「ピカチュウのうた」プロモーションビデオ - YouTube )

 

 

ピカチュウ語でブログ書いてみた

この記事は eeic advent calendar 2016 の17日目の記事です。解説記事はこちら

ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピ ピッ ピカァ ピカ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピカチュー ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピカチュー ピッカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピッカ ピカチュー ピカチュー ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピッカ ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピッ ピッ ピッ ピッ ピッ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッ ピッ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッカ ピッ ピッ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッ ピッ ピッ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピカチュー ピッカ ピッ ピッ ピッカ ピッ ピッ ピッ ピッ ピッカ ピカチュー ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピ ピッ ピカァ ピカ ピッ ピッカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピ ピッ ピカァ ピカ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッカ ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッカ ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピッ ピ ピッ ピカァ ピカ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピッ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピッ ピッ ピッ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピカチュー ピ ピッ ピカァ ピカ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピカチュー ピッカ ピッカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッ ピッ ピッ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッカ ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッ ピッ ピッ ピッ ピッカ ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピカチュー ピカチュー ピッカ ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッ ピッ ピッカ ピッ ピッ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピッ ピッ ピッ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッ ピッ ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピ ピッ ピカァ ピカ ピカチュー ピカチュー ピカチュー ピカチュー ピッカ ピ ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピカチュー ピィ ピカ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピッ ピ ピッ ピカァ ピカ ピッ ピッ ピッ ピッカ

続きを読む

掛軸についてまとめ

はじめに

いままでtumblrでブログをかいていましたが、はてぶデビューしてみました( ^ω^ )というのも、はてな社員さんのtweetみてると、はてなってめっちゃホワイトそうだし楽しそうだしオフィスにでっかいリラックマあるし、はてなで働くのめっちゃありだ!!(働けるとは言ってない)って気持ちになって、だったらまずはてなのサービスを知らないといけないと思ったからです。そして、はじめたからには何か記事を書きたくなって、なに書こうとなった結果、掛軸について書くことにしました。

発端

そもそもなぜ掛軸かというと、それが卒論のテーマだからです。そしてそのテーマが決まったのは1週間前、卒論提出まで約2ヶ月前のことです。B4にして、9月始めから11月終わりまで3ヶ月のフルタイムのインターンに行くという超チャレンジングなことをした結果です。一応、もともと7月の時点では決まっていたのですがさすがにそのテーマを2ヶ月でやるのは厳しいという判断して、先生も何か適当なものはないかと考えてくれて掛軸のOCR的なものをやろうということになりました。そういうわけで最近は画像処理的なことをしています。画像処理に関する記事を書くことも考えましたが、openCVのライブラリに頼って、

関数に突っ込む!!!→なんかそれっぽい!!!

以上のことはしていないのでわざわざ書くほどのことではないし、私が書けるようなことはすでにどこかの強い人がまとめてくれているのでそれを読めば十分なのでやめました。自分にしか書けないことってなんだろうと考えた結果、掛軸だという結論に至りました。たった一週間ですが、この一週間ひたすら「軸 ○○(禅語)」で画像検索して画像データを手で集めて、その画像を処理して、というのを繰り返しています。この1週間、世界中の大学四年生のなかで一番掛軸のことを考えていたのはおそらく私です。ということで、掛軸について書くことにしました。

掛軸にまつわるエトセトラ

これから書くことは、1週間ひたすら禅語辞典をよみ、掛軸を画像検索しまくった結果、私が抱いた感想です。ことの真偽はしりません。

①掛軸は誰が書くか

昔の人が書いてそうなイメージありませんか?少なくとも私はそう思っていました。なんか今もご存命の方が書いてるものは、価値が低いというか、なんというか、由緒正しくないみたいなイメージをもっていました。なので最初は頑張って、昔の人が書いたっぽい掛軸の画像を探しましたがあまり見つかりませんでした。画像検索して出てくるような掛軸の多くは現代の方が書いているようです。こう言うと、それはそうという感じがしますね。現代の誰が書いているかというと、和尚さんが多いようです。掛軸界での強和尚さんを私の感覚で勝手に決めさせてもらうと以下の感じになります。

  • 小林太玄
  • 足立泰道
  • 福本積應
  • 橋本紹尚
  • 福代洋道
  • 上田玉蜂
  • 佐藤朴堂
  • 前田宗源

こんな感じです。この方たちは掛軸界のレジェンドといった感じでしょうか。たくさんの掛軸を書いてくださって大変お世話になっておりますといった感じです。

②掛軸はどこにあるか

「検索すると画像幾つかは出てくるんだけど、データが足りなくて困ってるんだよねー(´・_・`)」

というと、みなさん優しいので考えてくれます。そして、結構な割合でこういわれます。

「美術館?とか博物館?とかいって写真とらせてもらえば?」

わかります。その気持ち。掛軸ってなんかめっちゃ昔のものでめっちゃ価値があってなんかめっちゃやばい、みたいな感じしますよね。もちろん、そういう掛軸もあるでしょうが、①で言った通り、普通の人が普通に目にする掛軸の多くは現代の和尚さんによって書かれています。つまり、いちいち美術館とか博物館には飾りません。写真を撮りに行くなら掛軸やさんとか茶道具やさんとかでしょうか。

③掛軸は無限にあるか

おたくの集まる学部で"無限"とかいう単語をむやみに使うと無限警察がとんできて、「本当に無限?」と問い詰められるので気をつけましょう。そして、無限という言葉が使われる対象はたいていの場合有限です。今回も有限です。それはあたりまえなのですが、なにが言いたいかというと"有限すぎるほど有限"なのです。先生はテーマを決めたとき、こう言いました。

「まぁ、頑張って手でデータ集めてニューラルネットワークやらなんやらで学習させたらなんかできるやろー」

そして、私はひたすらデータを集めながらこう思いました。

「いや、機械学習できるほどデータないって、先生どういうこと、え、先生本当にニューラルネットワークとか機械学習とか分かって言ってるの??」

失礼な話ですよね。無限(有限ですが)のパブ、PhD、才能を持ち合わせ、神とまで呼ばれる先生を、一卒論生が疑うなんて。でも、逆にわかっているのなら何で機械学習できるとおもったのかがわからない。しばらくして、やっと気が付きました。先生は掛軸が無限(有限ですが)にあると思っているのだと。掛軸が無限とか有限とかどういうことかというと、画像検索して手に入るような掛軸のほとんどは、①であげたような和尚さんたちによって書かれています。そして、何枚も同じ言葉の掛軸を作るために同じ言葉を和尚さんが何回も書くわけではありません。当然複製です。また、掛軸を書くすべての和尚さんがすべての言葉の掛軸を書くわけではありません。そういうわけで、画像検索して得られる、一つの言葉に対する画像データの種類は多くても6枚7枚くらいです。つまり、全然データが足りない!!!!前途多難!!!!

おわりに

「はじめに」で始めたら、「おわりに」を書かないとコンパイルエラーを起こします。なのでおわりにの章をつくりましたが、特に書くことはありません。強いて言えば、掛軸は縦書きか横書きかどっちかにしぼってくれ、ましてや、一枚のなかに両方出てくるとか論外!!!そして、軸の文字の周り(?)黒っぽい地にするのやめてくれ!!!黒っぽくさえなければ、黒の抽出だけで文字が取れるのに!!!画像処理が大変なんじゃ!!!!!ということです。