1時間で画像生成の環境構築(Keras-GAN)

Notionでメモを取っていたら、意外とまとまったので投稿してみる。

Intentions

  1. 環境構築
    1. GPUライブラリ(CUDA, cudnn)
    2. Pythonライブラリ(keras, tensorflow)
  2. Keras-GANの実行

Happenings

バージョンを合わせないと駄目っぽい。

最終的にPython3.7、TF1.14.0、CUDA10.0、cudnn7.6.0で落ち着いた。これはKeras-GANの環境に限った環境なので、コードごとに環境を整える必要がありそう。

ACGANの学習を実行した。10分もかからずに終了。MNISTサンプルではこんなものか。

次はとりあえず、カントクデータをface detectionして学習する。

結果のログ

epoch 200

f:id:wakadori_Mk2:20200401194801p:plain
epoch 200

epoch 2000

f:id:wakadori_Mk2:20200401194833p:plain
epoch 2000

epoch 14000

f:id:wakadori_Mk2:20200401194836p:plain
epoch 14000

Grateful for

  1. 久しぶりにGANをぶん回したので精神が安定した。
  2. 環境構築を1時間で済ませられた、えらい。

Action items

  • [ ] face detectionの実装。
  • [ ] 入力データ形式に変換する。

仕事の一生を歩兵で終わりたくない

「アニメが好きでML1研究をしていたのですが、仕事としても活かせることに気付いてしまった。そして自分で物として開発できるのって凄く楽しい!」

読んでくださってありがとうございます。wakadoriと申します。現在は新卒でメーカーに入社し、MLエンジニアのようなもの2をやっています。

就活時のマッチングとしては分野が近くて、適切に選択できたと思う。私はMLの研究3をアピールしていて、先方はAI分野を意識した組織再編をしていて、そこにスッと入り込めたのだと思う。

数カ月に渡る長い新卒期間を終え、配属ガチャにも勝利し、無事その「AI分野を意識した組織」で仕事をさせて頂けることになった。

詳しくは守秘義務契約があるので書けないが、結構規模の大きなプロジェクトを進めている。今のところ5ヶ月半はそこで仕事を続けられたわけなので、それなりに自信はついた。

そこで感じた気持ちは、研究と仕事とでは全く役割が異なるのだということ。研究が生み出した新たな知識や技術を、仕事が価値を付加して社会に還元していき、消費者による消費がさらなる研究や仕事の活力になる。

ミリオタなので戦争に例えるけど、WW1では塹壕が発明されて、恐ろしいほどに戦線が膠着したらしい。それを突破する方策が色々考えられていて、その1つが戦車である。装甲に機動力を持たせて突破する発想で、実際に戦線を押し込んだ例もあるらしい。詳しくはマーク1戦車のWikipediaでも読んで欲しい。 ja.wikipedia.org

話が逸れたが、研究と技術の話に戻る。塹壕戦では戦車が最先端の戦線を生み出し、一方で歩兵たちがそれに追随する塹壕を整備し、戦場に還元するという流れがある。もちろん、戦車が数台あったところで戦争に逆転勝利するなんてことは無く、歩兵達が堅実に戦線を支えてくれてこそ、戦車の効果は発揮できる。

そういう意味で、今の仕事はとても価値のある仕事だと思う。


ただ、私はこの仕事を3年も続けられないと思う。一生を歩兵で居たくない。自分が戦車になってかっこよく戦線を突破したい。敵の懐に大穴を開けてやりたい。そうやって成果を上げて、次世代の戦車も生み出せるような力が欲しい。

弊社は所謂JTC4で、社内システムも旧態依然としたものを使い続けているし、一向に更新する気配もない。事情は色々あるけど、一番の原因は社員の年齢層が高いことにあると思っている。チャットソフトやクラウドを使う発想すら無いんじゃないかと思う。心理的に抵抗があるのだと思うと強くは言えないのだけど、はっきり言って効率が悪い。

