前書き

今学期は、この2〜3年の中で一番幸せだった学期かもしれません。かなり充実していて、4科目を履修し、美術社にも引き続き参加し、記事もたくさん書き、研究の方向性とテーマも見つかりました。資工を学ぶのは本当に楽しいですね。大きく分けると、修士1年(2学期)は「履修」「美術社」「研究」の3つの側面がありますが、本記事はまず履修について書きます。

履修

今学期の4科目はそれぞれ中程度の難易度でしたが、合計するとやはり忙しかったです。前学期に重い科目を取ったので前学期は2科目しか取れませんでした。でも卒業には合計8科目が必要です。修士2年は研究に集中したいので、今学期は履修を加速する必要がありました。

新型コロナの影響で、対面は1科目だけで、他は全部オンラインになりました。私はオンライン授業がけっこう好きです。好きな時間に2倍速で見られるからです。ただ欠点は、先生や同級生と全然知り合えないこと。これは結構つらいです。グループメンバー探しも大変で、以前なら適当に声をかければ済みましたが、今は人に会えません。結局、適当にメールを送ってメンバーを集めました。できるなら「授業はオンライン、でもオフラインで実際に議論する場がある」という形が一番好きです。

今学期は「電腦動畫」「電腦視覺」「XR 専題」「自然語言處理」を履修しました。研究はシステムソフトウェアなのに、履修はシステムソフトウェアとまったく関係ありません。一つは、交大には私が取りたい授業がありませんでした。異種計算、高性能計算、システムソフトウェア分析、分散システムなどを取りたかったのですが、残念ながら交大では開講されていません(しかも次の学期もありません)。もう一つは、ないならないで視野を広げようと思ったことです。私は意図的にとても「視覚的」な科目を選びました。生活と密接で面白いですし、高性能計算をやるなら応用分野は必須です。将来、コンピュータビジョンの高速化やコンピュータアニメーションの高速化などで、この知識が役に立つかもしれません。

XR 専題

私はこの「XR 専題」を強くおすすめします。毎回の授業に4人の先生が必ず出席するという大陣仗で、莊榮宏、謝啟民、張宏宇、王銓彰の4人です。先生方は資訊所、傳播所、應藝所、そして業界から来ています。よくある「先生が順番に担当する共同開講」とはレベルが違います。私はこの授業が大好きでしたが、その一方で、チームで大量に議論してプロジェクトを作る、かなり硬い授業でもありました。

先生ごとに観点が違います。例えば、王銓彰先生は受託開発・実装の観点から実現可能性を分析します。張宏宇先生はユーザー体験に非常に力を入れていて、プロダクトの「物語性」を強調します。謝啟民先生は斬新なアイデアが好きで、独特で、より芸術的であればあるほど良い。莊榮宏先生は技術面を重視することが多く、さらにこの授業の企画者でもあり、功績は大きいです。4人とも素晴らしい先生だと思いますが、私が一番好きで尊敬しているのは王銓彰先生です。XR 開発に関する独自の見解が多く、授業後によく話をしに行きました。毎回、かなり得るものがあります。

王銓彰先生との写真:

王銓彰先生との写真

学期の目標は3つのプロジェクトを作ることでした。毎回、AR/VR/MR(総称して XR)のプロジェクトを自分たちで発想して作ります。最初の2回は先生からお題が出て、例えば1回目は「物語を語る」、2回目は「第四の壁を破る」でした。3回目は自由制作です。メンバー構成は基本的に「プログラマ2人+音楽デザイン1人+ビジュアルデザイン1人」で、音楽所や應藝所など他分野の学生と協働する機会が多いです。このチーム構成で開発する感じは、まさにスタートアップっぽいです。

