TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

2017-03-01から1ヶ月間の記事一覧

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

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

3Dモデルから学習データを生成する

以前よりDCNNによるマンガキャラクターの顔パーツ検出に取り組んでいるが、学習データを手作業で準備するのが大変なので自動化できる方法を模索している。写真を線画化するする方法や、Free-Form Deformationを使う方法を試しているが、ここでは3Dモデルから…

SSDによる物体検出を試してみた

先日の日記でYOLOv2による物体検出を試してみたが、YOLOと同じくディープラーニングで物体の領域検出を行うアルゴリズムとしてSSD(Single Shot MultiBox Detector)がある。YOLOv2の方が精度が高いとYOLOv2の論文に書かれているが、SSDの精度も高いようなので…

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

以前にWindowsでCaffeをビルドしてGPUで実行する方法について書きましたが、内容が古くなったので書き直します。以前に日記を書いた時点では、ビルド済みバイナリが配布されていなかったため、自分でビルドを行いましたが、ビルド済みバイナリが配布されるよ…

YOLOv2による物体検出を試してみた

前回の日記でWindowsにインストールしたDarknetを使ってYOLOv2による物体検出を試してみました。Darknetの学習済みモデルを使用して、ニコニコ動画の上位にあった動画に対して行ってみました。こちらの動画です。www.nicovideo.jp キャラクターがだいたいper…

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

以前に行ったマンガの顔パーツ検出では、顔の領域の検出にdlibのHOG+SVMを使った方法で矩形領域を抽出してから、DCNNで顔パーツ検出を行っていた。 HOG+SVMである程度マンガから顔の領域を抽出できるが、少なからず検出漏れがあった。 また、スライディング…

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次元に拡張するとベジエ曲面となる。 …

PyOpenGLを使ってみる その6(テクスチャに頂点配列を使う)

テクスチャに頂点配列を使う。 import sys from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * from PIL import Image def load_texture(): img = Image.open("sample2.png") w, h = img.size glTexImage2D(GL_TEXTURE_2D, 0, GL_…

PyOpenGLを使ってみる その5(頂点配列にnumpyを使う)

前回は頂点配列にPythonの組み込みのタプルとリストを使用したが、numpyを使うこともできる。 座標変換はOpenGLの機能で行った方が簡単だが、場合によってはnumpyを使用できると便利である。 import sys from OpenGL.GL import * from OpenGL.GLU import * f…

PyOpenGLを使ってみる その4(頂点配列)

頂点配列を使って描画を行う。 import sys from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * def display(): glClear(GL_COLOR_BUFFER_BIT) glEnableClientState(GL_VERTEX_ARRAY) glColor3f(1.0, 0.0, 0.0) glVertexPointerf([…

PyOpenGLを使ってみる その3(移動と回転)

前回表示したテクスチャを移動と回転させる。 import sys from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * from PIL import Image def load_texture(): img = Image.open("sample1.png") w, h = img.size glTexImage2D(GL_TEXT…

PyOpenGLを使ってみる その2(テクスチャ)

PyOpenGLでテクスチャを表示する。 import sys from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * from PIL import Image def load_texture(): img = Image.open("sample1.png") w, h = img.size glTexImage2D(GL_TEXTURE_2D, 0,…

PyOpenGLを使ってみる

前回の日記でPyOpenGLの導入を行った。2D画像の変形をOpenGLを使って行うことが目標だが、現時点でOpenGLの知識がほとんどない。 画像の変形はFree-Form Deformationという方法でポリゴンの頂点を変形させることで実現できそうだが、あせらず基礎的なことか…