読者です 読者をやめる 読者になる 読者になる

TadaoYamaokaの日記

山岡忠夫 Home で公開しているプログラムの開発ネタを中心に書いていきます。

3Dモデルから学習データを生成する その2(トゥーンレンダリング)

前回に続きBlenderを使用してMMDの初音ミクの3Dモデルから、マンガキャラクターの顔パーツ検出用学習データの生成を試みる。BlenderでMMDのモデルを読み込むとそのままでは、シェーディングが有効になっており、レンダリングを行うと陰影のある画像となる。 …

Free-Form Deformationでテクスチャを変形する

前回までの日記で、OpenGLでテクスチャ(2D画像)を平面に描画する方法と、ベジエ曲面を描画する方法について記述した。 この2つを組み合わせて、テクスチャの変形を行う。テクスチャの変形には、自由形状変形(FFD: Free-Form Deformation)という手法を使う。 …

Pythonでベジエ曲面を描く

前回の日記でPythonでベジエ曲線を描いたが、今回はベジエ曲面(Bezier patches)を描く。ベジエ曲面は、以下の式で表される。 は、前回の日記で説明したバーンスタイン(Bernstein)多項式である。は、平面上に格子状に配置した制御点で、m, nは、それぞれu軸、…

Pythonでベジエ曲線を描く

Free-Form Deformation(FFD)を使用して2D画像の変形を行おうと試みているが、FFDはベジエ(Bezier)曲面で表される座標系を使用して変形する。 そこで、ベジエ曲線を復習を兼ねてmatplotlibで描画してみる。ベジエ曲線を2次元に拡張するとベジエ曲面となる。 …

WindowsのPythonでOpenGLを使う

写真の線画化を、iBUG 300-Wの300枚の画像に試してみたけど、あまりきれいな線画が生成できなかった。 学習データの生成には他のアプローチを試したい。 Live2Dのような方法で、線画のキャラクタの向きや表情のバリエーションを増やせないかと考えている。 L…

Surfaceのカメラでリアルタイムに顔器官検出を行う

以前日記に書いたdlibを使った顔器官検出をSurfaceのカメラを使ってリアルタイムに行ってみました。 import sys import dlib import cv2 if len(sys.argv) != 2: print("realtime_shape_predictor.py model") exit() model = sys.argv[1] predictor = dlib.s…

SurfaceのカメラをPythonからリアルタイムに使う

SurfaceのカメラをPythonからリアルタイムに使うには、OpenCVを利用して以下のように記述する。 import cv2 video_capture = cv2.VideoCapture(1) while True: ret, frame = video_capture.read() cv2.imshow('Video', frame) if cv2.waitKey(1) & 0xFF == o…

TensorFlowをGPUを有効にしてWindowsでビルドする

※公式からWindowsバイナリが提供されたため、この記事の内容はほとんどの人には不要です。TensorFlowはビルドツールのBazelがWindowsに対応していないため、Windowsではビルドができなかった。Bash on Windowsを導入することで、Ubuntuのパッケージをバイナ…

顔認識用の学習データを準備する際の小技

画像から顔画像のみを切り出して、顔認識用の学習データを準備したい。画像データが大量に必要になるので、data augmentationで実行時に動的に増幅することを考慮する。data augmentationとして、回転、拡大縮小、平行移動をアフィン変換で行う。切り出した…

dlibをWindowsにインストールする(補足)

前の日記で、WindowsのAnacondaでインストールしたPythonにdlibをインストールする方法を記載したが、jpegライブラリが有効になっていないため、サンプルが実行できなかった。解決方法が見つかったので、その方法を記す。Bash on Windowsでは、dlib公式のペ…

dlibの顔のパーツ検出をマンガで試してみた(追試)

昨日の日記でdibでマンガの顔器官検出を試したころ、全く検出できなかった。HOG特徴+SVMであらかじめ顔検出をして切り出した画像を対象とした場合どうなるか追加で検証を行った。画像の切り出しは、顔検出スクリプト(detect_object_detector.py)を修正して、…

dlibの顔のパーツ検出をマンガで試してみた

前回の日記でサンプルで試した顔器官検出を、マンガの画像で試してみた。 学習データ準備 サンプルでは特徴点が68個あるが、入力するのが大変なので、顔の輪郭5点と左右の眼それぞれ4個ずつの13個とした。前回説明した通り、imglabツール(前の日記参照)の引…

dlibで顔のパーツ検出を行う

前の日記で、dlibの顔検出を試したが、dlibには目、鼻、口、輪郭といった顔のパーツを検出する機能も実装されている。 英語では「Facial Landmark Detection」という用語が使われている。 日本語では「顔器官検出」と訳すようだ。ここでは、サンプルを試す手…

dlibをWindowsにインストールする

前々回の日記で、Bash on Windowsにdlibをインストールする方法を書いたが、Anaconda 4.1(64-bit)でインストールしたPython 3.5にもインストールできたので、その方法を示す。 ※2016/9/27追記:この方法でインストールしてもJPEGライブラリが有効にならない…

dlibでマンガの顔認識をやってみた

昨日の日記でBash on Windowsを使ってdlibで顔検出を行うことができたので、自分で用意した画像を使って、顔検出ができるか試してみた。↓この記事のようにアニメの画像での顔認識を試した例はいくつかありましたが、マンガでの例がなかったので試してみまし…

Bash on Windowsでdlibを使って顔検出する

最近、物体検出に興味がありネットの記事を調べていたら、こちらの記事で使われていたdlibによるHOG特徴量+SVGが検出精度が高いらしい。bohemia.hatenablog.comdlibはC++の総合的な機械学習のライブラリで、Python用のインターフェースも用意されている。自…

Chainerで位置ごとに異なるバイアスを定義する

前回の日記で、AlphaGoのSL policy networkをChainerで定義した際に、layer13の位置ごとに異なるバイアスを、(19*19)次元のベクトルとして、Convolution2Dを1次元にreshapeした後、足し合わせていたが、ミニバッチにした場合うまくいかないことが分かった。V…

Chainerで3層パーセプトロンの誤差逆伝播を実装してみた

前回の記事で、numpyを使って行列演算で3層パーセプトロンを実装しましたが、同じことをChainerを使って実装してみます。 import numpy as np import chainer from chainer import Function, Variable, optimizers from chainer import Link, Chain import c…

Pythonで3層パーセプトロンの誤差逆伝播を実装してみる

入力層、隠れ層、出力層で構成される単純なニューラルネットワークで、 誤差逆伝播を計算します。隠れ層の活性化関数はsigmoid、 出力層の活性化関数はsoftmaxとします。誤差関数(損失関数)は、交差エントロピーを使用します。それぞれの式は以下の通りです…

PythonでGo

AlphaGoとイ・セドルとの対局を観てから、AlphaGoの仕組みについて調べています。Natureの論文を読んで少しずつ理解しているところですが、 そのうちまとめたいと思っています。AlphaGoは、ディープラーニングを使用しているといっても ベースになっているの…