4日目 CG周辺の単語

そういえば仕事始めた時も分からない単語調べてメモしたとしみじみ.

でもとにかく仕事進めるのが目標なら,とりあえずやるのが近道だったり.

 

昨日の話で行けば,define and runが前者,define by runが後者なのかな.

 

人生振り返ればdefine by runで進めると最初うまくいって(ごまかして),後々詰まって,結局最初からやる.みたいな経験多かったなあ.受験勉強とかまさにそうだし.

 

動的に理解できなかったマンですね.

近道に見えてとりあえずやってみたらなんとなくうまくいって最後に困る,そんなイメージ.

 

暗記系はごまかせたけど数物はあかんって気付いて軌道修正したのが浪人してから.

高一でやったことから全部見直したなあ.いい思い出.何事もキソガダイジ.

 

コンピュータ関係の知識も同じなのかなあ.

結局基礎(ハード,ソフト含めた仕組み)が分かってなきゃ応用(コード書いたりバグ見つけたり)できないと思った.意味分からずやってもどっかで詰まるもんなー.

 

リ・カレントです.

んじゃ今日もメモから.

 

OpenGL: APIを規定した仕様.通常OSはグラフィック周りの処理を独自に設定.OpenGLWindows, Mac, Linux各OSで共通して利用できる描画指示のAPIの規格.ただし,OSやグラフィックボード(グラフィックボードを挿していない場合はCPU内蔵のGPU)がOpenGLに対応していない場合は使用不可.

OpenGLに入門する前に知っておきたかったこと - かみのメモ

 

レンダリング: 表示用のデータを元に,内容を整形して表示すること.

https://wa3.i-3-i.info/word1359.html

 

ラスタライズ方式: 描画したいずけいや物体を二次元平面に射影することで画像生成する手法.物体相互の影響が考慮されない→シャドウマッピングや環境マッピングで補完.

 

サンプリング方式: 光の反射の軌跡をシミュレートして計算することで画像を生成する手法.計算時のメモリと時間の観点から計算量を減らすノウハウが必要.

 

 

GLUT: OpenGLのプログラミングを簡単にするためのライブラリ(Utility Toolkit).プログラム実行時のウィンドウ表示やマウス、キーボードの入力を受け付ける機能を実装してくれる.

OpenGLに入門する前に知っておきたかったこと - かみのメモ

 

GLSL: OpenGL Shading Language. OpenGL用のシェーダプログラム.3D空間を描画するためのプログラム.ちなみに自分で作るシェーダはプラグラマブルシェーダ.

OpenGL が世界を描画する仕組み · けんごのお屋敷

 

ちなみにJPEG画像方式のやり方↓(引用)

  1. ピクセルのデータをRGB形式からYCrCb形式に変換する
  2. YCrCb形式のデータをサンプリングする
  3. 分割されたブロック毎に処理をする

JPEG画像形式の概要(圧縮アルゴリズム) - ウェブで用いられる画像形式。

 

サンプリング: 画像成分の分解と共に,四角い小さな画像データに分割

画像データの構造

 

●Vulkan: GPUハードウェアに近い(専門用語でlow level)API

新世代の低オーバーヘッドなグラフィックスAPI「Vulkan」,ついに正式始動

 

DirectX:Windowsで作業できるAPI.ゲームや動画などのマルチメディアが対象.ゲーム等の開発環境提供,グラフィックや動画の再生サポート.

DirectXとは?何のために入っているもの?|ドスパラ通販【公式】

 

●Metal: Apple OSで作業できるコンピュターグラフィックスAPI.元々OpenCLだったAPIから変更.GPUにほぼ直接アクセスできるらしい.

MetalエンジンがMacの動画編集ソフトにもたらすメリットまとめ – オガワダン.com

 

ドライバ: 内蔵の機器,デバイス,周辺機器などを使用できるようにするソフトウェア.

ドライバ パソコン初心者講座

 

●ThreeJS: ライブラリ.ブラウザ上で3DCGプログラミングを実現できる技術.WebGL(OpenGLのWeb版)をJavaScriptlから操作可能.

デザイナー・ノンプログラマにおすすめしたいThree.jsのカンタン3D体験 | 株式会社LIG

 

