非日常デコレーション

一般 web developer の雑記です

私のオープンソースに1億スターがつく夢を見ました。

10月31日、世間がハロウィンで賑わっている中、 某社のswiftハッカソンに参加してきました。

www.cyberagent.co.jp

OSS(オープンソースソフトウェア)開発というのがどんなものか、 イメージすらほとんどないままに参加していたので、かなり不安がありました。 (要するにライブラリを作ろうという話でした)

インターンswiftをお勉強してアプリを作成した経験はあるのですが、 自分は当時勤務していた会社にそそのかされstoryboardでどれだけレイアウトを楽に作成できるかにチャレンジしていたため、 コードで見た目その他全て制御するという試みは初だったためにいろいろと苦戦を強いられてしまいました。 また、当初思い描いていた構想がかなり難しいことだということを指摘され、時間が足りずに 最終的にサンプルコード並みにしょぼいやつしかできなかったのですが、 周りの優秀な人のコードなどを見ることでいい刺激になったと思います。

ちなみに自分は専門分野を生かして3Dで遷移するViewControllerを作成する予定だったのですが、 8時間ほどのハッカソンでコードもろくに書けない凡人が間に合わせられるはずもなく・・・。

あと、やっぱり毎日のように鬼ようにコードを書かないとこれからの就活でやっていけなさそうな印象も受けました。(誇張)

とりあえずGitHubに自分のコードをどんどん載せてスターを集めていくという エンジニアの修行のようなものをこなしていきたいと思います。

多元一次連立方程式をプログラムで解く

夏学期最後に残ったレポートが結局タイトルにあるような問題に帰着したので

数値解析など初学者の自分としてはかなり時間をかけたのでせっかくなので記録しておこうと思いました

(問題は移流拡散方程式を与えられた境界条件で数値解析するというもの)

 

取ろうとした手法

■行列計算ライブラリEigenを使ってC++で計算

⇨9*9行列はできたが、19*19行列でやるとエラー(メモリが確保できなかった?)

⇨大きい行列だが、疎行列なので~/Eigen/sparseを使ってメモリを節約しようと試みるも挫折

 

参考サイト

Eigenで連立方程式を解く(簡単な例) - 逃避メモ

http://mikaka.org/~kana/dl/pdf/pdf-eigennote.pdf

一応、コンパイルは通ったもののソルバによって解が変わったり、

そもそも数値があっていなかったりして諦めました(これでめちゃ時間食った…)

 

Matlab

⇨インストール時のライセンスうんぬんがめんどくさくてやめました。先輩がいるときに入れようと思います。数値計算に関してはかなり便利らしいので

 

■R

⇨やってみたら一番楽でした。こんな便利なものがあっていいのか・・・

 

ちなみに19*19行列を手で打つほど地味な作業は好きでないので、

Excelに数をプロットして「テキスト(タブ区切り)(*.txt)」で保存して、

> a<-read.delim("/*ファイルのディレクトリ*/.txt", header=FALSE)

とコマンドを打てば読み込んでくれます

* 下の画像の場合、" > a "とコマンドを打つだけで読み込んだファイルを確認できます

**"header=FALSE"は行列に勝手に名前をつけてくれます(この場合はV1,V2など)

f:id:mokotixfemilar:20150806023737p:plain

上の画像では係数行列aと非同次ベクトルb(こっちは手打ちですw)を読み込んで

> solve(a, b)

とコマンドを打つだけで解となるベクトルxを求めることができます

 

こんな簡単なら最初からRで計算すればよかったorz

「こういう計算したいんだけどどうプログラムに書けばいいんだ〜」って感じでずっと悩んでました

場合によってこれ使えばいいとかすぐわかればいいんですけどね

やっぱり優秀な先輩に聞くのが一番だと思いました

Rはいつか触ってみようかなと思ってたのでいい勉強になりました(大した勉強にはなっていないが)

OpenCV

映像処理の勉強として下の本を一冊取り組んでみました。