そして怖い。私もこの会社で勤め続けて、社会に技術を整備する地味な歩兵として、一生を終えるんだと思うととてつもなく怖くなってくる。最新の技術に関心を持つことも無く、降ってくる仕事だけを必死に捌き続けて力尽きる。そんなの誰でもできるじゃん…。俺はやりたくない…。

ただ組織を変えるのは労力がかかるので、自分が動くほうが早いし楽だと思う。言ってしまうと入社当時の4月時点で転職活動をしていた。今もたまにやっている。LinkedInとかPaizaスカウトとかやってみて、ある程度は職が存在することを確認している。


一方で私生活のことを考えると、現在が考えうる最高の状態だと思う。通勤は徒歩5分、家賃は1万、残業はこの5ヶ月半で合計0時間。社宅なので光熱費も払わなくて良い。可処分所得と可処分時間がかなり多いので生活が楽である。

きっと給料が2倍とか3倍とかの職につくと、ある程度は残業したり家が遠かったり、なんだかんだ時間が無くなったりするんだろうなー、とぼんやり考えてしまう。そうすると動きたくなくなる。一生をこのまま安静に終えたい。


また、今年は初めて勉強会に参加して、その成果を技術書典85で世に出すという所まで来た。自分でWebアプリを実装してサービス化するのである。自分で自由な開発ができることにとてもワクワクしている。以下は11月に発表した構想をまとめたスライドである(宣伝)。ちなみに技術書典8は2日目の3/1です(宣伝)。 docs.google.com


とりあえず戦車になれるように装甲(筋肉)と機動力(技術)を身に着けていきたい、2020年はそういう年にしたいです。2019年はありがとうございました。良いお年を。


  1. Machine Learning, 機械学習

  2. 設計と社内折衝がメインでコーディングの機会を得られていない

  3. 画像生成モデルの損失関数の改善

  4. Japanese Traditional Company. 昔ながらの日本の社風を表したスラング

  5. テックベース合同会社が運営する技術分野の同人誌イベント。

日本人はなぜMicrosoft Officeから逃れられないのか

毎日エクセルを使って仕事をしています。皆さんも日本人ならMicrosoft Officeでエンジニアリングしてますよね?

そんなわけあるかい、って思った皆さん

ちょっとした調査でもエクセルへの関心が高かったり、G Suiteとシェアを奪い合ってたりする。これは間違いなくエクセルやパワポに馴染みが深い人が多いことを示してますね。

個人的には「エクセルで仕事をするなんて死んでも嫌だ!俺はプログラミングをするぞ!」っていう気持ち。 これは決してエクセルを使う仕事を貶しているのではなく、ただ単に私がエクセルを使った仕事を知らないだけだと思う。

実際に会話の中でも「エクセルは無いよなぁ」という話になるし、ぼんやりした忌避感はあった。もとい、今もある。

しかし社会人になって周りの話を聞いていると、どうも世界はエクセルで回っているらしいことが分かってきた。 観測範囲だと設計工程が多いので、そりゃあエクセルやパワポを使うのだろう。 後継的なソフト(G Suite、Office365など)を見ていても、名前は変わったとしても表計算やスライドショーという概念からは逃れられないことが確実。

そういったエクセルがメインの仕事がやりたいかというと、未来永劫そういう気持ちは湧かないですね。 もちろんエクセル仕事の背景には複雑な要件とか人や組織の動きがあって、そこから価値を生み出しているんですけど。 自分自身の力で物を生み出している実感が無くて虚無に陥っているのが現状かなぁ、と分析しています。

世の中の経営層はきっと手を動かしている暇なんか無くて、人と折衝するのが仕事なんだろう。そういう仕事にも私は興味が湧かない。 しかし大きい価値を動かそうとしたら、そうやって人を動かして見えない所の力を利用しないといけないし、すごく理に適ってる。

極端なことを言えば「プログラミングだけで食いたい」ってことですけど、それはプロ野球選手とか漫画家に近いような物で尖りすぎてても潰しが効かないし、仕事が無くなった瞬間に詰むことが明らか。

