SlideShare une entreprise Scribd logo
AAをつくろう!
佐藤 貴海
@リブセンスTechNight 1/28
@tkm2261
自己紹介
名前: @tkm2261
専門: 経営工学/数理最適化
所属: 株式会社ブレインパッド 2年目
お仕事: 分析何でも屋さん (研究開発)
趣味: 自転車
自宅 ⇒
過去にやったこと
仕事の内容は大体話せないので・・・
過去にやったこと
基本的にネタ要員
本題
みなさん、AAはご存知ですか?
AA(アスキーアート)
アスキーアート(ASCII art)とは、
プレーンテキストによる視覚的表現
技法のこと。テキストアート、活字
アート、文字絵などとも呼ばれる。し
ばしばAAと略される。ASCIIでない文
字コードのテキストアートも日本語で
は「アスキーアート」と呼ぶ。
引用 Wikipedia
確認されている最古のAA
(1898年)
引用: http://www.roysac.com/asciiarthistory.html
でも、こんなんじゃなくて・・・
こういう方がいいよね!
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
どうやって作ってるか知ってますか?
そ
ん
な
ん
最
近
は
自
動
の
ソ
フ
ト
と
か
あ
ん
だ
ろ
?
全部職人芸です
http://www.geocities.jp/mata_ri_watch/salon
_01.html
詳しく知りたい方はこちら
• クマでも分かるトレースAAの作り方
http://dokoaa.com/trace/
• ゼロから始めるAA講座
http://www.geocities.jp/mata_ri_watch/salon_01.html
∩___∩
| ノ ヽ
/ ● ● | クマ──!!
| ( _●_) ミ
彡、 |∪| 、`\
/ __ ヽノ /´> )
(___) / (_/
| /
| /\ \
| / ) )
∪ ( \
\_)
やる夫スレの作者はどうしてるの?
2chにはAAに語らせて、
漫画みたいなの作るスレがあります
/ ̄ ̄\
/ ─ ─\
| (●)(●)|
____. .| (__人__) |
/ \ ` ⌒´ ノ
/ ─ ─\ .}
/ (●) (●) \ }
| (__人__) | ノ.ヽ
/ ∩ノ ⊃ /∩ノ ⊃| |
( \ / _ノ | |/ _ノ | |
.\ “ /__| | /__| |
\ /___ //___ /
歴史系の作者はコイツ何者だってレベルの知識量
マンガ日本の歴史のAA版 (地図も全部AA)
やる夫がフューラーになるようです (ヒトラー)
やる夫は鎌倉幕府を成立させるようです (鎌倉時代)
やる夫が徳川家康になるようです (安土桃山)
AAで学ぶ南北戦争への道 (アメリカ)
やる夫が『梅松論』を語るそうです。 (南北朝)
etc…
やる夫スレの作者はどうしてるの?
方法1: マルチラインテンプレートを使う
過去作成された膨大なAAがインデックスされている
やる夫スレの作者はどうしてるの?
(´д`)Editというツールで閲覧・使用が可能
編集画面 インデックス
AA確認画面
やる夫スレの作者はどうしてるの?
方法2: AA作成依頼を出す
結局、職人芸
こんな現状を救うべく
. . .... ..: : :: :: ::: :::::: ::::::::::: * 。+ ゚ + ・
∧ ∧. _::::。・._、_ ゚ ・
/:彡ミ゛ヽ;)(m,_)‐-(<_,` )-、 *
/ :::/:: ヽ、ヽ、 ::iー-、 .i ゚ +
/ :::/;;: ヽ ヽ ::l ゝ ,n _i l
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄E_ )__ノ ̄
ちょっと、立ち上がってみた
AAをつくろう!
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
理想
必要ステップ
STEP1 : 画像処理
STEP2 : 評価関数の定義
STEP3 : 最適化
STEP4 : 出力
使用言語: Python
画像処理:OpenCV、PIL
STEP1 : 画像処理
AAは文字(白黒)しか表現できないので以下で処理
グレースケール(0-1値化) エッジ抽出
お好みでどちらかを使用
STEP1 : 画像処理
文字も画像なので、
ピクセル単位の色の有無を予め保存
PILのImageFont.truetypeでフォントを指定して
getsize関数で取得可能
STEP2 : 評価関数の定義
作ったAAがどれほど画像に似ているかを評価
とりあえず、
ピクセル単位の色の有無の一致度を使用
10
01
vs. 11
01
一致度: 3
STEP2 : 評価関数の定義
作ったAAがどれほど画像に似ているかを評価
とりあえず、
ピクセル単位の色の有無の一致度を使用
10
01
vs. 11
01
一致度: 3
人間の目には補完機能があるため、
0を1と外した場合はより重いペナルティを課した
STEP3 : 最適化
評価関数が決まったので、
より一致度の高いAAを作る
今回は遺伝的アルゴリズム
生物進化の仕組みを模倣して、より良い解を見つけるアルゴリズム
引用: http://www.sist.ac.jp/~kanakubo/research/evolutionary_computing/genetic_algorithms.html
選択淘汰: 強い個体(良い解)が
生き残りやすい
交叉: 次世代を作る
突然変異: 突然変異種を作る
最適化分野で最も中2心をくすぐるアルゴリズム
つまり、
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
ミクさんをいっぱいつくって
交配 させて・・・
交配 させて・・・
何世代も
マッチョ(優秀)な個体を作り上げるアルゴリズム
動的計画法したほうが良いかも
あるピクセルの矩形に対する、
評価関数を最大にする文字は常に一定なので
動的計画法でもいけるかも・・・
ただ、考えるのが面倒くさいので
一度計算した評価関数をキャッシュするだけにした
まずは初期解
乱数で始祖ミクさん達を作っても良いが・・・
さすがに何が何だかわからない
とりあえず、空白検知
空白地帯を全角と半角スペースで埋めると・・・
※半角スペース2連続は禁止
ミクさんぽい!
近傍探索もやっておく
配置文字のピクセルがズレない同型の文字で
評価関数が最大の文字を選ぶと
お前が始祖ミクだ!
ネットに転がってる
AA自動生成ツールはこんな感じで
やってそう
ここからが頑張りドコロ
交配の定義
GAの肝である、交叉を考える
交配の定義
ミクさん♂
今回はこんな感じにしてみた
ミクさん♀
ミクさん Jr.
行単位で、ランダムに合成
その他細かいところを
ゴニョゴニョやって・・・
完成!
・・・が
死ぬほど遅い
並列計算は実施済み
高速化しよう!
今回はPythonにJITコンパイラを突っ込む
Numbaを選択
その他の選択肢
候補 今回諦めた理由
Cython
cdefとか結構手を入れるのでPythonに戻す
のが面倒。pyximportも面倒
C拡張 C言語は極力触りたくない
PyPy numpyサポートが怪しい。いつか触るかも
Julia
なるべくPythonでやりたい。これでダメなら入
門するかも。
かなり早くなった
10倍ぐらいは速くなった気がする
(力尽きて未計測)
ホントに完成!
GIFにしてみた
グレースケール版
GIFにしてみた
エッジ抽出版
現実
理想と現実のギャップ
現実
__ _
/iiヘ,, ‐::----::‐.._ ///ヘ
,/-:..´: : : : : : : : : : :::///_. ヾ\
/::/: : : : : : : : : : : : ///|: : ヽ//
/// : : : ヘ : : i : : : :\ヾヽ|:: : ::×
/ /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ
/{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ
/: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ
/: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ
/: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ
/: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、
/: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、
/: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、
/: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ',
./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ',
/: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :',
,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ',
i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :',
{: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :|
',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :|
ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::|
\: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :|
` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: |
ヾ三彡 >、`ー---´: : : : : : : : : : /: :/
{:`ー\: : : : : : : : : : : : : /{/
`ー- `ー,, __ ,, -´
理想
結 論
人間すごい!
人間すごい!
• 自動で作ったAAは何か不自然
• 人間の目は画像 ⇒ AAの時に
デフォルメと取捨選択を行っている
• 人間はなるべく「レ」や「|」といった文字で
境界をはっきりさせている
この仕組は評価関数次第なので
人間の感覚に近い関数を設計できる人
大募集!
ご清聴ありがとうございました!

Contenu connexe

Tendances

G2o
G2oG2o
つくばチャレンジ2022 モデルルートRTKGNSS取得データ
つくばチャレンジ2022 モデルルートRTKGNSS取得データつくばチャレンジ2022 モデルルートRTKGNSS取得データ
つくばチャレンジ2022 モデルルートRTKGNSS取得データ
kenjiterasaka
 
強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験
克海 納谷
 
多段階計算の型システムの基礎
多段階計算の型システムの基礎多段階計算の型システムの基礎
多段階計算の型システムの基礎
T. Suwa
 
Qt × Reactive Extensions
Qt × Reactive ExtensionsQt × Reactive Extensions
Qt × Reactive Extensions
TetsuroMatsumura
 
Pythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI GymトレーニングPythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI Gymトレーニング
Takahiro Kubo
 
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようEdomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみよう
Satoshi Mimura
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo
 
BigQueryでJOINを極める!
BigQueryでJOINを極める!BigQueryでJOINを極める!
BigQueryでJOINを極める!
Miki Katsuragi
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
Takami Sato
 
TalkingData AdTracking Fraud Detection Challenge (1st place solution)
TalkingData AdTracking  Fraud Detection Challenge (1st place solution)TalkingData AdTracking  Fraud Detection Challenge (1st place solution)
TalkingData AdTracking Fraud Detection Challenge (1st place solution)
Takanori Hayashi
 
新分野に飛び入って半年で業績を作るには
新分野に飛び入って半年で業績を作るには新分野に飛び入って半年で業績を作るには
新分野に飛び入って半年で業績を作るには
Asai Masataro
 
[PyConJP2019]Pythonで切り開く新しい農業
[PyConJP2019]Pythonで切り開く新しい農業[PyConJP2019]Pythonで切り開く新しい農業
[PyConJP2019]Pythonで切り開く新しい農業
Makoto Koike
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
 
分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17
Takuya Akiba
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニックGenya Murakami
 
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築
Yoshitaka HARA
 
Robot frontier lesson1
Robot frontier lesson1Robot frontier lesson1
Robot frontier lesson1
Ryuichi Ueda
 
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
Taiji Suzuki
 

Tendances (20)

G2o
G2oG2o
G2o
 
つくばチャレンジ2022 モデルルートRTKGNSS取得データ
つくばチャレンジ2022 モデルルートRTKGNSS取得データつくばチャレンジ2022 モデルルートRTKGNSS取得データ
つくばチャレンジ2022 モデルルートRTKGNSS取得データ
 
強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験
 
多段階計算の型システムの基礎
多段階計算の型システムの基礎多段階計算の型システムの基礎
多段階計算の型システムの基礎
 
Qt × Reactive Extensions
Qt × Reactive ExtensionsQt × Reactive Extensions
Qt × Reactive Extensions
 
Pythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI GymトレーニングPythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI Gymトレーニング
 
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようEdomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみよう
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
 
BigQueryでJOINを極める!
BigQueryでJOINを極める!BigQueryでJOINを極める!
BigQueryでJOINを極める!
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
TalkingData AdTracking Fraud Detection Challenge (1st place solution)
TalkingData AdTracking  Fraud Detection Challenge (1st place solution)TalkingData AdTracking  Fraud Detection Challenge (1st place solution)
TalkingData AdTracking Fraud Detection Challenge (1st place solution)
 
新分野に飛び入って半年で業績を作るには
新分野に飛び入って半年で業績を作るには新分野に飛び入って半年で業績を作るには
新分野に飛び入って半年で業績を作るには
 
[PyConJP2019]Pythonで切り開く新しい農業
[PyConJP2019]Pythonで切り開く新しい農業[PyConJP2019]Pythonで切り開く新しい農業
[PyConJP2019]Pythonで切り開く新しい農業
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニック
 
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築
 
Robot frontier lesson1
Robot frontier lesson1Robot frontier lesson1
Robot frontier lesson1
 
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
 

En vedette

High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
Takami Sato
 
Data Science Bowl 2017 Winning Solutions Survey
Data Science Bowl 2017Winning Solutions SurveyData Science Bowl 2017Winning Solutions Survey
Data Science Bowl 2017 Winning Solutions Survey
Takami Sato
 
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Takami Sato
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
Ryo Sakamoto
 
30分で博士号がとれる画像処理講座
30分で博士号がとれる画像処理講座30分で博士号がとれる画像処理講座
30分で博士号がとれる画像処理講座Sakiyama Kei
 
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
Takami Sato
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
 
Quoraコンペ参加記録
Quoraコンペ参加記録Quoraコンペ参加記録
Quoraコンペ参加記録
Takami Sato
 
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entriesIcml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Takami Sato
 
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門
Takami Sato
 
IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習
Preferred Networks
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
Sho Tatsuno
 

En vedette (12)

High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
Data Science Bowl 2017 Winning Solutions Survey
Data Science Bowl 2017Winning Solutions SurveyData Science Bowl 2017Winning Solutions Survey
Data Science Bowl 2017 Winning Solutions Survey
 
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!Word2vecで大谷翔平の二刀流論争に終止符を打つ!
Word2vecで大谷翔平の二刀流論争に終止符を打つ!
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
 
30分で博士号がとれる画像処理講座
30分で博士号がとれる画像処理講座30分で博士号がとれる画像処理講座
30分で博士号がとれる画像処理講座
 
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
NIPS2016論文紹介 Riemannian SVRG fast stochastic optimization on riemannian manif...
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
Quoraコンペ参加記録
Quoraコンペ参加記録Quoraコンペ参加記録
Quoraコンペ参加記録
 
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entriesIcml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
 
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門
 
IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 

AAをつくろう!

  • 2. 自己紹介 名前: @tkm2261 専門: 経営工学/数理最適化 所属: 株式会社ブレインパッド 2年目 お仕事: 分析何でも屋さん (研究開発) 趣味: 自転車 自宅 ⇒
  • 8. こういう方がいいよね! __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´
  • 11. 詳しく知りたい方はこちら • クマでも分かるトレースAAの作り方 http://dokoaa.com/trace/ • ゼロから始めるAA講座 http://www.geocities.jp/mata_ri_watch/salon_01.html ∩___∩ | ノ ヽ / ● ● | クマ──!! | ( _●_) ミ 彡、 |∪| 、`\ / __ ヽノ /´> ) (___) / (_/ | / | /\ \ | / ) ) ∪ ( \ \_)
  • 12. やる夫スレの作者はどうしてるの? 2chにはAAに語らせて、 漫画みたいなの作るスレがあります / ̄ ̄\ / ─ ─\ | (●)(●)| ____. .| (__人__) | / \ ` ⌒´ ノ / ─ ─\ .} / (●) (●) \ } | (__人__) | ノ.ヽ / ∩ノ ⊃ /∩ノ ⊃| | ( \ / _ノ | |/ _ノ | | .\ “ /__| | /__| | \ /___ //___ /
  • 13. 歴史系の作者はコイツ何者だってレベルの知識量 マンガ日本の歴史のAA版 (地図も全部AA) やる夫がフューラーになるようです (ヒトラー) やる夫は鎌倉幕府を成立させるようです (鎌倉時代) やる夫が徳川家康になるようです (安土桃山) AAで学ぶ南北戦争への道 (アメリカ) やる夫が『梅松論』を語るそうです。 (南北朝) etc…
  • 18. こんな現状を救うべく . . .... ..: : :: :: ::: :::::: ::::::::::: * 。+ ゚ + ・ ∧ ∧. _::::。・._、_ ゚ ・ /:彡ミ゛ヽ;)(m,_)‐-(<_,` )-、 * / :::/:: ヽ、ヽ、 ::iー-、 .i ゚ + / :::/;;: ヽ ヽ ::l ゝ ,n _i l  ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄E_ )__ノ ̄
  • 21. __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ 理想
  • 22. 必要ステップ STEP1 : 画像処理 STEP2 : 評価関数の定義 STEP3 : 最適化 STEP4 : 出力 使用言語: Python 画像処理:OpenCV、PIL
  • 26. STEP2 : 評価関数の定義 作ったAAがどれほど画像に似ているかを評価 とりあえず、 ピクセル単位の色の有無の一致度を使用 10 01 vs. 11 01 一致度: 3 人間の目には補完機能があるため、 0を1と外した場合はより重いペナルティを課した
  • 30. __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ ミクさんをいっぱいつくって
  • 47. その他の選択肢 候補 今回諦めた理由 Cython cdefとか結構手を入れるのでPythonに戻す のが面倒。pyximportも面倒 C拡張 C言語は極力触りたくない PyPy numpyサポートが怪しい。いつか触るかも Julia なるべくPythonでやりたい。これでダメなら入 門するかも。
  • 53. 理想と現実のギャップ 現実 __ _ /iiヘ,, ‐::----::‐.._ ///ヘ ,/-:..´: : : : : : : : : : :::///_. ヾ\ /::/: : : : : : : : : : : : ///|: : ヽ// /// : : : ヘ : : i : : : :\ヾヽ|:: : ::× / /: : : 」_ ヽ: ::|ヽ_:_:: : `,_ヽ',: : : : :ヽ /{: : :´/ _` ヽ::i´ \`: ::|::::i ',: : : : : ヽ /: :!: : /イ{゜:i ヽiイiテヾ: : :i::::|:ヘ: : : : : : ヽ /: : :.!:./:::代ソ 弋::ソ}|ヽ:|∠ |: : : : : : :ヽ /: : : :|V |:::ト, 、_ .イ: |≦-,__',: : : : : : : :ヽ /: : : : ,' ヽ| >-、-t ´ |::/|´:⌒:`',: : : : : : : : `、 /: : : : ,' /::::::「ii | |// i⌒i>::',: : : : : : : : ::`、 /: : : : : i ./:::}:::::| ii |´\ /i01.i:::::::',: : : : : : : : : :`、 /: : : : : ::{ /:::::|::::::| ii |`iミY:::r-´ヘ::::::》: : : : : : : : : : ', ./: : : : : : : | \_|:::::::| ii |:::} }ヘ:::::::i/ ',: : : : : : : : : : ', /: : : : : : : : | |:::::::| ii/_ヽ∠ヽ`、:::ヘ´」',: : : : : : : : : : :', ,': : : : : : : : : :', |::::::∨ーt´--`-}::::;::ヽ:|',: : : : : : : : : : : ', i: : : : : : : : : : :\ \/:::::/ |;:r-:::i:! i: : : : : : : : : : : :', {: : : : : : : : : : :ヽ:\ /:::::::/ |:|!;i|:::| |: : : : : : : : : : : : :| ',: : : : : : : : : : : :\___./__:::::,' ,':|iiii|:::|:|: : : : : : : : : : : : :| ヽ: : : : : : : : : : : : : : : : :/::,' /:::|iiiii|::::|: : : : : : : : : : : : ::| \: : : : :\: : : : : : /::::ヽ{ /:::::|iiiiii|./: : : : : : : : : : : |: :| ` - ,,_二==-{:::::::::::::::} ___/::::-=二´: : : : : : : : : : : :ノ: | ヾ三彡 >、`ー---´: : : : : : : : : : /: :/ {:`ー\: : : : : : : : : : : : : /{/ `ー- `ー,, __ ,, -´ 理想
  • 56. 人間すごい! • 自動で作ったAAは何か不自然 • 人間の目は画像 ⇒ AAの時に デフォルメと取捨選択を行っている • 人間はなるべく「レ」や「|」といった文字で 境界をはっきりさせている