unframe004 で AI x AI っていう作品をつくっていました。

2016.11.3~5 に unframe004 をいつもお世話になっている中目黒のPanofNスタジオで行いました。
今年は4回目となり、今まで好き勝手作ってきたメンバー同士に緩い繋がりみたいなのがあってもいいんじゃないかみたいな話になり、
グループテーマみたいなものを用意してみることになりました。そして今回のグループテーマは「愛」。

やってみた感想としてはテーマ決めてもまー結局みんな好き勝手に作る感じで、
あんまりテーマありきみたいな作品は少なかったかな。。w (失敗だったのかな。。w)
そういうの向いてない人たちなのかなって感じでしたw
来年とかに行うなら果たしてテーマを設けるのかどうかみたいなのはまたみんなと話してみようかと思います。

あと、今回はお客さんの人数だったり、知ってる人や初見の人のバランスなど、いい塩梅になってきたなーっていう印象。
4回とかやってると知ってる人の中でも、あーまたやってんのねって感じでいつも来てくれる人たちもいて、
知らない人たちでも、へー4回目なんですか!みたいな割と好印象的に受け止めてくれる人も多くて、
なんか中目黒という場所や立地、Panofスタジオさんのご好意もあって、今年はすごい緩い感じのいい雰囲気で展示が行えたなーっていう感想。
(実は自分がもうそんなに気構えなくなってきてるという説もあるw)

もともと万人受けするとかもあんまり思ってないし期待してないので、毎回楽しいですって言って来てくれる人たちが
少しいてくれたらそれだけで十分嬉しいし、ありがたいです。自分たちが好きなことを好き勝手にやる理由としてもうそれで十分なんじゃないかなーと。
そんでたまたま作ったものが他の展示会に派生したり、各々の仕事へフィードバックできたら毎年やってる意味も全然あるしなとか、
まー結構これくらいまで続けて来てようやくなんとなくやっててよかったよねーってなった。最近。趣味ってこういうもんだよねって思った。

んで僕は今回の展示では AIxAI っていう作品を作りました。
何作るかちゃんと決めたのも例のごとく1週間くらい前なのでまー作品の完成度とかはひどいもんなんですがw、
どちらかというと夏休みの自由研究発表のような感じでつくりました。

まー完全にダジャレでAIって付けたかっただけですがw、
真面目にやったことがなかったので機械学習や深層学習っていうのをやってみたかったっていうことと、
そういったいわゆる人工知能的な話が出た時にそれらに感情は必要か否かみたいな話があって、(AI トロッコ問題とかでググればでる)
そっちの倫理問題はそれはそれでめちゃくちゃ興味あってそっちで作品やってみたかったんだけど(こっちの方がアートとしては成立しそう)、
今回はそっちは置いといて、機械学習で愛情が理解できるのか?みたいなことを考えて自由研究をはじめました。

AIxAI

愛って何ですか。

人が人を想う様を人が作り出す人工知能は理解できるのだろうか。
機械にも愛情をはじめとした自発的感情が芽生えるのだろうか。
そんな疑問から、自分にはその現在進行の進化を垣間見ることが
できるのだろうかと思い、機械学習を初めてみた。

始めに断っておくと、これをAIだとか人工知能だとか言うとすごい怒られるんだろうなと怯えているので、
今回やっていることは機械学習とか深層学習の勉強で、そういった技術がここ数年ですごい取り上げられることが多くなっていて
自分は何もやったことがなかったので単純に興味があったのと、そういった人工知能とかと一緒に言われる感情有無による社会的な損得みたいなところに興味があって、
それを勉強してみたかったというだけです。今回のグループ展が「愛 = Love」というテーマで、
それと掛け合わせたくてダジャレが言いたくてAIって単語を使ってるだけですので!!!!!!!!(誰に怯えているんだろう)
なので便宜上これをAIと呼びますね。←

やったことはひたすら「愛」をテーマとした映画(ここだったら例えばLEON)をどんどこと見せていって、キャプチャとる → その画像に何が写っているかのキャプションをつける → キャプションができたら(内容が分かったら)すぐにまたそのタイミングでキャプチャをとる → 何が写っているか答える。。。 っていうのを永遠とやっていって、AIが映画1本を丸々見終えると、機械が見たLEONっていう映画が1つのテキストデータでずらーっとできるので、そいつを元に今度は文言と文言の並びとかをまた学習させて、そうしたAIに今度は「Love」って言葉を与えるとこいつが勝手にその学習データから得た語領から勝手に文章を生成するっていうものです。

学習するためのデータを自分で生成させるっていうところに何となく永久機関的なワクワク感があってやってたのと、
あとは意味も分かってないのにそうやって機械本人が愛ってテーマの映画から学んだ脳に「愛」の書き出しで文章を生成させるっていう、
ちょっと人間の考えながら作り出す文章とか物語とかと違うアプローチで文章を構成していくっていう過程に面白さを感じながらつくってました。

はじめ知りたかった感情が得れるのかみたいな話はちょっと脱線気味でw、
最終的に展示物にするっていうのでこういった少しギャグっぽい成果物になってしまったんですが、
(自分がもっと自然言語処理とか強くてもっといい文章生成の方法ができれば展示物は最後の出力された文章だけの
文集を展示するみたいなのを考えてた。)
真面目な話をするとAIに感情みたいなのがある日突然急に生まれることはなく、
それさえも結局教え込まないといけないんだなーということが今回の勉強でよく分かり、
じゃあそれを自分だったらどうやって実現できるだろう?って考えたときに、
「いかに効率よくAIに正解をフィードバックできる仕組みを設計するか?」みたいな事を考えました。

例えば、今回LEONに出てくる人物表情の喜怒哀楽を取得して、時系列で登場人物の感情分布図を作ります。
それに加えて背景BGMの音データや、セリフ、画面の色味なども全て時系列でデータとして入力させて、
LEONっていう映画のグラフデータを作ります。それに加えてTVにカメラが1台ついていれば、視聴者の反応が取得できます。
その反応(例えば泣いた、笑った)をさっきの時系列と合わせてAIが学習データとして常に取得することができれば、
こういったグラフを示す映画のこのポイントで人間が泣いた。それならばこのグラフに近いデータを示すこの映画でも感動するのでは?という具合に
AIが推測できるようになるんじゃないかな?と思いました。感情を理解することはまだできないかもしれないけど、
感情を推測することは僕なんかが思いつく範囲の実装でももうできるようになってるんじゃないかなーと。