実践OpenCV 2.4―映像処理&解析

実践OpenCV 2.4―映像処理&解析

 

 

WindowsのVisualStudioとMacOSでのXcodeのどちらもやりました。

プログラミング初心者なので、最初はビルド失敗に悩まされ続けました…。

 

OpenCVの使用例について

  1. 2値化:画像のピクセル値を0と1に
  2. エッジ検出:ピクセル値の勾配を元にモノの輪郭を抽出
  3. ハフ変換:画像の直線や曲線を抽出したものを数式に変換
  4. 傾き補正:傾いた画像を水平になるように修正
  5. モルフォロジー演算:画像中の幾何構造を解析・処理
    演算各種…dilation/erosion/opening/closing
  6. ヒストグラム:ピクセル値の度数分布図
  7. テンプレートマッチング:画像から所定の物体を検出
  8. 特徴点検出:主に画像の端点や交差点、角などを検出
  9. オプティカルフロー検出:映像の前後で物体の移動量を線分で図示
    3手法…ブロックマッチング法、Lucas-Kanade法、画像ピラミッド型Lucas-Kanade法
  10. 物体追跡:特徴点とオプティカルフローを応用
  11. カメラキャリブレーション:基準となる物体を利用してカメラに入力される画像の歪みを修正する
  12. モーションテンプレート:映像から動きの方向などを抽出
  13. 物体検出:画像や映像から人の顔や目などのオブジェクトを検出
  14. 3次元形状の推定:2台のカメラを用いて3次元の形状を推定する手法(よくわからないけど両眼視差うんぬんの話)

 

OpenCVで使用する構造体

  • IplImage:画像の格納
  • CvMat:行列の格納(浮動小数点数型)
  • CvArr:上の2つの構造体をまとめて呼ぶ型

関数

  • cvNamedWindow
  • cvResizeWindow
  • cvLoadImage
  • cvShowImage
  • cvWaitKey
  • cvDestroyWindow
  • cvReleaseImage          …など割愛

 

やったこと

  • 画像・映像の表示⇨処理⇨保存(2章)

  • カラーチャンネルの分離・合成(3チャンネル画像から赤青緑チャンネルそれぞれを表示)
  • 移動物体の抽出(映像の前後で差分を取り背景画像を除去)
  • 空間フィルタリング
    グラディエントフィルタ(-1,0,1のやつ):縦方向のエッジを検出
    ハイパスフィルタ(-1で8を囲うやつ):エッジ強調
    ラプラシアンフィルタ(1で-8を囲うやつ⇦3×3の場合):全方向エッジ検出
    ガウシアンフィルタ(1,2,1 -2,4,2-...を16で割るやつ):画像平滑化やノイズ除去
  • クロマキー合成、カラーモデル変換

  • テキスト・グラフィックスの描画
  • トラックバー付き2値化(閾値任意変更)
  • マウスイベントの取得
  • テンプレートマッチング
  • オプティカルフロー検出
  • 特徴点検出と物体追跡
  • 周波数フィルタリング(映像のエッジ検出-閾値任意変更)
  • モーションテンプレート
  • 物体検出(顔、目)

箇条書きにすると結構やってるように見えますが、実際使えるかどうかは別です。

OpenGLも勉強しなきゃ…。

 

 

院試勉強 数学

正直,学際情報は1次が情理ほど難しくない(難易度はピンキリ)ので

僕の勉強方法を晒すことに大した意味はないかもしれませんが

自分が受験を志したころはとにかくいろんなブログを巡って情報収集していたので

何かのお役にたてればと思うのでここに残しておくことにします(  ・∀・)

 

今回は数学。

 

使用した参考書は以下の通りです(学習順)

 

演習 微分積分
新版 演習微分積分 (新版演習数学ライブラリ)

新版 演習微分積分 (新版演習数学ライブラリ)

 

 受験の前の年の11月からスタートして、1月にはTOEFLの勉強と並行してスタバでガリガリ解いてました