授業は VR/AR 機材も非常に充実していて、Vive、Hololens、Oculus など十数セットが用意されていました。Hololens は1台で12万(NT$)もするので、この授業がなければ2台同時に触って遊ぶなんて絶対無理です。Vive はよく見かけるし私も何度も遊んだことがありますが、正直言って Microsoft の Hololens は本当にすごい。原理的には AR 眼鏡と言えるのですが、コナンの眼鏡や Google Glasses はレンズ上に 2D の情報を表示するだけです。一方 Hololens は、目の前に立体(3D)を表示できるので、眼鏡越しの現実世界に本当に 3D オブジェクトが存在しているように感じられます。そのため、非常に高いレベルの「虚実融合」ができます。Microsoft が Mixed Reality(混合現実)と呼ぶのも納得です。

この授業の本質は、小規模チームの中で自分の役割をうまく果たし、プロダクトを作る方法を学ぶことにあります。普通、チームには企画や PM も必要ですが、それがいない場合は誰かが兼務するか、水平型のマネジメントが必要になります。開発期間中はメンバーとの議論が大量に発生し、ほぼ毎週、3〜4日くらい、1〜2時間の会議をしていました(もちろん、自分が作業する時間は別です)。

各プロジェクト期間中は毎週発表があり、4人の先生が進捗と成果に基づいて意見や指導をしてくれます。先生方は XR 領域で非常に豊富な開発経験を持っているので、技術面・プロダクト面・物語性・ユーザー設計など、鋭いフィードバックから多くを学べます。

2回目のお題は「第四の壁を破る」で、とても抽象的で難しいテーマでした。第四の壁は通常、舞台芸術と観客のインタラクションを指します。それでは XR デバイスにおける第四の壁とは何でしょうか。多くのチームは「異なる2つのメディアを同時に使ってインタラクションする」と解釈していました。例えば、AR デバイスと VR デバイスを組み合わせたゲーム、あるいは PC と VR デバイスの組み合わせなどです。私たちの作品の解釈はこうです:すべての VR ユーザーが同じ脚本を同時に鑑賞するが、物語の分岐は全ユーザーのリアルタイム対戦ゲームによって決まる。ユーザーはそれぞれ別の場所にいても、ストーリー体験中にリアルタイム接続のインタラクションが介在することで、互いの第四の壁を破る、というものです。

理工系の学生にとって、音楽・芸術・伝播系の学生と一緒に過ごす機会は少ないので、この授業で多く接点を持てるのは良いと思います。またこの授業は、スタートアップ的な高速開発の流れに近く、人員配置もかなり標準的です。インターン経験がない人にとっても、業界の開発スタイルを練習する良い機会になります。私自身はすでに複数社でインターン経験があり、普段から異なる背景の人と関わっていましたが、それでもこの授業では新しい気づきがたくさんありました。

電腦動畫與特效

「電腦動畫與特效」を紹介する前に、まずこの動画を見て、ピクサーアニメの進化を振り返ってみてください:

私はこのドキュメンタリーを見てかなり感動しました。技術の進化は本当に驚くべきもので、これがこの授業を取りたかった主な理由です。

コンピュータアニメーションは物理シミュレーションと基本的に同じ概念です。アニメをよりリアルに見せるには物理原理に従う必要がありますが、アニメなので細部は必ずしも物理モデル通りである必要はありません。ただこの授業は主に物理モデルを用いたアニメーションを扱っていて、特効(VFX)の話は少なめでした。

課題は作っていてけっこう面白かったです。コンピュータアニメーションなので成果物が「見える」し、見えるものは達成感があります。興味があれば、以前書いた コンピュータアニメーション関連の記事 もどうぞ。

例えば最初の課題は 2D の物理モデルでした:

ca image1

ただ、課題には少し不満もあります。毎回課題が巨大な VS プロジェクトとして配られ、抽象化や物理指向のフレームワークが盛りだくさんで、実装を始める前のテンプレだけで既に 1000〜2000 行くらいあります。物理モデルの実装が目的なら、シンプルな Python と簡単なレンダリングエンジンのほうが良いのでは?と思ってしまいました。

期末プロジェクトも面白かったです。学期全体がオンラインで、最後の授業だけ対面になりました。みんなの作品はほぼアニメ短編で、見ていて楽しかったです。ただ、この授業はコンピュータアニメーション特效の原理を教えるのだから、期末は物理モデルや特效を自作したり、論文研究を紹介したりするほうが合っていると思います。実際は、多くの人が Maya でアニメを作っていて、「コンピュータアニメーションの応用」や「実務」系の課題に近い印象でした。