あと、思ったのが学習データの集め方の話で、インターネットが普及した今は学習データがあればあるほどいい分野(翻訳とか画像認識とか)は、
もう学習データを中央集権的に集めてスパコンでぶん回す的なgoogleやfacebookがやってる部分はそういう巨人たちにお任せして、
むしろガンガンとデータ提供して(といっても翻訳機能使うとか、正しいキャプションで写真上げるとかみんなが普通にインターネット上で生活してればおk)貢献していきつつ、
さっき言ってた個人の感情を学習していくようなパーソナルな学習データの個別採取は、各々の家とかに専用のAIを持ちつつそいつに
学習データを貯めていきながらちょっとずつその人の感情を学習していくみたいな、そういった話になるのかなーとか考えてました。
どちらにしろ、なんか結構こういったAIや機械学習とかに対して冷たいみたいなイメージが漠然とあったのだけど全く逆で、
なんか生まれたてのどんどんものを覚えていく子どもみたいな感覚で、
AIは愛情を感じるか?みたいなテーマで作りはじめたAIに人間が愛情を感じ始めたみたいなオチになりました。w

そいえば、これAIとか愛情とかって話とは別に、映画のデータ分析というか、以前やったグラフィックデザインの死角展みたいなことの
映画版ができそうだな~みたいな、ちょっと違う方向にも興味がでてきました。
というのも、僕自身が映画1本まるまる家のTVでじっと見るみたいなことができない人間なので、
どうせなら分析結果からこういった映画だからおもしろいよみたいな要約だけを140字で教えてくれるbotみたいなのを結構前から作りたいなと思っていて、
なんとなくそれに近い感じでプロトタイプとして作れた感じなのでこれはこれで進めていって映画生成手法論みたいな
勝手な解析結果展みたいなのやっても面白そうだなとか思ってました。

おしまい。

こっからは機械学習に使用したChainerのインストールとかハマったポイントとか何見ながらやってたとかそういった備忘録メモ。
何もまとめてないのでめちゃ読みにくいけど。。。

Reference & Survey

Microsoft COCO
http://mscoco.org/

CNN(Convolutional Neural Network)画像特徴量
RNN(再帰型ニューラルネットワーク) 文生成 →
RNNの拡張として時系列データに対するモデル LSTM Long short-term memory

動画キャプション生成
動画キャプション生成
• 深層学習前:物体検出やトラッキングに依存 [Yu+Siskind, ACL 2013]
• CNN+RNNによるend-to-endな学習手法が台頭
– LRCN [Donahue+, CVPR 2015]
http://jeffdonahue.com/lrcn/

– Video to Text [Venugopalan+, ICCV 2015]
http://www.cs.utexas.edu/~ml/papers/venugopalan.iccv15.pdf

– 3-D CNN [Yao+, ICCV 2015]
http://www.cv-foundation.org/openaccess/content_iccv_2015/html/Yao_Describing_Videos_by_ICCV_2015_paper.html

• データセットも増えつつある
– MPII Movie Description dataset [Rohrbach+, CVPR 2015]
– MS VDC [Chen+Dolan, ACL 2011] [Yao+, ICCV 2015]

coco-caption
https://github.com/tylin/coco-caption

chainer_caption_generation
http://ntddk.github.io/2016/03/26/neural-image-caption-generator-twitter-bot/
https://github.com/apple2373/chainer_caption_generation/blob/master/codes/sample_code_jp.ipynb

chainer gogh 【Deep Learning 画風変換】ポケモンを大神の世界に連れて行ってみた
http://eeveetuna.hatenablog.com/entry/2015/11/23/141035

AIに対して倫理観的なの求めるのおもしろい
https://srad.jp/story/16/04/20/0639226/

AI研究の「倫理」どうする? 人工知能学会、倫理綱領を策定へ
http://www.itmedia.co.jp/news/articles/1606/08/news088.html
http://ai-elsi.org/wp-content/uploads/2016/06/%E5%80%AB%E7%90%86%E7%B6%B1%E9%A0%98%E6%A1%88_Ver3.1.pdf

人工知能AIが暴言を吐く事態に、私たちは何を考える?
http://middle-managerblog.com/?p=6269

Microsoftの人工知能Tay、悪い言葉を覚えて休眠中
http://www.itmedia.co.jp/news/articles/1603/25/news069.html

荒らし行為に対するテストを十分に行わなかったことが原因。。?
Microsoftが荒らし行為に対するQA(品質保証)を怠ったことが今回の一件の要因
たとえばTayは、多数のユーザーから「ホロコーストはなかった」と教え込まれた場合、しばらくしてから「ホロコーストは起きたのか」と質問されると、否定する反応を示し始める可能性がある。しかし、それは彼女がホロコーストとは何なのかを理解しているからではない。語られていることが「何」であり、人々が「なぜ」彼女に嘘をつきうるのかについて理解することは、完全にプログラミング能力の外にある。
彼女が知っているのは、「ホロコーストは起こらなかった」と人々が彼女に語ったということだけだ。
ボット作成者たち、とくにTayのようなインタラクティヴなボットの作成者たちは、自身が手がけたボットの品行方正さを維持するためには、継続的な調整が欠かせないと述べ、
一方で、問題になりそうな話題をブラックリストに載せるのは、その行為自体が問題を孕んでいる。アップルは「Siri」の発表後まもなく、人工妊娠中絶に反対するプログラミングをSiriに施しているとして非難された。遺体を隠す場所やコールガールが見つかる場所ならいくらでも教えてくれるのに、中絶や避妊に関して質問されると、Siriは(近くに可能な病院があったとしても)見つることができなかったからだ。アップルは、これはSiriがまだベータ版であることに起因するバグであって、ユーザーが中絶について知るのを妨げようとする意図的な試みではないと説明した。
人間が考えられる下劣なことを全て無感情にただデータとして学習する。

倫理問題
SF作家アイザック・アシモフは「人間への安全性、命令への服従、自己防衛」をロボット三原則として挙げました。
人工知能を備えたロボットが人間に危害を及ぼす命令を下された場合、ロボット三原則に従おうとするロボットは「人間への安全性」と「命令への服従」のどちらを選べば良いのかというジレンマに陥ってしまいます。また、過ちを犯したロボットには責任が発生するのかという倫理的な問題も生じます。