●BabylonJS: ThreeJSと同じWebGL用のライブラリ.JavaScriptで動く.

babylon.js 最初の一歩: シーンを描画する - Qiita

 

●A-Frame: WebVRを作成するオープンソースフレームワーク.ThreeJSをベースにしてH TMLで作成できる.

WebVRフレームワークA-Frameで、雪降る街の景色を作ってみました - Qiita

 

フレームワークとライブラリの違いについて↓(引用)

ライブラリが単にコードの再利用を狙ってているのに対して,フレームワークはアプリケーションの設計レベルの再利用を目的としている

(中略)

プログラムをどう動かしていくかという,プログラムの制御に関する主導権は,ライブラリではなくユーザー・コードにあります。

(中略)

フレームワークでは,ユーザー・コードはフレームワークから呼び出されます。設計を再利用するということは,フレームワークがメイン・プログラムとなり,ユーザー・コードへの制御を行うことを意味する

Part1 ソフトウエアのフレームワークとはなにか | 日経クロステック(xTECH)

 

●Open3D: 3Dデータを処理するためのオープンソースライブラリ.PCLと同じ点群処理.PythonC++から扱える.

器用なロボットの実現を目指した3Dセンシング | 画像センシング展2020

 

●Meshlab: メッシュ処理ソフトウェア.メッシュの可視化、編集,クリーニングなど可.

MeshLab とは - XSim

 

UV座標系: 3DCGモデルにテクスチャ(質感や凹凸を表現する画像やデータ)をマッピングする際,貼り付ける位置や方向を指定する座標系.横がU,縦がV.UV座標系を利用したテクスチャマッピングをUVマッピングと呼ぶ.

UV座標系 | CG用語辞典 | CGWORLD Entry.jp

 

Kinect: モーションキャプチャ技術(プロジェクトナタル)を用いた製品.v1とv2がある.

Kinect で遊ぼう - こくぶん研究室

 

●Realsense: 映像の奥行きが測定できるカメラ.いわゆるデプスカメラ(ペッパー君とかHSRの目に利用).

Intel RealSense Depth Cameraがいかにやばいかについて - Qiita

 

エンコード: データを別の形式に変換すること.人間が理解できる文字,音声,映像といったアナログ情報をコンピュータが認識できるデジタル情報へ変換すること.

 

動画コーデック: 動画データを圧縮変換(エンコード),復元(デコード)する方式.H.265はH.264の2倍の圧縮率.

H.264とH.265とは?知っておきたい動画コーデックの違い | 株式会社旭テクノロジー(ATCL) ドローン事業

 

●Xtion: エクシオン.台湾ASUS社から発売されているモーションキャプチャバイス. 

【はじめての3Dセンサー】Xtion PRO LIVEについて - Qiita

 

バスパワー: USBケーブルを通じてUSBから電源を供給する仕組み.ACアダプターやバッテリーなどから電源供給する場合はセルフパワーと呼ぶ.

 

●Oculus: アメリカのIT企業.VRヘッドセットが有名.

 

●Hololens: マイクロソフト社が開発したヘッドマウントタイプディスプレイ(HMD)方式のホログラフィックコンピュータ.

 

ホログラフィー: 光の干渉現象を用い,写真のフィルムなど感光性の媒体に記録する技術.

ホログラム: ホログラフィーにより光の情報を記録した感光媒体.

 

ホログラムによって対象が立体的に見える仕組み↓(引用)

記録のときに用いたのと同じように参照光を照射すると,ホログラ ムによって光が回折されて,元の物体光と等価な光が発生します.発生した回折光は,元の物体光の情報をすべて含 んでいます.例えば立体物を照明したときの表面からの反射光を物体光として記録すると,正面に進む光だけでなく,斜めに進む光も再生されるので,観測する人は,顔の位置を動かすと,立体物の側面も観測することができ,あたかも実物がそこにあるように見えます.

https://www.ntt.co.jp/journal/0406/files/jn200406062.pdf

 

●Git: 誰がいつどのように編集したかを正確に把握できるバージョン管理システムCUI仕様.

 