世の中を見ればプログラミングに興味のある人は5%も居ないだろうし、プログラミング自体に価値が生まれるわけでもない。プログラミングを裏に使って効率的に作られた「素晴らしい何か」を世間は求めてる。

その「素晴らしい何か」を5秒でも5時間でも作れれば良いのですけど、それをやるには結局のところ世論を調べたりとか顧客のニーズを調査したりとかする。もうその時点でプログラミングからは逸脱してますよね。

さて、プログラミングをやりたい皆さんはどうやって仕事してますか?教えて下さい。

独りよがりの精神をどうにかしたくないですか?

TL;DR

※人間が無理な人間が心情を吐露しています。

何言ってんの?大丈夫?

大丈夫じゃないかもしれません。社会人になって4ヶ月を過ぎようとしております。研修が終わって具体的な仕事が見えてきた段階に至って、人間と関わることが避けられないことに気付いて追い詰められた顔をしています😭。

何してる人なの

修士で画像生成やってました。二次元美少女を生成できそうだと分かって研究したは良いが、仕事にはならないことに気付いてしまった。結果、就活に身が入らず適当1に入った社で新卒やってます。なんで博士行かないのとか言われたらお金が無いことだけが問題でした。

どうしたいの

 画像生成やってるだけではどうも上手く美少女は生成できなさそうなので、ひとまずエンジニアとしてスキルを高めたい。AtCoderで茶色になったり、Webのフロントエンドに興味を持ったり。とりあえず自分一人(!)でWebページを作るところまでやりたい。

独りよがりが何なの

ひとりよがり [4] 【独り善がり】

"自分ひとりだけでよいと決め込んで,他人考えを全く聞こうとしない・こと(さま)。"- 三省堂 大辞林

本当にこの通りで、ある人には「孤独を愛している」と評されたこともある。

しかし、仕事をする上では "人間の指示や要望” を聞いてその通りに遂行し、 ”周りの人間たち” に不快感を与えない振る舞いをしつつ、 ”人間の期待” に応えないといけないんだ。世の中には人間が溢れていて、独りよがりの人間が生きるにはつらい社会だ。

希望はないんですか?

そうやって人間で消耗した精神を、平日や休日の可処分時間を使って回復している状況。これはキツイですよ(ガンドリ)。具体的には趣味のゲーム、コーディング、ニコ動、とかをやってる。平日にブログがこうして書けるくらいの余裕はあるのが救いか。

ゲームと言えば音ゲーをやっている。普段はチュウニズムをやっているが、先日リリースされたWACCAも面白かった。腕をブンブン回してプレイする様はmaimaiにとても似ている(マイマイマーではない)。

これからどうするの?

正直言って仕事は面白そうなので、しばらくはやってみるつもり。しかし将来性が薄いというか、フットワークの軽さが無さすぎて、せっかちな私にはフラストレーションの貯まる社だと思う。

転職は避けられないと思っているが、先述の通り転職活動には人間が存在するので、難易度が高い。なんとかして人間が少ない環境に身を置きたい。

対面でのコミュニケーションが無理な部分が大半なので、リモートワークというのはかなり理想の働き方だと思う。ただ現状では成果の出し方がわからないので、それをまず習得する修行が現状なのだと自分を納得させている。

後は二次元美少女の生成を続けるために、データセットと環境を用意する必要があるので、GCPクラウドサービスを主に触っていきたい。ツイッターのいいね管理を快適にするツールなんかも作ってみたい。

終わり。読んで下さってありがとうございます。


  1. 適当と言うと語弊があるのですが、二次元美少女を生成する仕事ができないことが悲しすぎて世界の全てが闇に見えました。

社会人、茶色になる

社会人2ヶ月目を生き残り、ソフトウェアに関する技術をインプットし続け、その上でAtCoderで茶色になれたので嬉しいという気持ちを投下する。

