TensorFlowで有名モデルをスクラッチから学習するときの注意点

Tatsuya Yatagawa
こんにちはtatsyです。 私はDeep Learningのフレームワークは主にTensorFlowを使っているのですが、今回GoogLeNetのInception-v3というモデルをImageNet以外のデータで学習させた時に少しハマったので、解決策を共有しておきます。 ここで有名モデルと言っているのはAlexNetやVGG, GoogLeNet, ResNetといったILSVRCという画像認識コンテストで良い成績を獲得し ...

Time-of-Flightカメラの仕組み

Tatsuya Yatagawa
こんにちはtatsyです。しばらく更新ができずにいたのですが、久しぶりに記事を書きたいと思います。 今回、Microsoft Kinectなどの深度センサに用いられているTime-of-Flightカメラ(ToFカメラ)の仕組みについて解説します。 インターネット上を調べてみると、簡単な技術解説のようなものは見つかったのですが、背景理論のようなものまで説明しているものは見当たらなかったので、今回は技術背 ...

Microfacetモデルの重点サンプリング

Tatsuya Yatagawa
こんにちはtatsyです。 今回の記事は レイトレ合宿5 アドベントカレンダー の第8回の記事になります。 今回の記事では、Microfacetモデルに用いられる法線分布関数の代表例であるBeckmann分布とGGX分布について、重点サンプリングに用いる公式を導出し、それをsmallpt ベースのレンダラーに組み込むところまでをご紹介しようと思っています。今回の記事の内容は主に以下の2つの論文の内容をまとめた ...

重点サンプリングの分散

Tatsuya Yatagawa
こんにちはtatsyです。 本日の研究室での会話です。 後輩: 重点サンプリングをするときの提案分布はどうして被積分関数に近い方が良いのですか? 私: 定性的には、被積分関数の値が大きい部分により多くのサンプルを配する方が全体の誤差が抑えれるからかな… (ん、定量的にはどうなんだっけ?) となりまして、定量的にはどうなるのかが気になったので、調べてこちらにまとめておきます。 重点サンプリング 関数$ \chi $ 全体での積分 ...

OpenGLでDisplacement mapping

Tatsuya Yatagawa
こんにちはtatsyです。 今回はOpenGLのTesselation control shaderとTesselation evaluation shaderを使ってDisplacement mappingをしてみたいと思います。 例のごとく、Displacement mappingの説明から始めますが、結果のみをご覧になりたい方は、お手数ですが下までスクロールをお願いいたします。 Displacement mappingとは? Displacement mappingは端的に言うと、テクス ...

OpenGLのCompute shaderでアンチエイリアシングを実装する

Tatsuya Yatagawa
こんにちはtatsyです。 最近、いろいろな場所でVRやARに関係する技術が盛んに発表されていて、自分も少しは勉強せねばと思っている今日この頃です。 そんなこともあり、最近VRなどで使われるFoveated renderingという技術について調べておりました。そうすると、これらの技術はいかに情報がいらないところのシェーディングを低負荷に行うか、という部分に注力しているようでした。 このような考え方はMu ...

Pythonのgenerator使用時の注意点 (generatorの再利用)

Tatsuya Yatagawa
こんにちはtatsyです。 タイトルの通り、Pythonでgeneratorを使うときの注意点で気づいたことがあったので備忘録的にまとめておきます。 もしgeneratorが何かは知っていて、結果だけご覧になりたい場合には、お手数ですが下までスクロールをお願いいたします。 Generatorとは? Pythonにおけるgeneratorとは、リストのような変数の並びを順番にたどるための対象の一種です。 例え ...

MacでVulkanを使う方法 (MoltenVK + Xcode/CMake)

Tatsuya Yatagawa
こんにちはtatsyです。 今回は年末年始に時間があったので、MacでVulkanを使う方法をまとめてみたいと思います。 Vulkanとその他のGraphics API VulkanはOpenGLと同じKhronos groupという団体が提唱するGraphics APIの仕様です。 OpenGLは仕様が少し古く、複数のGPUへの対応であったり、描画命令のオーバーヘッドの多さであったりが問題視されるようになってきま ...

レイトレ合宿4!?参加報告

Tatsuya Yatagawa
こんにちはtatsyです。 先週末、八丈島で行われたレイトレ合宿4!?に参加してきました。 レイトレ合宿は合宿前に各参加者が実装したレイトレーシング等のレンダリングプログラムを実行し、それで得られた画像のクオリティを競うというのがメインイベントになっている合宿で、私は昨年から参加をさせていただいております。 ちなみに昨年私が出した画像は次のような画像です。 今年の実装方針 合宿用のレンダラを実装するにあたり ...

半透明物体のレンダリングモデルをまとめてみた

Tatsuya Yatagawa
こんにちはtatsyです。 今回の記事はレイトレ合宿4!?のアドベントカレンダー第8週目の記事です。そのほかの記事につきましても、レイトレ合宿4!?のページからご覧いただけますので、ご興味のある方はぜひぜひ読んでみてください。 さて、今回の記事の内容についてですが、レンダリングにおける半透明物体の扱い方について、dipoleモデルとその発展系を中心として、いくつかの手法をご紹介したいと思います。 レンダ ...