科学者精神で、私たちの期末は Jos Stam の古典論文「Real-Time Fluid Dynamics for Games」を実装し、流体ゲームエンジンを作りました。これがレンダリングした炎の特效です:

火焰

全体として悪くない授業で、私みたいにコンピュータアニメーションに感動するタイプの人にはおすすめです。

電腦視覺

電腦視覺も良い授業でした。課題は全部で5つで、カメラ校正、画像のフーリエ処理、画像スティッチング、ステレオ復元、画像分類です。どれも実践的で、5つを全部やるとこの分野の核心を覗いたような感覚になります。分量も海外の一流大学に全然負けていません。

課題については、私が書いた「電腦視覺関連の記事」を見てください。各記事がそれぞれ1回分の課題です。

講義内容は基本的に Computer Vision 教科書の主要部分で、画像処理寄りの話は少なめでした。最後の数回は教授が機械学習好きなので、機械学習の話も多かったです。

邱維辰先生の英語は、今までで一番聞きやすいと感じました。ドイツ留学なのに😂。口癖は “ok” と “right” で、ほぼ毎文入りますが、慣れれば問題ありません。少なくとも英語は流暢です。交大は卒業要件として英語授業を1科目以上取る必要がありますが、1科目だけで済ませたい人には、先生の授業をおすすめします。

自然語言處理

この授業は古典的な確率モデルで自然言語処理(NLP)を教えます。台大の陳縕儂先生が開講している「深度学習の応用」と併せて見ると良いです。後者は深層学習の観点から NLP に入ります。

授業の前半は良かったです。確率モデルとしての TF-IDF と bi-gram の紹介は面白かったですし、TF-IDF は古典的モデルとして今でも NLP で優秀で、よく baseline になります。ただ後半は NLP の parser を細かくやりすぎて、少し退屈でした。深層学習と NLP の関係も簡単に紹介してくれたら良かったのに、と思います。

実装課題(ラボ)は全部で5つで、どれも簡単な小プログラムです。プログラミングができればそこまで時間はかからず、やり切ると達成感があります。(1) 自作 TF-IDF モデル (2) ライブラリでコーパスの品詞処理 (3) bi-gram モデル実装 (4) AWS のアンケートプラットフォーム (5) 簡易機械学習モデルで NLP 処理、です。

私は実装がある授業は基本的に良いと思います。私は手を動かすタイプなので、実際にコードを書かないと原理が分かりにくいです。全体的に課題は面白かったですが、4つ目の AWS アンケートプラットフォームは本当に退屈でした。要するに API をつなぐだけです。ただ、研究では被験者向けのアンケートシステムを作ることがよくあるので、課題として存在する理由は理解できます。でも課題としては面白くない。全体としての欠点は、この分野全体を一望できる感じがなくて、NLP のほんの一部分しか触れていないように感じたことです。課題範囲をもう少し広くしても良かったかもしれません。

期末プロジェクトはさらに謎で、NLP の分類コンテストでした。大量の Tweets があって、感情を分類するという課題です。古典的確率モデル中心の授業なのに、みんな深層学習で解いていました。先生は深層学習の話を授業で全くしていないし、私は深層学習が本当に苦手なので、最後はチームメイトに Carry してもらいました。

結論

今学期の各科目の分量は中程度でしたが、合計すると本当に死にそうでした。どの授業も締切が順番にやってきて、研究をちゃんとやる余裕はありませんでした。ただその分、学びは充実していて、自分がまた成長した気がします。学部で資工を学ばなかったことへの後悔もかなり埋まりました。全体として交大の授業は台大とそこまで変わりません。アメリカ留学経験のある学姐の話では、アメリカの一流大学の授業品質も交大より良いとは限らないらしく、それを聞いて安心しました。交大で履修を終えれば、外に出ても競争力はかなり高いはずです。