社会人

 修士での研究を修了し、技術を使って社会で活躍していくぞ、という気持ちを持っていた。しかし会社で待ち受けていたのは技術とは一切関係のない研修ばかり。それがつらくて人前で泣いてしまった、情けない…。

 しかし社の人達はとても良い人ばかりで、そんな私に優しく接してくれた。おかげで心的なストレスはかなり軽減した。また、同期のメンバーも仲良くしてくれて、日々仕事のことを忘れて一緒に遊べたというのは、とても楽しいことだったと思う。

技術

 なんだかんだと言っても平日5日を仕事に使っているので、それ以外のことをやる時間を確保するのが難しいことを実感している。特に技術的な話題は休日2日だけで到底キャッチアップできるものではなく、機械学習においては最新の論文を眺めてみたり、AtCoderにおいては毎回のABCでABだけを解いて茶色になってみたりしている(嬉しい)。
 京都が近いこともあって毎週末に出向いて楽しんでいるので、それに時間を使いたいというのもある。(というか週末は死んでも仕事のことを忘れたい)

これから

 今の仕事はほどほどに、自分の好きなことを仕事に出来るよう技術力を高めていきたい。とりあえずCD問題を解けるようになって、水色くらいにはなりたい。

 また機械学習に関しては、画像生成のためにまずデータセットを集めたい。私が働いている間にデータセットを集めてくれるような頼れる相棒を作りたいので、PaizaCloudにサーバーを建ててDjangoを使いTwitterAPIを叩くつもりだ。
 モデルとしてはdisentangledなcGANが使えると、絵師ごとのイラスト生成が実現できそうで楽しそう。こちらの論文も詳しく読みたい。

f:id:wakadori_Mk2:20190602103300p:plain
NEKOPARAのSayori絵(上段)が再現される世界ヤバくないっすか?

参考文献

Disentangling Style and Content in Anime Illustrations. Sitao Xiang, Hao Li. 26 May 2019. arXiv.

深層学習で修了しました

好きなこと、楽しく研究しよう

研究するなら楽しいのが大切だよ。だから自分の好きなテーマで研究して、やりたいことやったもん勝ちの気持ちを持っていこう。

 こんにちは。記事を読んで下さってありがとうございます。@wakadori_Mk2と申します。この記事はNitech Masterを修了したてで社会人1年目の私が書いています。研究が楽しいという気持ちを記録するための備忘録です。また、技術的な話を最後に載せてます。特にこれから研究室配属される学生さんや、深層学習の研究を一から始めたい人が対象になります。読んで面白いと思って頂けたら、ぜひシェアして下さい。

趣味と深層学習の出会い

 当時の趣味はゲーム、二次元、ニコ動、ミリタリー、Wikipedia。ひたすら家に帰って趣味の時間を確保するためだけに、講義の課題などをこなしていた。高校時代からそんな感じなので、可処分時間のほとんどを勉強ではなく趣味に注いでいたと思う。講義を受けるのは好きだったが、勉強を進んでやるほどではなかった。技術的な話としてはレポートで使ったLinuxLaTeXEmacsの使い方だけは上手くなった。

 深層学習との出会いはSIG2Dという同人サークル。好きな二次元と、なんか凄そうなパターン認識という物が活用されていることに感銘を受けた。私もぜひ二次元×技術的なことをやりたいと思った。するとどうやら深層学習(≒ディープラーニング)なる技術が存在するらしい。アニメショップでバイトして、きららフェスタ2016の待機列に並びながら深層学習の参考書を読んでいた。

未知なる研究の世界へ

 ちゃんと勉強してて良かった(マウント)。GPAが特段高かったわけではないけど、GPTが多かったことが有利に働いたようです。他の学科や系の講義も受けに行ってましたね。そのおかげで研究室配属は希望通り、院は推薦で受かりました。

 いざ配属されて深層学習のサーベイをしてみると、知らないことだらけで調べるほど面白いものが出てくる。MLP(多層パーセプトロン)やNN(ニューラルネットワーク)やらの勉強から始めたわけですが、この時期にVAEやGANの存在を知りました。これら画像生成技術が存在するなら、イラストと組み合わせた研究も出来るのではと考えました。