インタビュー:AIの倫理判断、幅広い議論を=平野中央大教授
http://jp.reuters.com/article/japan-ai-hirano-idJPKCN10E0G7?sp=true

倫理問題はみんな避けて通ろうとするが、避けてはならない。どう設計するか社会全体で決めるべき問題だ」と警鐘を鳴らす。
2020年に自動運転を実用化すると言っているので、その時に議論を始めても遅い。いまからやらないといけない」
「有名な逸話がある。人型ロボットに右手で左の耳をつかめと命令するどうなるか。人間だと普通に右手を左耳の方に持っていって耳をつかむが、人型ロボットは右手を頭に突っ込んで左耳をつかもうとする。これはすごく含意のある逸話だ」
「人間だと当然、自分を殺さないように判断するが人工知能はそこが抜けていて、目的のために自分が死ぬようなことをやってしまうかもしれない。そこで常識や倫理などをロボットやAIに教えるべきだという話にいまなってきている」

人工知能学会倫理委員会
http://ai-elsi.org/

Deep Visual-Semantic Alignments for Generating Image Descriptions
http://cs.stanford.edu/people/karpathy/deepimagesent/

メタデータの自動制作
https://www.nhk.or.jp/strl/publica/giken_dayori/jp2/mt-0808.html

シーンを解析する技術
https://www.nhk.or.jp/strl/publica/giken_dayori/jp2/mt-0810.html

シーン毎に分ける
画面分割からの差分追跡でショットチェンジの判定を行う。
https://www.nhk.or.jp/strl/open2016/tenji/c1.html

映像から特定の人物やシーンを判別してメタデータを付加する技術
http://internet.watch.impress.co.jp/cda/event/2007/05/23/15801.html

Metadata Production Framework / MPF
メタデータ制作フレームワーク
https://www.nhk.or.jp/strl/mpf/index.htm
http://www.nttpc.co.jp/yougo/%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E5%88%B6%E4%BD%9C%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF.html

という辺りを色々調べて勉強しつつ。

2016.10.24

ここから開発スタート。っていうかまずPython環境をつくりはじめるところから。。。。

UbuntuにChainerとCUDAインストールは一度こっちを見た方がいいかも。
http://kubotti.hatenablog.com/entry/2016/06/07/142850

バージョン管理をします ( pyenv )
環境管理をします ( virtualenv )
anacondaも使います ( anaconda: 便利なpythonパッケージ )
iPython notebookにも触れます ( 知らないと損な開発 must item )
sudo pyenv rehash した

homebrew doctor, update, upgrade してから、

pyenvのインストール

$ brew install pyenv
$ echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.zshrc
$ echo 'export PATH="${PYENV_ROOT}/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
$ exec $SHELL -l
$ source ~/.zshrc 

anacondaのインストール

$ pyenv install --list  でバージョン見て最新のものをダウンロード。
$ pyenv install anaconda3-4.2.0

$ pyenv versions で今使ってるバージョン見る。
$ pyenv global anaconda3-4.2.0 でanacondaに切り替え
$ pyenv global anaconda3-4.2.0 でanacondaに切り替え
$ python --version で
Python 3.5.2 :: Anaconda 4.2.0 みたいな自分が入れたAnacondaが選ばれてたらおk。

んで、import chainer が通らない。。。。。

結局いろいろ試しまくって、
~/.pyenv毎削除してから

brew install pyenv   
conda install pip
pip install chainer --user

でchainerうごいた。。何故か長かった。。
ということでとりあえず次のチュートリアル。

dsannoさんのchainer-image-captionが一番はじめっぽいのでそこから。
http://qiita.com/dsanno/items/b237482087207d0364c3
https://github.com/dsanno/chainer-image-caption

python src/train.py -g -1 -s dataset.pkl -i vgg_feats.mat -o model/caption_gen

Train datasetのとこでとりあえずCUDAが動かなかったのでCPUでいった。

ただ遅い。。。ので一旦ここで中断。
ということでGPUで動かしたいのでこれ通りにやってみる。ことに。
http://qiita.com/komakomako/items/2b6921c1068bb26582da

ここからなかなか動かなかった。ので後回しにしつつ色々なChainerのサンプルコードを探す。

日本語化はapple2373(Satoshi)さんがやってるのでこっちを試す。
http://t-satoshi.blogspot.jp/2016/01/blog-post_1.html
https://github.com/apple2373/chainer_caption_generation

自分と似た感じでやってる人がいたのでこの人のも試す。
というかこの人が参考にしてるのが登本さんのコードだけど。w
http://puni-o.hatenablog.com/entry/2016/03/24/182559

登本さんのは言葉の自動生成と、
https://github.com/yusuketomoto/chainer-char-rnn

NeuralStyleをちょっぱやにするやつ(NF北海道で使ってたやつの原型かな?)
https://github.com/yusuketomoto/chainer-fast-neuralstyle
これが事前に学習データを用いるやつかー。にゃるほど。あとでやってみる。

NeuralStyleをとりあえず展示にそのまま使ってるやつは既にあった。この人も同じ手法の模様。
https://vimeo.com/167910860

やってる中でいろいろ言葉にわからないことが出てきたのでここ見たり。
http://qiita.com/sergeant-wizard/items/29868c768faa3e7e7f6d
Train
モデルの学習に使用するデータを学習データ (Train Data)、検証に使用するデータをテストデータ (Test Data)といいます。

2016.10.29

後回しにしてたGPUで動かすってやつを再スタート。

cudaのインストール

CUDA8.0
https://developer.nvidia.com/cuda-downloads
cuDNNも
https://developer.nvidia.com/cudnn
cuDNNは落として/usr/local/cuda/以下に上書き

Xcodeの過去バージョンはココ
https://developer.apple.com/download/more/

Xcode CLTのダウングレード方法はココ
https://github.com/arrayfire/arrayfire/issues/1384

brew config で全部のバージョンみれる。

ようやくGPUでChainer動いた。。

python generate.py sample_images/you.jpg -m models/style3.model -o comp13.jpg -g 0
python generate.py sample_images/you.jpg -m models/style3.model -o comp13.jpg

だいたいモデル有りの状態で
fast-nuralstyleが1.2secくらい。(1sec切れると思ってたのになー悔しい)sampleデータがでかすぎたのか??