リポジトリ: ファイルやディレクトリ(フォルダ)の貯蔵庫.

ワークツリー: ユーザーが編集している作業中のディレクトリ.

インデックス: ローカルリポジトリとワークツリーの中間領域.仮置き場.

 

 Github: チーム開発を行うための機能を提供するWebサービス.複数のエンジニアがリモートリポジトリとして活用.GUI仕様.

【初心者向け】Gitとは何なのか。基本用語やその仕組みをまとめています。 | ワードプレステーマTCD

 

ライブラリとかAPIとかの知識を詰め込めた.個々の概念は理解できたが,繋がりがいまいち.

調べて思ったが,そもそも実際のコード構造が分かっていない.

 

何かしらルールあるんだろうが,そのルールの存在すら知らん.

 

ようやく明日からコード書く.

Babylon.jsを使ったデモ動画が面白そうだった.

babylon.js 最初の一歩: シーンを描画する - Qiita

 

ひとまずBabylon.jsかな.その後に前から興味あったUnity.

 

 

以上

 

3日目 CPU/GPUと機械学習

今日も引き続き調べる.

まずGPUの話から.

 

GPU: 3Dグラフィックスを描画するための計算装置であり半導体.グラフィックボードの中にある.VRAMと接続される.

GPU | IT用語辞典 | 大塚商会

 

VRAM: ブイラム.Video RAM. ビデオメモリ.ディスプレイに表示される内容を保持するメモリ.画面の最大解像度や最大同時発色数はVRAMの容量に依存.

ビデオメモリ(VRAM) :一口メモ

 

GPGPU: 画像処理+CPUが行う汎用処理を実行.CUDAもこの機能を搭載.

GPGPUで、GPUがCPUの処理を行う!解説パソコン購入

 

CPU: 計算処理を行う半導体チップ.コア数に応じて処理速度が変化.別名プロセッサ.制御(次に処理するデータのある場所を記憶して演算に伝達)と演算(記憶したデータを処理).マウスとかキーボードのデータが集まり,制御と演算によってパソコンを動かす仕組み.キャッシュメモリと呼ばれるメモリが内臓.

プロセッサーとは?パソコン(PC)の最重要ポイント「プロセッサー」の初心者でも分かる用語解説|ドスパラ通販【公式】

 

キャッシュメモリ: CPUはメモリからデータを呼び出して処理.キャッシュメモリから抜いた方が処理が高速化される.CPUが最初にアクセスするのがL1キャッシュ.最近はL3まである.

CPUとは パソコン初心者講座

 

OpenCL: Open Computer Language.ヘテロジニアスな並列環境のためのフレームワーク.

以下引用↓

OpenCLは,GPUだけでなく,例えばDSP(Digital Signal Processor),あるいは4Gamer的にはPlayStation 3のCPUとして知られる「Cell Broadband Engine」(以下,Cell)などでも利用可能

これで分かるOpenCL。NVIDIAのOpenCLセミナーから,OpenCLの正体と可能性を再確認する

 

PhysX: 物理演算エンジン.GPGPU機能の1つ.NVIDIA提供.

 

Direct Compute: GPGPU用のAPI.アプリケーションを各会社のソフトごとに対応させる必要がなくなった.

GPGPUで、GPUがCPUの処理を行う!解説パソコン購入

 

とりあえず区切る.ディープラーニングゾーンへ参る.

 

●Tensorflow: Googleディープラーニングライブラリ.テンソル(多次元データ構造)計算ライブラリ.

オープンソースのTensorFlowとKerasを比較

 

●Karas: オープンソースディープラーニングライブラリ.バックエンドにTensorflowを利用するディープラーニングライブラリラッパー.

深層学習のライブラリ「Keras」の使い方【入門編】 | TechAcademyマガジン

 

●Pytorch: パイトーチ.Pythonオープンソースディープラーニングライブラリ.

【入門編】PyTorchとは何か?インストールから実装ま…|Udemy メディア

 

●Chainer: チェイナー.Preferred Networksが開発しているディープラニング向けのオープンソフトウェア.Pythonで記述.2019年12月5日にメジャーアップデートの終了を発表.