好きな物のために何でもやろう

 思い返すとイラストと深層学習の研究をするために何でもやらざるを得なかった。研究室では深層学習の研究が開始されるタイミングでした。関連研究サーベイ、ハードの整備、ソフト実装、何から何までこれから調べて使おうという時だった。

 NN界隈のサーベイをし、Ubuntuマシンを弄り、Pythonの勉強を始め、GANの実装を勉強してました。当然深層学習やりたい私は自分からその役を買って出てた記憶。研究室の方針もありサーバーを借りるという事はしなかったので、TFは難しそうでChainerに落ち着き、かと思ったらCUDAインストールでてんやわんやしてたり、UbuntuGUIが開かなくなったりsshで繋いでみたりと色々環境構築に苦戦してました。

 技術的なことは調べれば分かるのですが、新規提案手法を考えるのは時間がかかっていたと思う。自分の研究のウリを考えるわけですから、ほんとにわかりやすいのが良い。後から考えるとナイーブもナイーブな手法だなーと思うけど、研究なので効率は度外視ということで…。しかし、一度やることが決まってしまえば一心不乱に取り組むだけ。実装、実験、論文、実験、実験、実験…。波に乗っていて考えることは少なくなったと思う。

深層学習を仕事に活かしたい

 就活は第1,2,3志望に落ちて、第4志望に落ち着いたのが現状。対人スキルが足りないかなーという気持ち。二次元に沼り過ぎて三次元とアイコンタクトするのがしんどい。世界が全て二次元に見えると楽しいのに。二次元沼だけは人生ミスったなという気持ちがある。

 今の仕事、転職、フリーランス、色々やってみたいと思ってる。しかし、これまでの人生を振り返るとレポートやら研究やら何でも一人でやってきたなと思う。そのスタイルに近い仕事がフリーランスだと知った。それをやるにはまず自分の価値を高める必要があると思う。Git、Kaggle、AtCoder、LeetCode、Colaboratory等。ブログを書くのもその一つです。リソースを自分で持たなくて済むという意味でクラウドは凄く役立つと思ってて、特に機械学習に使えるColaboratoryはありがたい。現状ではメモはSimplenote、記法はMarkdown、マシンはChromebookに落ち着いています。

現在と今後

 今は割と楽しいかも。ただ機械学習エンジニアが私一人しか居なさそうだし、社内のシステムやソフトがレガシーなので時代に置いていかれそうなのが懸念事項。プライベートでなんとかキャッチアップするしかない。とりあえずTwitterで技術者の人をフォローしてる。ばんくし(@vaaaaanquish)さんのようになりたい。3年くらいで転職したいと思ってるので、画像生成技術のお仕事があったらぜひ紹介して頂きたいです。

 今後は機械学習をとりあえずやって行きたい。カントクさんの絵師AIを作って私だけの為のイラストを描いて貰うのが夢です。StyleGANが出てかなり良いところまで来てると思います。二次元が世に溢れる時代は近い。

技術的な話:Google Colaboratoryはどこでも使える

 10分で動かすGAN on Google Colaboratory - Qiitaに書いたんですが、サーバーを買うお金も借りるお金も無い場合にとりあえず使えるのがColaboratoryかなと思います。時間的、性能的な制約はありますが個人で使う分には十分かと思います。KerasコードのMNISTが動かせるくらいのマシンパワーはあるようで、下手すると研究室の設備よりもパワーある…。全然関係ないんですけど毎週のAtCoderコンテストではPythonテスト環境として利用してます。

まとめ

 今は社会人1ヶ月を生き残ったウェーイくらいの気持ちで生きてます。1,2週目は涙が溢れて止まらなかったので、精神的にやられてたんだなと思う。でも同僚や上司の方たちは良い人ばかりでとても過ごしやすい。生き方としては今くらいのテンションで、もう少し技術的な要素を増やして行きたい。技術で仕事が出来るともっとテンション上がって楽しそう。

 読んでくれてありがとう!それでは~