OSX10.12 Sierra環境でもCUDA8.0でChainerイケた👍 #chainer

you tanakaさん(@rettuce)が投稿した写真 –

モデル作るのはここからデータとってきて
http://mscoco.org/dataset/#download

python train.py -s rio.jpg -d ./train2014 -g 0

で走り始めるけど、軽い気持ちでやったら
1epochで5h、2epochで計10hくらいかかった。。長かった。。家の電気代は大丈夫なのかな。。と心配になるレベル。

とりあえずつぎ。。

ようやく脱線から戻ってきて
chainer-image-captionを試す。

まずは落としてきたdatasetでtrain。
http://cs.stanford.edu/people/karpathy/deepimagesent/

$ python src/train.py -g 0 -s dataset.pkl -i vgg_feats.mat -o model/caption_gen

あ、あれ。。gpu使ってるのにそんなに早くなんない。。なんで。。(あんまりCPUの時と変わらないんじゃ。。劇汗)
とりあえず100epoch待てずに30でギブアップ。

んでまたまた落としてきた学習データ(MSCOCOのAnnotationつき画像データセットでVGG_ILSVRC_19_layersを使って画像から抽出した特徴ベクトルのデータと、Annotationの単語列のデータ。らしい。)をpklにコンバート。

python src/convert_caffemodel_to_pkl.py VGG_ILSVRC_19_layers.caffemodel vgg19.pkl

ゲームしてたら終わった。(TimeLockerおもしろいよね)

んでようやく手持ち画像にキャプションをつけてみますかね。と。

結局gpuで回しても時間かかる。。ってことで30回しか回せなかったけど。。

python src/generate_caption.py -s dataset/dataset.pkl -i dataset/vgg19.pkl -m model/caption_gen_0099.model -l image/list2.txt

#  image/nuko1.jpg
a cat sitting on top of a laptop computer
a cat laying on top of a wooden table
a cat laying on top of a laptop computer
a cat sitting on top of a wooden table
a cat sitting on top of a computer keyboard
#  image/nuko2.jpg
a cat sitting on top of a wooden bench
a cat that is sitting on a bench
a cat is sitting on a wooden bench
a cat sitting on top of a bench
a cat laying on top of a wooden bench
#  image/nuko3.jpg
a cat laying on top of a laptop computer
a cat sitting on top of a laptop computer
a cat laying on top of a computer keyboard
a cat sleeping on top of a laptop computer
a black cat laying on top of a laptop computer
#  image/tai.jpg
a group of people walking down a street
a group of people walking down a street with umbrellas
a group of people walking down the street
a group of people walking down a city street
a man riding a skateboard down a street

うんなんか当たらずとも遠からず的な。
これを100epochぶんまわしたらどうなるんすかね。あとでね。

後日

#  image/nuko1.jpg
a cat sitting on top of a wooden table
a black and white cat sitting on a chair
a black and white cat sitting on a window sill
a black cat sitting on top of a chair
a black cat sitting on top of a wooden table
#  image/nuko2.jpg
a black cat sitting on top of a wooden bench
a cat sitting on top of a wooden bench
a black cat sitting on a wooden bench
a black and white cat sitting on a wooden bench
a black and white cat sitting on a bench
#  image/nuko3.jpg
a cat laying on top of a laptop computer
a cat sitting on top of a laptop computer
a cat laying on top of a computer keyboard
a cat sitting on top of a computer keyboard
a black cat sitting on top of a laptop computer
#  image/tai.jpg
a group of people walking down a street
a group of people walking down a street holding umbrellas
a group of people walking down a street with umbrellas
a group of people walking down a city street
a group of people walking down the street

途中でSSD容量が足りず80epochで終了してた。。悲しい。。

また後日100epoch回した。

#  image/nuko1.jpg
a cat sitting on top of a laptop computer
a cat that is laying down on a bed
a cat that is laying down on a chair
a close up of a cat laying on a bed
a cat that is laying down on a couch
#  image/nuko2.jpg
a cat sitting on top of a wooden bench
a black cat sitting on top of a wooden bench
a cat is sitting on a wooden bench
a black cat sitting on a wooden bench
a cat that is sitting on a bench
#  image/nuko3.jpg
a cat laying on top of a laptop computer
a cat sitting on top of a laptop computer
a cat sleeping on top of a laptop computer
a cat laying on top of a computer keyboard
a cat is laying on a laptop computer
#  image/tai.jpg
a group of people walking down a city street
a group of people walking down a street
a group of people walking across a street
a man riding a skateboard down a street
a group of people walking down a street with umbrellas

日本語化はapple2373(Satoshi)さんがやってるのでこっちを試す。
http://t-satoshi.blogspot.jp/2016/01/blog-post_1.html
https://github.com/apple2373/chainer_caption_generation

中のdownload shellが動かなかったので以下から直接適宜ダウンロードする。
https://drive.google.com/drive/folders/0B046sNk0DhCDeEczcm1vaWlCTFk

ただ、
AttributeError: ‘Convolution2D’ object has no attribute ‘_uninitialized_params’
ってエラーでつまる。。
install chainer==1.6 で1.6入れようとしてもエラって入れれないし。。

ので仕方なく以下MSの翻訳API使ってみる。

microsoft Tarnslator と pythonで自動翻訳してみた!
http://www.dyesac.com/microsoft-tarnslator-%E3%81%A8-python%E3%81%A7%E8%87%AA%E5%8B%95%E7%BF%BB%E8%A8%B3%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F%EF%BC%81/

ここにある通りやってみるけどうーん、生のAPI叩くと妙にエラるな。なんだろう??

ここに自分が登録したAPI Keyがたまってく。
https://datamarket.azure.com/developer/applications

お、そのままwrapper描いてくれてる人がいたので
ちょっといれてみる。
https://github.com/openlabs/Microsoft-Translator-Python-API

pip install microsofttranslator

てかhomebrewのときも思ったけどpipもアホほど便利ですね。CUIバリバリの人たちずるいですね。
ちなみに2万文字/月までタダでいけるそうなので今回の展示は余裕そう。
ということでなんとかChainerを使って画像渡せば英語でキャプション取得してそのキャプションを日本語訳して返すみたいなところまでいったのでようやくoF。。(3日前)

その後進捗をinstaにあげた。。

