Deep Learning Day 2018に参加してきた

1月20日土曜日にDeep Learning Day 2018に参加してきました。

私が発表した内容については前の記事に書いたとおりです。

Deep Learning Day 2018とは

「先端人工知能II」という授業の最終成果発表会です。この講義は、公開講義になっていて社会人の人も「Deep Learning応用講座」という名前で受講することができます。ただし、対象は「先端人工知能論I(Deep Learning 基礎講座)」を受講済みの人なので注意してください。

一授業の最終成果発表会とはいえ、秋葉原UDXの会場を借りて、Deep MindやFacebook AIの人が基調講演に来てくださり、昼食・夕食も出る強いイベントです。"金"って感じでした。

発表

すごく面白いものを作っているチームがたくさんあったので私の印象に残ったものをいくつか紹介したいと思います。

①Deep Quoridor

このチームはコリドールというゲームのAIを作っていました。ボードゲーマ(ガチではない)の私は、もともとこのゲームをしっていたので中間発表で話を聞いた時から面白そう!と思っていました。ただ、コリドールのAIは調べると既に作っている人がいた(Quoridor AI)のでそのへんどうなのだろうと思っていました。

実際にDeep Quoridorのデモを試してみると、Deep Quoridorのほうが既存のものよりもレスポンスが早いと感じました。また、UIも綺麗だと思います。どちらのほうがAIとして賢いのかはわかりません・・・・。どちらのAIにも私は勝てないのでwww気が向いたら、この2つのAIを直接対決させてみたいと思います。

Deep Quoridor

②画風変換を駆使した顔はめパネル

漫画の主人公とかの美少女の顔はめパネルとかあると思いますが、せっかく顔はめして体と雰囲気は美少女になったのに、顔だけ元のままだと浮いちゃうし悲しい!みたいなのを改善してくれるものです(?)

顔の部分をパネルの画風に合わせて良い感じにしてくれます。

また、背景も絵風に変換してくれるので、実世界で顔はめしてとった写真から実際の漫画やアニメのワンシーンみたいな画像が生成できます。

③ANIBODY

人の動きに合わせてアバターをうごかせるようにしたものです。

発表の際レイテンシに気をつけたと強調していましたが、アイドルが複数人で踊っているような動画に対しても、ほぼレイテンシなく人数分のアバターを踊らせることができてました。

④俳句ジェネレーター

画像を与えると、それに合うような俳句を出力してくれるというものです。

正直言って、それほど精度はよくなかったです。575になっていない、季語が入っていない、日本語として意味がとれないというものも多々生成されてしまっていました。

ですが、私がためした卵かけご飯の写真ですごく良い感じなのが生成されて作成者の方もたまたまだと言っていて面白かったです。

f:id:wakanapo:20180125111106p:plain

haiku-generator.tokyo

⑤子供ジェネレータ

男女の顔写真を与えると、推定される子供の顔写真を生成してくれるものです。

テーマを聞いた時は、なんだよくあるやつか。と思っていたんですが、結構クオリティが高くて面白かったです。

会場にいた人はほぼ男性だったので、会場ではガッキーの写真と合成するデモをやっていました。

試してみますか?といわれて、思わず「えぇぇぇぇ、私とガッキーを合成するんですか・・・・?」となってしまいました。

だって、単純計算で2 * (子供の顔面偏差値) - (ガッキーの顔面偏差値) = (私の顔面偏差値)じゃないですか・・・(顔面偏差値は線形ではないのでは?とかそういう議論はいらない)。もし生成された子供が可愛くなかったら、完全に私のせいじゃないですか・・・。

冷静に考えると、別にそれは私が男であってもそういうことだし、それはそうって感じなんですが、別にガッキーとの合成じゃなくてもデモできるとのことだったので、デモしてくださってた方と私の子供の顔を生成しました(笑)

会場がちょっと暗めだったのか、生成された画像も暗っぽくなってしまいましたが、わかる〜って感じの画像生成されました。生成される子供の年齢をいじることもできます。

デモはJupyter Notebookでローカルで行っていたので、「こっそりいろんな人と試したいからぜひWebで公開して!」とお願いしておきました。

⑥FindVoice

ある人物の声のデータを約10分分与えると、それを学習し、動画などからその人物の発話シーンを検出することができるようになります。精度も非常に高くて素晴らしかったです。

Data Augmentationを駆使しているため、与えるデータ量も10分程度でいいという点が非常に実用的だなと思いました。

team25 demo

おわりに 

面白そうだなと思った方はおそらく来年度も開講されると思うのでぜひ受講してみるといいと思います!

deeplearning.jp

※アプリケーションの概要と公開されているリンクしか載せないようにしましたが、載せないで欲しいとか間違っているとかあれば編集するので教えてください。

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日目の記事です。解説記事はこちら

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

続きを読む