exoファイルを使えば、立ち絵の設定をテンプレ化して何度でも使い回せる。キャラごと・表情ごとのexoパターンを作っておけば、配置も口パクも一瞬。拡張編集にドラッグ&ドロップするだけで、作業時間が爆速短縮。
シミュレーションで実物を扱わなくても仕事ができる環境を目指す。つまり家に引きこもって外に出なくてもOKな世界。
JuliaでSobelフィルタを実施。 MATLABと同じ結果が得られた。 コード上の演算はほぼMATLABと一緒 画像が0~1で正規化されている点に注意。 画像書き出し時にも再度正規化しておくと良い。
ScilabでSobelフィルタを実施。 MATLABと同じ結果が得られた。 uint8にキャストする際は、事前にmin,maxを使用してサチュレーションをしておく必要がある。
Python(NumPy)でSobelフィルタを実施。 MATLABと同じ結果が得られた。 np.arrayがuint8になっている状態を維持する必要がある。 imwrite時にuint8になっていないと期待した出力にならない。
MATLABでSobelフィルタを実施。 想定通りの結果が得られた。 というより、前回までの結果が実はMATLABで実施したものだった。 他の環境、言語でも同様の結果が得られるかが確認ポイントになる。
MATLAB,Python,Scilab,Julia比較 第3章 その35【微分フィルタ⑪】
JuliaでSobelフィルタを実施。 MATLABと同じ結果が得られた。 コード上の演算はほぼMATLABと一緒 画像が0~1で正規化されている点に注意。 画像書き出し時にも再度正規化しておくと良い。
MATLAB,Python,Scilab,Julia比較 第3章 その34【微分フィルタ⑩】
ScilabでSobelフィルタを実施。 MATLABと同じ結果が得られた。 uint8にキャストする際は、事前にmin,maxを使用してサチュレーションをしておく必要がある。
MATLAB,Python,Scilab,Julia比較 第3章 その33【微分フィルタ⑨】
Python(NumPy)でSobelフィルタを実施。 MATLABと同じ結果が得られた。 np.arrayがuint8になっている状態を維持する必要がある。 imwrite時にuint8になっていないと期待した出力にならない。
MATLAB,Python,Scilab,Julia比較 第3章 その32【微分フィルタ⑧】
MATLABでSobelフィルタを実施。 想定通りの結果が得られた。 というより、前回までの結果が実はMATLABで実施したものだった。 他の環境、言語でも同様の結果が得られるかが確認ポイントになる。
エッジ検出について説明。 各種微分フィルタについて説明。 Sobelフィルタを元にいろいろ課題認識&対策実施。 実験手順を説明。
MATLAB,Python,Scilab,Julia比較 第3章 その31【微分フィルタ⑦】
Sobelフィルタの実験手順。 とりあえずガウシアンフィルタもかけておく。 縦横の2種類のSobelフィルタと、その結果の合成も忘れずに。
MATLAB,Python,Scilab,Julia比較 第3章 その30【微分フィルタ⑥】
単純にSobelフィルタのカーネルで畳み込みをしても期待する結果にならない。 マイナス値がでるので、絶対値なり二乗なりで対処する必要あり。 横方向、縦方向のエッジしか検知できないので、合成する。
MATLAB,Python,Scilab,Julia比較 第3章 その29【微分フィルタ⑤】
各種フィルタについて説明。 微分フィルタ 一次微分フィルタ Prewittフィルタ Sobelフィルタ
MATLAB,Python,Scilab,Julia比較 第3章 その28【微分フィルタ④】
各種畳み込みカーネル。 微分特性を付けてエッジ検出したい。 微分の特性をより強くしたい。 移動平均でノイズをちょっと除去したい。 元画像の特徴を残すために単純移動平均じゃなくてガウシアンにしたい。
MATLAB,Python,Scilab,Julia比較 第3章 その27【微分フィルタ③】
tanh関数による畳み込み積分は、単なる引き算として解釈できる。 微分の結果を強めるには、ある程度距離がある方が良い。 微分するとノイズが乗りやすいので除去する策も必要。 元画像の特性が消えないようガウシアンにした方が良い。
MATLAB,Python,Scilab,Julia比較 第3章 その26【微分フィルタ②】
エッジ検出をするには、変化の大きさを強調できる微分が相性が良い。 だからといって導関数を求める必要はない。 tanh関数で畳み込み積分をすると微分相当の結果が得られる。 あくまで微分相当であり、微分の結果そのものではない。 欲しいのは変化の強調であるため、問題無い。
MATLAB,Python,Scilab,Julia比較 第3章 その25【微分フィルタ①】
画像処理と言えば、エッジ検出が割と有名。 エッジをデータでみるとどういうことなのを確認するために輝度のグラフを出してみた。 山と谷が検知できればエッジ検知になりそう。 普通に考えると、ピクセル単位で評価するif文の嵐になりそうだが・・・。
Juliaでガウシアンフィルタを実施。 畳み込み演算は関数化。 Juliaのsumは行列の総和。 行、列の総和の場合はdimsオプションを使用。 RGB 3chに対して同じ処理を実施。 データ構造が大きく異なるので注意。
Scilabでガウシアンフィルタを実施。 畳み込み演算は関数化。 Scialbのsumは行列の総和。 行、列の総和の場合は第2引数を使用。 RGB 3chに対して同じ処理を実施。
Python(NumPy)でガウシアンフィルタを実施。 畳み込み演算は関数化。 NumPyのsumは行列の総和。 行、列の総和の場合はaxisオプションを使用。 RGB 3chに対して同じ処理を実施。
MATLABでガウシアンフィルタを実施。 畳み込み演算は関数化。 MATLABのsumは行と列のそれぞれの総和しか計算できない。(version依存) RGB 3chに対して同じ処理を実施している。
MATLAB,Python,Scilab,Julia比較 第3章 その24【ガウシアンフィルタ⑩】
Juliaでガウシアンフィルタを実施。 畳み込み演算は関数化。 Juliaのsumは行列の総和。 行、列の総和の場合はdimsオプションを使用。 RGB 3chに対して同じ処理を実施。 データ構造が大きく異なるので注意。
MATLAB,Python,Scilab,Julia比較 第3章 その23【ガウシアンフィルタ⑨】
Scilabでガウシアンフィルタを実施。 畳み込み演算は関数化。 Scialbのsumは行列の総和。 行、列の総和の場合は第2引数を使用。 RGB 3chに対して同じ処理を実施。
MATLAB,Python,Scilab,Julia比較 第3章 その22【ガウシアンフィルタ⑧】
Python(NumPy)でガウシアンフィルタを実施。 畳み込み演算は関数化。 NumPyのsumは行列の総和。 行、列の総和の場合はaxisオプションを使用。 RGB 3chに対して同じ処理を実施。
MATLAB,Python,Scilab,Julia比較 第3章 その21【ガウシアンフィルタ⑦】
MATLABでガウシアンフィルタを実施。 畳み込み演算は関数化。 MATLABのsumは行と列のそれぞれの総和しか計算できない。(version依存) RGB 3chに対して同じ処理を実施している。
ガウシアンフィルタについて説明。 畳み込み演算、畳み込み積分。 2次ガウス分布関数と近似の良く使われる2次ガウス分布カーネル。 実際に試す際は畳み込み演算の関数を作成予定。
MATLAB,Python,Scilab,Julia比較 第3章 その20【ガウシアンフィルタ⑥】
この後は実際にガウシアンフィルタを試してみる。 画像は恒例の「犬と自転車」 畳み込み演算は今後使いまくる予定なので関数かしておく方針。
MATLAB,Python,Scilab,Julia比較 第3章 その19【ガウシアンフィルタ⑤】
「良く使われるガウス分布カーネル」を確認。 前回の2次ガウス分布と大体似たような値。 だたし、数値の表現としてはシンプル。
MATLAB,Python,Scilab,Julia比較 第3章 その18【ガウシアンフィルタ④】
2次ガウス分布関数について確認。 前回の畳み込み積分で使用した関数は1次ガウス分布関数。 数式で確認。 実施にグラフ表示で確認。 中心に重みが寄ってる山なりの関数。 元信号が増幅、減衰しないように、総和が1.0になるように細工するのが一般的。
MATLAB,Python,Scilab,Julia比較 第3章 その17【ガウシアンフィルタ③】
畳み込み積分について超簡単に説明。 畳み込み積分の演算結果についてアニメーション。 ノイズ除去の様子がわかる。
MATLAB,Python,Scilab,Julia比較 第3章 その16【ガウシアンフィルタ②】
畳み込み演算について説明。 一応、図解。 やっていることは内積。 演算していることは分かるが、どのような効能が得られるかは分かりにくい。
MATLAB,Python,Scilab,Julia比較 第3章 その15【ガウシアンフィルタ①】
画像の読み込み、赤成分抽出、反転、書き込み、グレースケール化の下準備は終わった。 これからガウシアンフィルタをやろうとしているところ。 畳み込み、2次ガウス分布等の事前知識を説明してから実際に処理を実施している予定。
「ブログリーダー」を活用して、KEIさんをフォローしませんか?
exoファイルを使えば、立ち絵の設定をテンプレ化して何度でも使い回せる。キャラごと・表情ごとのexoパターンを作っておけば、配置も口パクも一瞬。拡張編集にドラッグ&ドロップするだけで、作業時間が爆速短縮。
G検定まとめ記事はこちらはじめに結構昔にG検定向けの動画で、「JDLAジェネラリスト検定(G検定)さっくり対策(究極カンペの作り方)カンペを見なくても問題が解ける自分の作り方。」というのを公開しているのだが、これに対しての問い合わせがちょく...
動画作成関連のバックナンバー用ページ。立ち絵を作ったり、動画作ったり、アイキャッチ画像作ったりなどを掲載していく。
画像認識の全体像を因果関係図で整理し、AlexNetを起点に各モデルの進化をたどる。一般物体認識から物体検出・セグメンテーション・姿勢推定まで、各カテゴリの代表モデルと技術を解説。モデル同士の構造的なつながりや技術的背景を踏まえ、因果関係をもとに体系的に理解を深めていく。
究極カンペの作り方についての問い合わせが増えている。G検定の評判を確認し、ネガティブな意見を問題提起として捉える。勉強のステージを定義し、語彙力と因果関係の把握が重要であることを説明。
フーリエ変換には角周波数を扱うものと周波数を扱うものがある。角周波数と周波数の間には角度と1回転という差があるのみ。よって、周波数に2πをかければ角周波数となる。
MATLAB,Python,Scilab,Julia比較するシリーズの第4章。第4章では分類問題で最終的にはニューラルネットワークや最適化アルゴリズムの話だった。第5章はフーリエ解析学から高速フーリエの話がメインとなる。
立ち絵の配置: PSDファイルをAviUtlに配置し、画面サイズやフレームレートを設定。のっぺらぼう化: 目と口を消して、アニメーション効果を追加。アニメーション効果: 目パチと口パクの設定を行い、リップシンクを調整。
フーリエ変換を定義。フーリエの積分公式の一部を抜き出す。逆フーリエ変換を定義。フーリエの積分公式にフーリエ変換を代入するだけ。
Δωで刻みにしたので、極限を利用して連続系へ。数式上は連続ではあるが、一般的な表現ではない。区分求積法とリーマン積分について。フーリエの積分公式を導出した。
VOICEVOXとAivisSpeechキャラと一緒に!AviUtlを使った動画作成 バックナンバーはじめに以前、AivisSpeechのAnneliというキャラの立ち絵を作成した。さらにそこに加えて、AivisSpeechのアイコン画像を...
PSDToolKitプラグインの導入の仕方を説明。PSDファイルを探してGIMPで内容を確認。GIMPで瞬き用、口パク用のレイヤー編集。
フーリエに積分公式は複素フーリエ級数と複素フーリエ係数から導出する。周期2Lの波の数を示すnを周期2πに於ける波の数である角周波数ωに変換。角周波数ωの刻みであるΔωについて説明。Δωを定義することで、離散的な係数算出が連続的な角周波数算出に近づけていっている。
区分求積法とリーマン積分について。離散と連続の分け目。フーリエの積分公式を導出した。演算したはずなのに変化しない。つまり変換、逆変換が成立することを示している。
Δωで刻みにしたので、極限を利用して連続系へ。数式上は連続ではあるが、一般的な表現ではない。よって、一般的な表現に書き換える必要がある。
角周波数ωの刻みであるΔωについて説明。Δωを定義することで、離散的な係数算出が連続的な角周波数算出に近づけていっている。
周期2Lの波の数を示すnを周期2πに於ける波の数である角周波数ωに変換。ω=nπ/Lを使用して変換するだけ。これにより少し数式がシンプルになった。
VOICEVOXとAivisSpeechキャラと一緒に!AviUtlを使った動画作成 バックナンバーはじめに以前、AivisSpeechのAnneliというキャラの立ち絵を作成した。ほぼ独自に作成したが、Anneliの画像自体はAivisS...
フーリエに積分公式は複素フーリエ級数と複素フーリエ係数から導出する。変換を想定した式に変換。複素指数関数との積と積分、総和を経由すると元に関数に戻るというイメージが重要。
AviUtlのセットアップと拡張編集Pluginの導入を行った。mp4ファイルの入力と出力の方法を説明。アニメーションgifの対応方法を説明。
各最適化アルゴリズムの依存関係を記載。 1次の勾配で勢いをつけて、2次の勾配で抑制するというのが全体を通しての共通点。 Adamが1次の勾配と2次の勾配を合わせたアルゴリズムとなる。
最適化アルゴリズムAdamについて説明。 モーメンタムとRMSpropの合わせ技。 1次の勾配と、2次の勾配の指数移動平均を使用する。
AdaDeltaについて説明。 RMSpropの拡張版に当たる。 学習率というハイパーパラメータ無しで動作する。 最終的な学習率は1近傍になるため振動しやすいらしい。
RMSpropについて説明。 AdaGradの完了版であるため、AdaGradと更新式を比較。 AdaGradでは2次の勾配の累積だったものが、2次の勾配の指数移動平均に。 これにより、極小値近辺やプラトーになっても更新を続けられる。
AdaGradについて説明。 更新式をモーメンタムと比較。 更新幅は、最初は大きく、徐々に小さくなり、最終的には学習が進まなくなる欠点を抱えている。
もう一個試す予定の最適化アルゴリズムへ至る系譜を説明予定。 プログラム化して試すのはAdamだが、それに至るアルゴリズムを数式レベルで確認。 Adam以降の最適化アルゴリズムもあるが、基本はAdamベースでクリッピングが入ってる感じ。
最適化アルゴリズムを通常の勾配降下法からモーメンタムに変えた際の差分を確認。 モーメンタムの方が学習の収束が早い。 勾配降下法で500エポックのところ100エポック。 モーメンタムの場合、初期のパラメータ移動が大き目。 これにより、大域最適化を見つける可能性が高くなる。
最適化アルゴリズム モーメンタムを用いて分類の学習をJuliaで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をScilabで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をPythonで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をMATLABで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズムを通常の勾配降下法からモーメンタムに変えた際の差分を確認。 モーメンタムの方が学習の収束が早い。 勾配降下法で500エポックのところ100エポック。 モーメンタムの場合、初期のパラメータ移動が大き目。 これにより、大域最適化を見つける可能性が高くなる。
最適化アルゴリズム モーメンタムを用いて分類の学習をJuliaで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をScilabで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をScilabで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をPythonで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をMATLABで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
モーメンタムを確認するプログラムの方針を確認。 以前の勾配降下法のプログラムをベースにする。 隠れ層のユニット数は4。 プログラムのフローを確認。 モーメンタム項とパラメータ更新が基本的な差分となる。
モーメンタムの更新式について確認。 指数移動平均を利用して直近の値を重視する。 モーメンタムの動作イメージについて確認。 最初は大きく更新して、最適解が近いと小さく更新。 勾配降下法で言うところの学習率が可変と同義な動きになる。
勾配降下法の更新式を確認。 勾配降下法の動作イメージを確認。 学習率が大きい場合と小さい場合で挙動が変わる。 ちょうど良い学習率を人間の手で探す。 これにより、一般的なパラメータとは異なるハイパーパラメータというカテゴリになる。