英語⇔日本語を変換できるPythonスクリプト
http://myenigma.hatenablog.com/entry/2016/05/16/224001

他の翻訳APIも試してみようかな。ローカルでできるやつないのかな。

2016.10.30

まずはOSX10.12にアプデしてしまった&oF0.9.6が出てた関係でoFのセットアップからw

oF0.9.6は元から問題なくコンパイルできた。
0.9.3とかのはQTkitがなくなったからコンパイルできね。。
ということでいつも通り過去のSDKいれる。&10.12のSDKをいただく。
10.12からSDKがaliusになってるのね。
いつも通りコマンド叩いて過去のSDKとショートカットを移す。
info.plistのminimamSDKを10.7くらいにする。適当~

これでoFライブラリのターゲットSDKを10.11とかにして1度コンパイルしておけば過去のoFプロジェクトもおk。

さて本題。

oFからPythonを叩きたい。
昔なんかffmpegとかをoFから生で叩くみたいなことはしたことあったので
その時みたいにsystem(hogehoge);みたいな感じで叩く。コンパイルできね。。

gcc -framework Python -I /usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/include/python2.7/ test.cpp

#include 
#include "Python.h"
int main()
{
    printf("C: Hello World!\n");
    Py_Initialize();
    PyRun_SimpleString("print('Python: Hello World!!')");
    Py_Finalize();
    return 0;
}

で、a.outってファイルができて、そのテストコードは叩けた。
が、Pythonファイルは叩けない。。

ぐぬぬ。。続く。。

2016.10.31

C++(or others)からpythonを叩きたくてpython処理系を調べまくったメモ
http://cocu.hatenablog.com/entry/2015/07/27/231044
うーん、めんどくさい。。

あ。shell経由だとpythonいけんのか。
ということで上記のpythonコマンドをそのままhoge.shにしてchmod +xして、
sh hoge.sh
でいけた。

でもやっぱshでたたいてもpythonはたたけない。。ぐぬぬ。。

ここでめんどくさくなってPythonで直接oscやればよくねって気づいてpyOSC使うことに。
https://trac.v2.nl/wiki/pyOSC

pip install pyOSC

exampleはこっち
https://github.com/conanxin/Arduino-Meets-Blender-OSC/tree/master/pyOSC_examples

うわーPython書きたくないって理由で探してなかったけどクソ簡単・・
はじめっからこれでやってればよかた。。

ということでMaxからosc経由でMS Translateたたけたので次このままChainer叩けるようにする。

ちょと今CPU環境しかないのでこいつをたたいてみる。15secくらいかかるけど。

python generate.py sample_images/you.jpg -m models/style3.model -o comp13.jpg

pythonでコマンド実行するには
http://takuya-1st.hatenablog.jp/entry/2014/08/23/022031
こんなん叩けばいいのかな?さっきと一緒でダメかな??

python generate.py sample_images/you.jpg -m models/style3.model -o comp13.jpg

と思ったらsubprocessで通った!

cmd = "python generate.py sample_images/you.jpg -m models/style3.model -o comp13.jpg"
subprocess.call( cmd.strip().split(" ")  )

ということでoscでchainerもtranslateもいけたのでめでたしめでたし。

つぎ画像キャプションをPythonからOSC経由で。

python src/generate_caption2.py -s dataset/dataset.pkl -i dataset/vgg19.pkl -m model/caption_gen_0099.model -l image/list2.txt

が叩ければおk。

ここでなんとか叩けて取得できたものをそのままmicrosofttranslatorに通そうとして、
ここでUNICODE問題に引っかかる。。。

ずっとうんうん悩んでたけどエラってたのは msg = OSC.OSCMessage() のmsg.appendにasciiがぶっこまれてるってところだった。。
ここでひげさんからUNICODE問題Python3だったら大丈夫よと言われ、理由がわかったタイミングとどんかぶりの中、このまま2.系でいこうかなと思っていた矢先に
anacondaの最新をうっかり入れてしまい、そのタイミングで2.系が動かなくなって仕方なく3.系に移行せざるをえなくなってしまったw 馬鹿すぎるw

ということでここで2.系から3.系に移行。人生まわり道である。

pyenvで最新のanaconda入れる。

pyenv install --list  
pyenv install anaconda3-4.1.1

pyenv global anaconda3-4.1.1 

バージョン確認。
pyenv versions

切り替わらん。。。

見ると (set by /Users/you/.python-version)
などと.python-version指定ファイルができててこいつを消したらいけた。

rm ~/.python-version 

これで切り替え完了。

python --version             
Python 3.5.2 :: Anaconda 4.1.1 (x86_64)

ここでPython3で全く動かん。。!!なんで。。!!
と思ってたらそもそもprint文がprint関数にってるとのこと。
。。非互換アプデって、そこからかよ!!!←まじで何も知らない

ということでここで改めてお勉強。あっ。時間ないね。

Python 3 入門! (他の言語から移住してくる人向け) #python
http://qiita.com/Wreulicke/items/e8f7290f6b4ff98e6142

つぎに色々いれてたモジュールをこちらにも入れる。
まずはmicrosofttranslator
pip install microsofttranslator

おk。

つぎやっぱChainerですよね。。。

% which python
/Users/you/anaconda/bin/python

% which python3
/Users/you/.pyenv/shims/python3

% which pip
/Users/you/anaconda/bin/pip

pipが2系のほうみてる。なんかうまくいってない。。ので
ここ見ながらもう一度。

Mac環境へのPython3系インストール
http://qiita.com/spyc/items/73d1295f8b3dde3b49ca

あ、pyenv rehash だ。

pyenv global **** でバージョン変更したら rehash を忘れない!!!!!!!!!!!!!!!!!!!

これで

% which pip
/Users/you/.pyenv/shims/pip

おk。

pip install chainer --no-cache-dir -vvvv

これでPython3系にchainer入った。

で、そのままやったら当然動かん。。w
chainer-image-captionのサンプルが2系で書かれてるので3系に書き直す。

print文を関数に全部書き直す。

さっきの。

cPickleもうない。

ここにあるように cPickle から _pickle に書き換え。
http://askubuntu.com/questions/742782/how-to-install-cpickle-on-python-3-4

import cPickle as pickle
		↓
import _pickle as pickle

pickleのデータロードのところでUnicodeDecodeErrorで怒られる。(それで3にしたのに・・・)