オープンソースのAI・人工知能 / Chainerとは

 

RNN:  再帰ニューラルネットワークニューラルネットワークの出力を別の入力として利用する再帰的構造を持つニューラルネットワーク

第6回 RNN(Recurrent Neural Network)の概要を理解しよう(TensorFlow編):TensorFlow入門 - @IT

 

機械学習手法は...

1. 目的関数の設計(計算グラフを自力で設計)

2. 勾配の計算(誤差逆伝播機械的に処理)

3. 最小化のための反復計算(勾配を使って反復更新)

からなるらしい. 

 

深層学習フレームワークは以下.

 テンソルデータ構造

 レイヤー(関数)

 ネットワーク(計算グラフ)

 最適化ルーチン

フレームワークによってはインターフェース等異なる.

 

define and run: まず計算グラフを構築し,構築した計算グラフにデータを流す

define by run: 順伝播処理する際,同時に逆伝播用の計算グラフが構築される.

深層学習フレームワークChainerの特徴

 

 

 

今日はここまでにする.

案の定GPUあたりで時間とられた.でもぼんやり全体像が掴めた気がする.

 

機械学習も突っ込んだらキリ無い.

コード書きながら理解するのが早そう.

 

明日明後日は一日使える.

明日で単語メモ終わらせて,日曜からなんか作ってみたいなあ,特にUnity.

 

残りキーワード
OpenGL, Vulkan, DirectX, Metal
ThreeJS, BabylonJS, A-Frame
Open3D, MeshLab
Kinect, Realsense、Xtion
Oculus, Hololens, Git

 

以上

2日目 納期を決める.

昨日記事を書いた後,重大な事実に気づく.

「あ,納期決めるの忘れた」

 

やってる仕事に管理系業務とか書いておきながら忘れた.

というわけで納期を決める.

 

納期を決める⇨納品物が決まっている,普通なら.

納期を決める⇨今やるべきことが決まる,普通なら.

 

でも今回は例外.

キーワードを決めているが,具体的に何をするか決めていないパターン.

 

というより,何ができて何ができないのか,そもそも理解できていない.

 

なので,テーマを1つずつ理解することにする.

形にするのは最後.プログラムを作る予定.納期は11月15日(日)

 

まずキーワードたちを調べる.メモ程度で下に記す.

 

OpenCV: ライブラリ. CとC++使う.

※ライブラリ: ありがちな処理をプログラムの部品の形でいっぱい詰め込んだファイル

https://wa3.i-3-i.info/word1473.html

 

●PCL: Printer Control Languageの略.言語の一つ.プリンタの操作に使う. 

 

●Unity: Democratize Game Development.ゲームの開発環境揃ってる.Asset Storeがある.最近C#でコード記述できるようになった.

 

●Cuda: くーだ.GPU上でプログラミングするためのプラットフォーム.

GPU: コンピュータグラフィックスを高速化するために使用したハードウェア.ちなみにNVIDIAGPUの名付け親.

並列化時代の今、CUDAでGPUを使いこなすには―シリコンスタジオの開発者とNVIDIA担当者に訊く【読者プレゼントあり】 | GameBusiness.jp

 

コンパイラ: なんらかの言語を機械で処理しやすい言語に変換して実行するシステムをコンパイラ言語と呼び.コンパイラはその中でコード変換を行う中核部分.

コンパイラ方式: 人間がわかりやすい高級言語から実行するための方式その1.ソースプログラム読み込み→バイナリプログラム出力→実行

インタープリタ方式:人間がわかりやすい高級言語から実行するための方式その2.ソースプログラム読み込みながら実行.

コンパイラとは何? Weblio辞書

 

バイナリ:  1か0を並べた数字,2進数のこと

機械語: コンピュータに指示させるための命令.0か1で作る.

機械語命令を保存した実行ファイル→バイナリファイル

プログラムとバイナリ - Qiita

 

Cg: NVIDIAが作成したシェーディング言語.

 

シェーダー: 3Dモデルへの陰影処理.Unityだと既に複数フォーマットあり.自分でも作成可.

見た目で世界観を作るシェーダーの基礎知識について|G2 Studios株式会社

