はじめに本記事では普段使っているGPUImage2をよりよく知るためにGPUの挙動を少し掴められればいいなと思って書きました。GPUImage2とはGPUImage2とはSwiftで書かれたGPUアクセレーションを使って画像や動画に対して処理を行うオープンソースフレームワークのことです。GPUImageの第二世代に当たります。これはiOS、macOS、およびswiftをサポートする環境下で使うことができます。開発元はKhronosです。以下がGithubリポジトリになります。github.comまた、2018/09/06付のスター数、フォーク数などは以下の通りです。ライセンスGPUImage2はBSD-3-clauseライセンスで公開されています。数日前にOSSライセンスのエントリを書いたので見てみようと思います。目的GPUImageの目的は動画や画像の機械学習用途リアルタイムな動画処理をすることです。どちらも一般的には処理が重くCPUだけでは対応できないところがありますが、GPUを使うことによって何百倍を高速化することができ、特にモバイルアプリでは注目に値できるでしょう。以下の条件が必要です。GLとはOpenGLとはコンピュータークラフィック用のAPIである。これによって開発者は直接GPU操作をしなくても簡単にGPUを用いた画像処理などが行えます。いろんな2次元、3次元グラフィックをサポートしていて、ウェブでは広く知られているWebGLのパイオニアです。詳細を知りたい人は以下のサイトをご覧ください。GLに組み込まれているものです。GL(ES)とは、主に携帯電話などの組み込みシステムで使用されている3次元コンピュータグラフィックス用APIです。フレームワークのアーキテクチャすべての画像や動画は以下のように、三角で構成されるメッシュでできている。いっても過言ではありません。https://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&ved=2ahUKEwilppCOiqbdAhUJOrwKHYUNB7wQjhx6BAgBEAM&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DXUzOZiZOiGI&psig=AOvVaw03gx48Dcgq4fgMrh3SVu7m&ust=1536313010685403このような画像を処理するのは以下のようなプロセスパイプラインを使います。Pipeline以下に細かい用語をまとめておきます。arrayVertexが格納されている配列。AssenmblyVertexを結んでできる三角形。Shadderテキスチャだったり、照明の処理をかける。Blendingすでに書き込まれている後ろにあるfragmentを削除する。Framebugffers出力。パイプラインの入力はカメラ、ファイルなどimageやvideoです。いくつもの変換処理をするimageConsumerを経て、出力のスクリーン、画像ファイル、生データへ出力されます。アトミックな変換処理を繰り返すことによって、好きな変換処理をすることができます。頂点シェダーとフラグメントシェダーを使います。Vulkanグラフィックハードウェアの低いレベルの制御を目的としていて、AppleのMetalを競合しています。Vulkanとは、同じくKhorosが開発しているクラスプラットフォームなグラフィックスAPIである。GL(ES)はハードウェアを高度に抽象化されていて、利便性が高いものの性能要求の厳しいソフトウェアの開発に利用する場合はオーバーヘッドが大きかったのである。4.6からはVulkanと互換性があるみたいです。参考文献カーネギーメロン大学のGPUに関する講義資料カーネギーメロン大学はコンピュータサイエンスで世界トップレベルを誇る。GPUImageについてフォーカスされているが、CUDAやOpenCLなども触れている。大きな変化はないが、GPUImage2ではなくてGPUImageについて書かれていることに注意。私は、いくつか家内サービスを運用しています。C...2018-12-14CircleCIでSpinnakerのデプロイメントパイプラインをデプロイするどうも、もうすぐ大学卒業の@timtimtim1026です。2018の第3日目の記事です。»プロフィール学生エンジニア。忘れてしまうので備忘録です。flaskでServerlessにホストするTelepresence概論スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。