https://teratail.com/questions/28932
ここ通りバージョン毎にかき分け。

pickle.load(f)
	↓
if sys.version_info.major == 2:
    dataset = pickle.load(f)
elif sys.version_info.major == 3:
    dataset = pickle.load(f, encoding='latin-1')

PIL/Image.py のresize時にfloat使って怒られる。

http://stackoverflow.com/questions/17530100/python-pil-typeerror-integer-argument-expected-got-float
ここで教えられてる通り、適宜intで返すように変更してやる。

offset=((bg_w-img_w)//2,(bg_h-img_h)//2)

くらいの変更で動いた。
PythonはErrorLogが大変見やすくてかつ情報が豊富で楽ですね。。←

ぐあっ。pyOSCが2.系用とのこと。。
Python3.系用にはpython-osc だと。。またか・・。

ここ見ながらやる。
Python OSC (python-osc)
http://android.ohwada.jp/archives/7190

ほぼ何も載ってない。。
from pythonosc import dispatcherの
map及びhandlerのとこがよく分からないので調べる..

とりあえず、引数1個目がaddressでそれ以降argsの数分だけhandlerに引数用意するってだけだった。

Python3 foramat()についてのメモ
Pythonicな文字列フォーマットforamat()メソッド
http://gihyo.jp/dev/serial/01/pythonhacks/0006
Python3での文字列フォーマットまとめ
http://qiita.com/kAhn/items/2a7b4201beb0d467e5b8

2016.11.1

この辺りやってみたい ← まだこの時点で何作るか決まってなかったらしい(2日後設営)

Chainerを使ってTweetの感情分析をしてみる(第一回)
http://qiita.com/wbh/items/e07fd287393cab7211e5

chainer/examples
https://github.com/pfnet/chainer/tree/master/examples

深層学習フレームワークChainerの勉強に役立つページのまとめ
http://qiita.com/ichiroex/items/e0486a6dea1f14c2cfc2

RNNによる学習で文豪っぽいテキストを出力させる (aka DeepDazai)
http://orientalrobotics.blogspot.jp/2015/08/rnn-aka-deepdazai.html?view=mosaic
こちらで登本さんの日本語版やってる人がいる。

登本さんのやつと同じかな?
http://chainernlpman.hatenablog.com/entry/2016/02/17/023545

ここにデータセットのリンクまとめがある
http://www.wakayama-u.ac.jp/~kazama/lab/datasets.html
http://www.data.go.jp/data/dataset

申請必要だけどこの辺りのデータ使えるとめちゃいろいろできそう。
http://www.nii.ac.jp/dsc/idr/datalist.html
Yahoo知恵袋,楽天市場、ニコニコ動画、クックパッドレシピ、HOMES賃貸物件、不満調査、会話コーパス、
あたり楽しそう。

とりあえず愛というテーマでずらっと映画を上げてみる。
あんまり映画見る人ではないので内容ほぼ知らない。
愛とかのテーマで一旦こんな感じの作品を用意。あってんのかな??

・タイタニック Titanic
・ショーシャンクの空に The Shawshank Redemption
・レオン Léon
・美女と野獣 Beauty and the Beast
・フォレスト・ガンプ 一期一会 Forrest Gump
・アイ・アム・サム I am Sam
・インター・ステラー Interstellar
・ビッグ・フィッシュ Big Fish
・遠い空の向こうに October Sky
・ゴーン・ガール Gone Girl
・Her
・アニー・ホール Annie Hall
・風と共に去りぬ Gone With the Wind
・グリーンマイル The Green Mile
・アルマゲドン Armageddon
・きみに読む物語 The Notebook

ライフ・イズ・ビューティフル Life Is Beautiful
ニュー・シネマ・パラダイス  Nuovo Cinema Paradiso
死ぬまでにしたい10のこと My Life Without Me
アメリ Le Fabuleux Destin d’Amélie Poulain

バタフライ・エフェクト 関係ないけどめちゃ見たくなったw
メメント 久しぶりにみたいな〜
かもめ食堂
ホノカアボーイ 見たかったの忘れてた

以下当時メモ。

とりあえず映画を見ながらどんどこキャプション打って行くみたいなスタイルで作れたらいいかな?
んでそれでできた映画のキャプションを全部食わせて見てどんな愛の物語ができあがるかみたいな?

まーでも画像からのキャプションだけでは状況を淡々と食わせて行くだけなので物語をつくるのは無理だろうな。
ここに字幕からのOCRもしくは会話からの音声認識を組み合わせて会話内容まで食わせることができれば
少しは物語の脚本部分に該当する学習データができるのかな。
ただ、やっぱり概念とかの言葉や情景に現れ辛い、文化的な側面に影響する部分は学習させられない気がするな。
そこに関しては強化学習?的に繰り返し重み付けを行なって行くという方法で学習していくのが一般的なのかな?
と、とりあえずやってみたかった事と、今のスキルでは全く展示までには届かないということがわかったw

まーでも何かしら展示はするのでとりあえずやりたかった事はできないにしろ
無作為に愛の物語を作って見るっていうところまではやってみようかな。
文法的な仕組みは学習できるということよね。

こういう仕組みでこういう時はこうという場合を学習していくっていうのと、
経験則を理解して提案する、考え出すみたいな方向は別だと思うのだけど、その辺り勉強したいな。
http://gigazine.net/news/20151104-gmail-inbox-smart-reply/

RNNによる学習で文豪っぽいテキストを出力させる (aka DeepDazai)
http://orientalrobotics.blogspot.jp/2015/08/rnn-aka-deepdazai.html?view=mosaic

の人のやり方で文章を作成させてみる。

data/tinyshakespeare/input.txt
corpus length: 1115394
vocab size: 65
1.0/22307.88, train_loss = 4.173169136047363, time = 1.22


data/dazai/input.txt
corpus length: 2740726
vocab size: 4255
2.0/54814.52, train_loss = 7.618920803070068, time = 6.49

--seq_length 15 <- 50
—batchsize 100  <- 50 に変更してやってみた

1.0/274072.6, train_loss = 8.351625442504883, time = 1.17

1回の解析の時間はseq_lengthに依存して
何回回すか(27万とか)はbatchsizeに依存してる感じですかね。

なるほど確かにtrainのparam次第でめちゃ結果が変わるだろうなこれ。
この辺りのパラメータ調整がむずいということか。。めちゃ経験則によるところだな~。

これだと収束しなかった。。。この辺りの肌感が全く分からないのでむずい。
むーパラメーターによって収束の数がだいたい決まるのかー。
train_lossがどれくらいだったらおkなのかね。。わからん。。。

とりあえず全然収束しなかった太宰治。

私はその来た一様使んものである。ゆん、三年間に報遠《んま》りなくはつの読んでも或むのに、あの膚屋の郵屈記で書きて、よくそそ《うあ》に編した。かには兄さんからが、とさり二居の迄」まか、太局織《すうがで》なにさんは、あたけて春《わき》を子ばて来かへ新《つ》さ」と一程の物の胸さぬは。つまのとで「おそんのはす立つた。また、」少在のえけたらした。迷想に切い生ける、この二人たと、迎ずさかた黒理した。」
「こうして、これ以強よいお庭は逢きます。母は、世のえ足な何へはなで、このとはミ義、業継に手かく政黒つて村の改駈 それない彼に指げき《かね》しまして、僕はりこもるとす。「こんから聞いてゐるのが、新様家で何だけ、青い苦から、将伏が出てもありますが、差すたこつめと思うですか?」どうだ。あの本合で返袋の息になましたようだ。ない。いいような前だ。もうだ。そう言って言って居れた。の達を退上して全理からなどました。どうが、も二月チの脱女《こかまお》の天説できって、助方の諦康の場子ない。きて、腰、知みました。
「階人の。こうして晩もこかれずたして必る。何は、教けた。な時らにいる。
「」けらで。たっと出待めて
」僕だ。」
 ロウヤスの人」も聞った。もうも海を見た。周は、あなただもか正知らあまつたのれ。それに十分にいた女に、それから、男のって下ンを奮し、つけても、《へ》ろうさび奮さったなるんは、何でもつまいのの顔が思いたのを可って、しまいあ、そんは、ふづめ、澄って集へもばにないましたんです。洲が、いや特走から送って、もいは助画で、見え泣い不つてあった。それかか長にくなってそれをはてくわめろういと、出ておそっぽりめだ切な笑ら力、第縛たりにュリスチエと文帝は出さろ、ね気の予目、葉市のやうを時まりったのである。英丁的だと、ごめますい気を取《る》せた。こうな自節で、屈察の風の瓶を種をでいたええば、私は、夜《わげ》のお母に書かずムシイ坊の謝拠《はじげ》でなう。
 悔堂なそとが、怒りぷれます。日七頃の肉子に青政市のか、その発装と払けた。「薬息半分をはろうい死れ、午年もか。」
 小宰人は、二悪魔の放羽を表《いわま》っている。しげぬい二ャリホスをドオフ的我縫にめてられていて、ころなまらのかかつたくからずえどくした。——わから強い講度ででもなかった。私はふくまして来て、やかのようにしてからありで、彼はも思んとやりだ。
 思あなにまらな。さいあり、背日ハリンいもうびたりも同目、閉癸《はかつ》たっと即く、教転まれて正締、三匹
「すっら。
 私は畑さんは、慈分を思い、
「しねると米漢なと二十歳は、妙たちでも、そのはがら泣いても、私は、いらもウロズのものざんのききだ。
「生子、ばましは、それもな金が戦詮に堪敗しためかって傍が、こうつどは必しす気持の断えい。
 そこか、いいのを移しなかり、
 とこれが、笑ってゐたのですね。」
「やうと言ふが小かせくも永面しながら見て、自分の世軽画者が、神亀へ歓いっては無く、そのころだもらしましているという。明巻の真に出用してゐるよう思ったのだう野風の愛して、退芸でかったんと、私に、にめと男をなわんだ見している。ああ間に、ための小思く声、十だ全きかけるようでもらに畳中、絶稽な筈自天の乱箸が家途古鼻の大美し、飲ざいい—そのお窓供と黒達を、睡く離れ出して、はちにもて後ごぞめ、将分は俳刊へ冗談したかけもさ。雨家は初謙会をそれは来よう、短噴い由文づまは菊からの熟籍作つんに軽く重して台何だぐら、押も信用が険でそうかからした。
 今の晩の手張は、洛せて九もったら、しが飛んに思います。といってでは何だ。私は、時母。わなれても朝関義すた。ワル)詩に尋って、海の気目である。三分等な事なもだいか。この手みながら仏を礼意きましたものである。居りその男に麗さだと、、ねぶん、罰に、廿悪眼を気そうとするのと思ったんです。私は、かことりど、死合《いんさ》が事、いちど水して、くすしき上《てぐ》に役所さら話なたんで来るほうである。品、敵と伝好《じぶゆ》う、それからこうして、二十三君かる。今と、僕を、電殺に妃る。さだ。山のけこだ口変い。女のお言うへ、男んことよっきそんな友田のない時たちも何を覚える事である。祭だ」