院試勉強にとっつくのにはいい1冊

ちなみに3~5章(だったかな?)だけしかやってません

高校生範囲を超えた微分積分偏微分、重積分とかです

理系大学生なら出来てアタリマエーな内容なので

必死に(,,゚Д゚) ガンガレ!

 

マセマ 常微分方程式
スバラシク実力がつくと評判の常微分方程式キャンパス・ゼミ

スバラシク実力がつくと評判の常微分方程式キャンパス・ゼミ

 

この本には かなりお世話になりました

レイアウトはさておき、一冊完成させるのに時間をあまり割かないで済みます

その割にできるようになることは多いです

ただ,網羅しきれていない内容もあるので逐次補強が必要

うちの大学の講義では下の参考書使いましたが、ややわかりづらいです

しかしのってる内容が微妙に違うので理解の補強にはなるかも

応用微分方程式
応用微分方程式

応用微分方程式

 

 

 

マセマ 線形代数
スバラシク実力がつくと評判の線形代数キャンパス・ゼミ

スバラシク実力がつくと評判の線形代数キャンパス・ゼミ

 

 結構内容は薄っぺらい気がしましたが、基礎の理解にはこれで十分です

これ終わった後で下で紹介する「詳解大学院への数学」の線形代数やろうとしてもちんぷんかんなことがままあります

自分の年は線形出ませんでしたが、しっかり対策したければネットを駆使したり間にワンクッション挟んだほうがいいかもしれません

線形代数は画像処理などの研究では必須なので深く理解しておいて損はないです

 

工科系の数学 ラプラス変換z変換
工学基礎 ラプラス変換とz変換 (新・工科系の数学)

工学基礎 ラプラス変換とz変換 (新・工科系の数学)

 

制御系などの勉強をほとんどしていなかったので最終的には役に立ちませんでした

そして大学院でも今のところ使える場面がないです。しょぼーん

 

詳解 大学院への数学
詳解 大学院への数学―理学工学系入試問題集

詳解 大学院への数学―理学工学系入試問題集

 

 線形はやたら難しい問題が揃えてありますが理解を深めるにはもってこい(私は全部解き切りませんでしたが)

微分方程式はかなり練習になりました

確率は問題も少ないしでやってませんが,下のマセマ統計学の演習で代用しました

結局情理でなく学際情報を受けたので,自大の勉強にしか使いませんでしたが(;・∀・)

ちなみに解説は結構あっさりしているので注意

 

演習 統計学
スバラシク実力がつくと評判の演習統計学キャンパス・ゼミ

スバラシク実力がつくと評判の演習統計学キャンパス・ゼミ

 

演習からいきなりはいって,そのあとで理解する,という戦法をとり

マセマでずっと勉強してました

これも最後まで解ききらなかったんですけどね

でも統計はやっておいたほうがいいです、大学院の授業や研究でも使うことが多いと思います

今はやりの機械学習などでも扱うのでできることが広がりますね

 

 マセマ フーリエ解析

フーリエ変換…優先順位は低いと思いますが受験した年はフツーに出てきました

余裕があれば前半のほうだけでも取り組んでおいたほうがいいかもしれません

 

マセマ 複素関数
スバラシク実力がつくと評判の複素関数キャンパス・ゼミ―大学の数学がこんなに分かる!単位なんて楽に取れる!

スバラシク実力がつくと評判の複素関数キャンパス・ゼミ―大学の数学がこんなに分かる!単位なんて楽に取れる!

 

情報学環ではノーマークな単元だとは思いますが、自大の院試で必要でした(結局選びませんでしたが)

電気系の人なら必須ですが、そうでない人もやってて損はないと思います

 

 

以上、筆記に関しては大した勉強量こなしてませんがなんとかなります

微分,線形に関する単元は網羅しておいた方が良いですね

院試勉強総括

院試勉強の大まかなまとめをします

