JavaScriptでLSDによる高精度な直線検出

ここ半年くらいは機械学習関連技術のJavaScript実装を行ってきましたが、今回は久しぶりに画像処理関連の要素技術を調べました。 Line Segment Detector (LSD) と呼ばれるアルゴリズムになります。 LSD: a Line Segment Detector (元論文PDF) 画像: 東京ガーデンテラス紀尾井町 – Tokyo Garden Terrace Kioicho LSDによりデジタル画像中から高精度に直線(line segmentなので厳密には線分)を…

OpenCVのDeep Learningモジュールの紹介

opencv_contrib レポジトリに dnn という名前のディレクトリがひそかに出来ており、中を覗いてみると cv::dnn モジュールにDeep Learning関連の実装が含まれていたので軽く試してみました。Google Summer of Code (GSoC) 2015で発表され、GitHubにて実装が公開されたという経緯のようです。 It would be cool if OpenCV could load and run deep networks trained with p…

Packt Publishingのテクニカルレビュアーになった話

Packt Publishing という出版社がイギリスにあるんですが、多種多様な技術書を数多く出版しています。O’Reilly本のように翻訳はされてないので日本のエンジニアにはあんまり知られていない(? のかなと思います。 日本の出版社だとまず企画が通りそうにないマニアックなラインナップになっており、例えば scikit-learn や matplotlib などPythonモジュール単体のみを扱ったエッジの効いたタイトルも多いです。表紙のデザインはO’Reillyより…

ねこと画像処理 part 3 – Deep Learningで猫の品種識別

ねこと画像処理。 (みかん – 吉祥寺 きゃりこ) 前回の ねこと画像処理 part 2 – 猫検出 では画像内の猫の顔を検出する方法を紹介しましたが、今回はディープラーニングの技術を用いて猫の品種を識別したいと思います。 学習データ ねこと画像処理 part 1 – 素材集めでは、自分で撮影した写真を学習データとして使うと書いたのですが、都内の猫カフェ等で出会える猫に限ってしまうと品種の偏りが大きくなってしまうので、ここではしぶしぶ研究用のデータセットを使うことにします。。ただ、S…

ねこと画像処理 part 2 – 猫検出 (モデル配布)

ねこと画像処理。 (アイシャ – 池袋 ねころび) 前回のねこと画像処理 part 1 – 素材集めでは猫画像の集め方について整理しました。今回はその集めた猫画像を使って猫検出用の学習モデル(分類器)を作成したいと思います。それにはいろいろと準備が必要です。 モデル(分類器)の配布についてはこのエントリーの後半で説明します。 アノテーションデータの収集 学習モデルを作る前に猫のどの部分を検出するかを決める必要がありますが、今回は猫の顔(頭)部分の検出を行おうと思います。そのためのアノ…

WebRTC + WebGLによる顔画像合成デモの紹介

Tech Crunchで紹介されていて、国内外の方からのお問い合わせが僕の方にもいくつか来てたのでご紹介を。 これはまたクールで不気味なアプリ―FaceSubはそのうち他人の顔を借りてビデオチャットができる? Face substitution (デモへのリンク) 以前、このブログで JavaScriptでPoisson Image Editingによる滑らかな画像合成 というエントリーを書きましたが、そこで公開したJavaScriptのモジュールをノルウェーの方に上記のデモで使っていただきまし…

ねこと画像処理 part 1 – 素材集め

ねこと画像処理。 ※ 本エントリーには技術的な内容はありません。 ねこが写った画像に対していろいろな画像処理を施していく。今回はデータセットとして利用する画像素材集めに関するエントリー。 素材集め 機械学習系のタスクも想定しているので、大量にデータセットを集めておこう。Web上から取ってくるのでは味気なくてつまらない、邪道である。それに著作権の問題もある。自分の足を使ってたくさん集めて回るんだ。もふもふするんだ。 飼いねこを撮る 野良/地域ねこを撮る ねこカフェのねこを撮る 僕は実家で2匹のねこ…

JavaScriptで画像のクラスタリングによるドット絵風加工

前回のJavaScriptでPoisson Image Editingによる滑らかな画像合成に引き続き、HTML5 Canvasを使ったJavaScriptによる画像処理の一例を紹介します。 今回は画像の画素値に対するクラスタリング(分類)を画像加工用途に応用します。クラスタリングには各画素のRGB値を特徴ベクトル(次元数3)としてk-means法と呼ばれる手法を使って行います(実装上はk-means法の初期値選択アルゴリズムを改良したk-means++法を利用)。以下のサイトでOpenCVを利…