「待わうだ、っと言き
 三十二も、乞ち、お承図で 八岸も、ほち、ことよいしたエツトも無く引いたと言葉ですのですい。八十日歳でも、さう、いんにすろ傍が厚いと控るのを教えたほうさい人である。私にはせり人なら見ぶつた。さう事に悲して、神鹿ごってかった。
 そのホンスと誰の注強の演草めへかなもことか。自分にさしむ頃、尉半己《かこにこ》が虫を確影した困かの空新較んに致せずしたぞ、それの島のまの御秋男はく、匹れたんでは、ごびつで、でも君が、あたり?「しから、ゆけは思って、それは見づけたように、手の%

もいっちょ別の収束しない太宰治。ワガママね。

私はっと、それで質赤《ままん》は、理身である。夕油が」
 四日あらました。また語常みういなのだ。私さんのです。その大回さんの知る人に就いていたのです。」
「その五」とお百人御友人は、んだ紅屋を見ると、またのぱらは、せ金に迎えて、と納んな人にこぼえで、そう表気に負いている人性は、なあまらしさぎて二文は見せなのである。狂曲を私の歌が、一安も東京に体な無熱事で、とものを、日長《ほこあめ》です。僕は大いどのとのは私供が目で出来なきなわった。この雑居の亀で不密とふれりいましたものか、此の礼から習名とぎぬ。ポチ「ほっと、メラチは、人は簡強も、いつとその人からけまごたくらせらしたら、メモド酒の海にケーツッタも二、無から、皆の苦微してあたなしさう経ってこれろいらしますかったが、何なものだ。 藤舎の芸草ででしょう。昔も、いりは、美しく、「しいちにりに見じた。」とは? 上れな声ように、大活をことしおその人でも、本手も和書楽、心をぐからしんごくに、としたのです。あさへまたと、いつ、すい上である。れど、こんもも間、いどであったからです。する」 十味、と言ひよう。曇られいそとはある。
 大人様は、至傾しこへ無さくぬ、部生と帰るしと屈人を発父してくれば、自分の脚つ、れいわけていったら、気の手事が、それだ。先生は。地聖でに逢い出した。かよかすためていてびれて、》石《さちさすん》するばうれられる。私は、いま五「白いかれに置けても、しではしいのを思いなった。誘やに毎姓の食作のに来て、議さんな慾をならぬ燃えから後的の中の日、宝将《とんんう》古くそれ同上よした、