院試の勉強を俄かに始めたのは学部3年の秋からでした

以下流れ

 

11月 専門の分野を捨てて電気系の院に進もうと決める 

まずはとTOEIC微積の勉強

12月 ひたすらTOEICの勉強 この時点でとりあえず800点目標

1月 TOEIC本番を受けるも750前後汗常微分方程式の勉強とTOEFLの勉強を始める

2月 行きたい研究室を心に決め、東大の情報理工を受けることを決意

自大のTOEFL-ITPで力試し547点(もち、自己アピ欄に書きました笑)

3月 研究室訪問の連絡を取る

線形代数の復習

4月 2つほど研究室訪問をしに2回東京へ

ラプラス変換z変換,電気回路の勉強

5月 研究室訪問のときに存在を知った情報学環で東大院を受けることを決意

6月 研究計画をひたすら考えるために論文を読み漁る

7月 ひたすら研究計画

8月 1次への不安を抱えながらひたすら勉強

この時点でようやくアルゴリズムと交通工学,コンピュータアーキテクチャを理解w(CAは自大の院試で必要)

 

 

試験本番について(8.18~8.25)

東大1次(筆記) 2014.8.18

お盆の時期だったため交通費がバカみたいに高く

早めに行って東京には6泊7日の受験旅でした

ひたすら喫茶店やホテルで勉強。死にもの狂いでした

(の,割には上野周辺を散策など余裕かましていましたが)

本番は工学部4号館

部屋の人数はそこまでいなかったので一安心

別室も合わせたら100人くらいいたけれど…

一次試験開始

緊張しながら問題用紙を開くとなんと1問目はフーリエ変換

しかもガウス積分って...(後に存在を知る)

フーリエ級数までしか勉強しなかったことを後悔

そして2問目はなんとアルゴリズムを書かせる問題

ほとんど意味の分からないことしか書けず撃沈

3問目の選択は勉強してきた交通工学が出ずに地震に関する問題

解けるかとA,B問題を見てみると画像処理と熱力学

自信を持てるのが熱力学しかなかったのでやってみると結構簡単

最後の勉強したのは大学2年の熱波動以来だったけれど

なんとかほぼ完答(安堵)

しかし正直まともに解けたのが熱(しかも自信あまりなし)

だけだったのでこの時点で落ちたと思い

UTの友達と秋葉で遊んだり食事して福岡へ帰りました


九大1次(筆記)2014.8.21

有能な同級生から

過去問と解説のデータを受け取っていたので

なんとか専門は万全の態勢(?)で臨めました

しかし数学。。

自信を持っていたのにもかかわらず

線形・確率両者が撃沈

微分方程式は忘れかけていた完全微分方程式を危なげながら完解

お昼の専門が気が気じゃありませんでしたが

気持には謎の余裕がありました

専門はCAは過去問とほぼ同じで

ほぼ完解

アルゴリズムは小問1がまたアルゴリズムを書かせる問題で

イマドキの情報学科入試のトレンドについて行けず

テキトーなことを書くしかありませんでした汗

もう一問はデータベース

やさしい問題だったので慎重に丁寧に

ほぼ解答できました

終わってみれば専門は結構解けた(8〜9割)という実感に

数学の不出来(3〜4割)の不安が混じりあった

複雑な気持ちでした

その日は博多で遊んで帰りました


九大2次(面接)2014.8.22

当日緊張は全くなし

この日に知らされる東大1次の結果発表に

ひたすら心をざわつかせていました

しかしいざ面接会場に入ると

そこには教授が20人くらいはいらっしゃって

質問攻めにうまく対処することが要求されていることを悟り

やはり緊張しました汗

以前研究室訪問に伺った教授が質問をされて

その質問にちょっと戸惑いましたが

なんとかなりました

自分は他の専攻から来て

ある程度の試験結果を残せたのだから

受かっているだろうと正直思ってしまいました

そして帰り際に東大1次の合格を知り

浮き足で自宅へと帰りました笑