ラスタライズ:  ベクターデータなどの抽象度の高いデータを,コンピュータが出力可能なピクセルイメージorビットマップに変換すること.ファイル容量は減少.

Photoshopのラスタライズとは?意味と使い方を解説

PBR: 物理ベースレンダリング.物理法則に基づいて現実の物体へ近づける加工.

見た目で世界観を作るシェーダーの基礎知識について|G2 Studios株式会社

 

ちなみに...

PBR: パーテーションブートレコード.ディスク管理データ(パラメータブロック)とOSを実行するプログラム(ブートストラップローダ)のハイブリッド.

MBR: マスターブートレコード.OSを起動して一番最初に読み込まれるプログラム.起動ディスクの特定,パーテーション情報(位置とか)の保存→ファイル場所の検索が可能.

MBR(マスターブートレコード)とは | 初心者のための入門講座

 

 

SDK:ソフトウェアを開発するためのセット一式.APIを含む.

API:あるWEBサービスが所有している情報や機能を一部公開し,外部のWEBサイトやサービスで利用できるようにしたもの.システム本体のソースコードは公開されていないことがほとんど.

「API」ってつまりどんな技術?用語の意味をおさらいしよう | APIblog

 

 

CUDAについて調べてたらめっちゃ脇道に逸れた.

いつものこと.

 

印象に残った文↓

 

一般的に行われるプログラミングというのは、いわゆる順次処理に適したものです。それを並列化していくなかで、単に複数のプロセッサで動かせばいいということではなく、いかに無駄なく並列化するのか、というのが重要

並列化時代の今、CUDAでGPUを使いこなすには―シリコンスタジオの開発者とNVIDIA担当者に訊く【読者プレゼントあり】 | GameBusiness.jp

 

なんで並列化する?と思い,並列って言葉で調べたら高速化に関する記事がちらほら.

並列化時代の今、CUDAでGPUを使いこなすには―シリコンスタジオの開発者とNVIDIA担当者に訊く【読者プレゼントあり】 | GameBusiness.jp

アプリ、スマホの高速化に貢献! プログラミングでコンピュータの可能性を引き出す|高校生新聞オンライン|高校生活と進路選択を応援するお役立ちメディア

並列プログラムで『高速化』を実現 企業が抱えるIT案件に新風を吹き込む | UJP News Site

 

ここら辺理解したいなあ.

GPU含めて,CUDAのところは後1日くらいかけても良さそう.

 

 

残りの単語ざっと調べたら,  Git除く最後5つはメカだと判明.

Amazonで見たら,以下の感じ.

 

Kinect: Xbox用とWindows用あり

Realsense: 在庫あり. 初見. 

Xtion: 在庫あり. 中古

Oculus: 在庫あり. 種類豊富

Hololens: 高いなあ...

 

もうちょい調べてから買うか決めようと思う. 

 

残りキーワード
Tensorflow, Karas, Pytorch, Chainer
OpenGL, Vulkan, DirectX, Metal
ThreeJS, BabylonJS, A-Frame
Open3D, MeshLab
Kinect, Realsense、Xtion
Oculus, Hololens, Git

 

以上

初日 とりあえず現状と目標把握

今日から投稿.
成長の記録として使用する.

 

●すぺっく
・社会人2年目
・製造業(管理系業務、VBAたまに使う程度)
・院卒(スポーツ科学, MATLAB使って解析)
・ゼロからコード書いた創作物なし
・C,C++,C#,Pythonは人が書いたコードは調べたら分かるレベル

 

●もくひょう
・ゼロからコードを書く
・なんかつくる
・↓のキーワードを全て調ベて使ってみる

OpenCV,PCL,Unity,Cuda
Tensorflow, Karas, Pytorch, Chainer
OpenGL, Vulkan, DirectX, Metal
ThreeJS, BabylonJS, A-Frame
Open3D, MeshLab
Kinect, Realsense、Xtion
Oculus, Hololens
Git

 

●やること
・わからないこと、わかったことを全部言語化する.
・お金を惜しまない.

 

●いきごみとか
・ネットに進捗アップすることで自分を追い込むスタイル.
・楽しむことを忘れずに.

 

以上