「ずなりをふって行いて、もっぱり、なくも三他の和斎きよっぱり意、パルアョンである。こうして大きかの方ぜられた。彼は、遊びでしたのに、また生っても自分を凄段さましてみたようにすんなすた発養に、期あれ立り。…—私は、仲方さんはは、バツカさんと、軽くも、そのろうなおかぐ起たでノンテマーの練わま十の萄人は、電幸も見いた。ハンツイや歯のばいぶふじめても致しました。ああどい津軽若の君を不靴を考なるように人はをって下さい。の台女が、それだって、少し自分で、いい女の、ヤイウル集、賢申に脱つてする事が無くなってげた。
 私は婚さし、私はらく歩くことが読子でした。「一名は、学生戸のがしながら行して、大女のむてに眼の生おかまりの学生《こまう》わ、甚と若い気も言いになら《げごの》のいまの?
 あなたは何だ。
 ょがた。夫筆のひと減な三つ、あてっはボイあたるなんですよ。ひち
「ああいといつもも感じたい。普聞どから、
「き用う。掌へ、わがいたら、津軽につくは、こまもいた。いた。大きい、かの実を申しして)行れないようである。
 私は、うにだたでづるねけれどね、見用かって永く、こう、休くねり?「時に居り、まこでもらかれならない事で、らりはこのまかり悪いったか」
「うや辞きが五羽を得てけて居ってゐた。兄さんは熱地やりたくないのだが、奥を以宅させられました。また、
「光ちいました。これから紳生を抱くが、身供の気学が持ってが裏を感情奉してならないようではお方見は、どんなのだひて言いなにけめきも、私は、審局が、の派の心下に見いました。
「高説ょれ、これんにいる気に豆族のほう嘆口を飛ぶおきりで、しづょいい素じりしな負いを違ってしまったを、私も、おやしく上ったおいったら以切ったおしょふ話の門の茶多い北田重茶の崩の顔をぼとさっなければならぬことな火が或い出るでした。言ったのだから、けれども何は全信から思われてこの召《べき》《いきぞ》の手に中ろいないが起くあら。すがう。こんなが、存じて、この蒲通で、あたしの散儀を歩つてゐます。四位知らしを、わるいだのだとお幽しその子話ではないらで、よう、殿の奥苦しは、気無って、「文田も火にてて直さんとないだえた、お母な物が立ってたの、それでは、お友才の親屈の一部はこのばんとお嘘に、オムーックははすっだいのでございません。何はの機紙を思ってりる。僕たちのほうをなって來て上さい会交女に低いて、いかかんのお気をひとっと打ち渡いなく語つたのも鬱《し》にまだい、
「津田とである。とうそ。一度ことに就いたが、眠っていまさん。けれども、進外の事であったのはあった。神。私はお大
 三十二六日電生、さびが、ふわむわいのほとから私は、青煙校のるけに哀い貸して舌の底をも統。まては、何でも、番記ないがきの|振ったといやくみょうぶんを言ってやります。私が、」
「三で生ょう気があるが、傍にへ。熱宅の返手かすが、いまも、或くで、手子がつく女の店御かくうかなかて、八円より図滅し方よっていられか、文画さん少し剣城から」よ寄れた団村人の木例の」へ奥さんは、おえにはないようなやわ、っとて、しといりねど、あたりほど、はらいきおつかずな。その言葉を考えた。「もうい%

日本語コーパスがあった。
http://aozorawing.osdn.jp/
http://readingmonkey.blog45.fc2.com/blog-entry-715.html

http://readingmonkey.blog45.fc2.com/blog-entry-601.html
なんかここ見てたら太宰治より海野十三って人の方が分かりやすい言葉遣いじゃね?ってなって
この人の全文ぶっこんでtrainさせてみることに。小川未明ってひとも。

作家別一括DL
http://keison.sakura.ne.jp/agyou/agyou.html

% sh train_ unnno.sh                                                                     (git)-[master]
data/unno/input.txt
corpus length: 5071324
vocab size: 4201

1.0/101426.48, train_loss = 8.338003158569336, time = 1.91

10man epoch…

6時間くらいかかる。。

oF側やろ。。

2016.11.2

ようやくoFのアプリにはいる。
ここで更にoFの最新バージョンが0.9.7に上がっていることを知る。。
実装しながらデザインしながらなんとなく機能組み込んでく。

...できた。

今年は初のグループテーマ「愛」ということで、 AIxAI って作品を作りました。 人工知能で愛情をどこまで感じれるのかって疑問から始まり、機械学習を始めてみました。 愛をテーマとする映画を見せ、機械学習でリアルタイムにキャプションをつけていきながら、機械から見たその映画の概要を文章として生成し、その文章を元にRNNで「Love」という単語から文章を自動生成させてみる、という所までやってみました。 結果的にはやっぱり全然勉強&力不足で愛を感じる所までは到底辿りつけませんでしたw が、初めてのPythonやら機械学習やら久しぶりに新しいこと勉強できて最高に楽しかったです。:) 会期中もずっと学習し続けてるので、 健気に頑張るこの子を見てあげてください🙇 あと今年はインタラクティブ一切ナシでごめんなさい🙇🙇 #unframe #unframe004 #chainer #openFrameworks

you tanakaさん(@rettuce)が投稿した動画 -

と、読み返したら思いっきり最後の1日で固めてた。
終盤につれメモの分量が劇的に減ってゆく。。。

来年こそは計画的に!

you