これが油断となり2次への悲劇となるのだった

東大2次(プレゼン) 2014.8.25 

正直なめすぎていました

1次の時点で落ちたと思い込んでいたので

PPTもろくに作らずに九大の院試に集中していました

そのためPPtが完成したのは

プレゼン本番の6時間ほど前でした

(上野のネカフェで深夜まで作業)

本番はというと

お偉いさんの雰囲気の5人の教授方が

薄暗い部屋(スライド投影のため)の中にいらっしゃり

そこでプレゼンという

無駄に緊張感を高めさせられる空間でした

教授「スライド1分で用意して」

でそこからほとんど頭真っ白でプレゼン

練習もろくにしていなかったため

時間内に終わらせることすらできませんでした

質疑応答も辛辣なものが多く

うまく答えられた自信はありませんでした

というか自信喪失もいいところでした

第1志望の教授がいらっしゃったのでそれが唯一の救いでした

その隣にいらっしゃった教授は結構怖かった

終始怖い顔で質問されました笑


落ち込んだまま,前の週にも世話になった

UTの友人と再び遊びに行きました

正直,ここにはもう戻ってこないだろうと

初めての中央食堂で食事をし

東大の校舎群に別れを告げてきました

 

合格発表の日はバイト(かてきょ)があったので

それが済んでから見ようと

1日緊張しっぱなしでした

心地よい緊張感で

本音を言うと1ヶ月くらい見ないでおこうかと思っていましたw

(実際には発表の掲示期限があったので見ざるを得なかったのですが)

 

長々と日記になってしまいましたが以下まとめ

 

1.東大院情報系研究室の入り口は2つ

情報理工・・・現役東大生に太刀打ちできるような

相当な学力がないと大変

数学と専門,TOEFLで決まる

因みにTOEFL-iBTで事前に受けている先輩が多かったです

学際情報学府(情報学環)・・・筆記はおそらく足切り

研究計画のプレゼン勝負!

私はこっちでした

英語は公式TOEICで代用可

 

2.志望動機,研究のコンセプトは明確に

研究計画をプレゼンするにあたって

なぜ東大院の研究室に行きたいのか

を明確にしておかないといけません

私の動機はVR技術を用いた

空間創造・デザインをしたかったことでした

しかし研究計画のコンセプトはブレブレだった気がします

そこを一貫していなかったのでいろいろ突っ込まれました

反省ですね

 

3.院試勉強と計画は早めに

3年秋でもギリギリな気がします

僕はプレゼンが主だったのであまり時間をかけませんでしたが

もし情報理工で受けるつもりだったのなら

3年はじめには猛勉強しなければ

間に合わないレベルだったと思います

出題範囲は情報理工,情報学環共に広いですが

前者の方が圧倒的にレベルが高いので

プレゼンで志望するなら

自分の専門の強みを出していきましょう

僕は建築ということもあり

空間表現に興味があるということを

前面に押し出してなんとかアピールできた気がします

 

正直筆記もプレゼンもぼろぼろな自分が

なぜ受かったのか不思議でならないのですが

筆記は1/3だけでも完答できて

プレゼンはボロクソ言われても研究計画書がしっかりしていれば

どこかの研究室に引っかかります笑

僕は第3〜5のどこかに書いた研究室になりましたが

自大はVRの研究があまり盛んでないので

東大へ行くことに決めました

受かったら受かったで入院後の実力差にビクビクしていますが

その差を埋められるように少しずつ勉強していこうと思います^_^


院試結果

ブログのIDをど忘れしていたために更新が遅れてしまいました

 

先週で合否結果がすべて出そろったので報告いたします

 

九州大学院システム情報科学府 合格

東京大学院学際情報学府 合格

 

終わってみれば両方合格という嬉しさ

東大院試の一週間前は

不安で体調を崩しそうになったりもしていましたが

なんとか食らいつくことができました

 

次の記事では院試にまつわるまとめを書きたいと思います