ブックマーク / aidiary.hatenablog.com (16)

  • ChainerによるCIFAR-10の一般物体認識 (1) - 人工知能に関する断創録

    Chainerによる畳み込みニューラルネットワークの実装(2015/10/7)のつづき。今回はMNISTの数字画像認識ではなく、CIFAR-10(2015/10/14)という画像データを使った一般物体認識をやってみた。画像を10個のクラスに分類するタスク。実装にはChainerを使った。 MNISTは1チャンネルの白黒画像だったけれどCIFAR-10は3チャンネル(RGB)のカラー画像なので少しだけ複雑になる。CIFAR-10(2015/10/14)でも書いたけれどCIFAR-10の提供データは、各画像サンプルがchannel(3チャンネル)、row(32ピクセル)、column(32ピクセル)のフラット形式3*32*32=3072次元ベクトルの形で格納されている。Chainerでは画像を (nsample, channel, height, width) の形式にする必要があるためres

    ChainerによるCIFAR-10の一般物体認識 (1) - 人工知能に関する断創録
  • 類似楽曲検索システムを作ろう - 人工知能に関する断創録

    もう1年以上かけて音声信号処理の勉強をしてきました(Pythonで音声信号処理)。ここらで具体的なアプリケーションとして類似楽曲検索の実験をしてみたのでレポートをまとめておきます。言語はPythonです。 前に 類似画像検索システムを作ろう(2009/10/3) Visual Wordsを用いた類似画像検索(2010/2/27) という画像の類似検索に関するエントリを書きましたが、今回は画像ではなく音楽を対象に類似検索をやってみたいと思います! 今回作る類似楽曲検索システムは、従来からよくあるアーティスト名や曲名などテキストで検索するシステムや購買履歴をもとにオススメする協調フィルタリングベースのシステムとは異なります。WAVEファイルやMP3ファイルなどの音楽波形そのものを入力とするのが特徴です。たとえば、「具体的なアーティストや曲名は知らないけれど、この曲とメロディや雰囲気が似た曲がほ

    類似楽曲検索システムを作ろう - 人工知能に関する断創録
  • 3日で作る高速特定物体認識システム (4) 特徴点のマッチング - 人工知能に関する断想録

    3日で作る高速特定物体認識システム (3) SURFの抽出(2009/10/30)のつづき。 画像からSIFTや SURFといった局所特徴量を抽出できるようになったのでここらでそれを応用してみます。特徴点のマッチングを取ることで2つの画像間で対応する場所を求められるようになります。下の例のような感じです。下の図で2つのキーポイント間にひいた直線は、両端のキーポイントの特徴ベクトルが似ている(距離が小さい)ことを表しています。 以下、プログラムです。 keypoint_matching.exe [画像1のファイル名] [画像2のファイル名]のように2つの画像ファイルを入力として与えると上のようにマッチング画像が表示されます。 #include <cv.h> #include <highgui.h> #include <iostream> #include <vector> #include

    3日で作る高速特定物体認識システム (4) 特徴点のマッチング - 人工知能に関する断想録
    alt-native
    alt-native 2012/03/27
    OpenCV SURF
  • ラングトンの自己複製オートマトン - 人工知能に関する断創録

    ついにやった!ループが自己複製をしている。 ラングトンの日記(1979/10/26) ラングトンの自己複製オートマトンは、ラングトン・ループ(Langton's Loops)と呼ばれます。ライフゲームと同じ二次元のセル・オートマトン空間上でループが増殖していきます。下が増殖の様子を撮影した動画です。もっとよくみたいときは後で掲載するPythonスクリプトを実行してみてください。 この自己複製するループは、クリストファー・ラングトン(Christopher Langton)という人が提案しました。ラングトンは、人工生命(Artificial Life)という研究分野の創始者です。 こういう複製はトップダウンでルールを与えれば簡単にできます。たとえば、腕を10ピクセル伸ばしたら左に90度曲げるを繰り返し、ループが完成したら切り離す。でもこれではまったく面白くない!ラングトンのループのすごいとこ

    ラングトンの自己複製オートマトン - 人工知能に関する断創録
  • セルオートマトン - 人工知能に関する断創録

    この宇宙が、天国にいるものすごいハッカーのコンピュータで動いているセルオートマトンでできていないという証拠はない とある研究者 今回からしばらくセルオートマトンの不思議な世界をふらついてみようと思ってます。セルオートマトンは、その名前のとおりセル(格子)から構成されたオートマトン(自動機械)です。確率とは無縁の決定論的世界ですべてはルールに厳密にしたがって動作します*1。これ以上、説明が難しいので実例を。前に、Java(2004/12/25)やPython(2008/9/14)で作ったことがあるライフゲームは、二次元セルオートマトンの一種です。 ライフゲームの各セルは、生と死(ON、OFFでもいいですけど)の2つの状態を取り、たった3つのルールにしたがって動作します。 生きているセルの周囲に2つまたは3つの生きているセルがあればそのセルは次の世代も生きている 死んでいるセルの周囲に3つの生

    セルオートマトン - 人工知能に関する断創録
  • IIRフィルタ - 人工知能に関する断創録

    Pythonで音声信号処理(2011/05/14) 今まで作ってきたFIRフィルタ(2011/10/23)に続いて、今回は、IIR(Infinite Impulse Response)フィルタをためしてみよう。IIRフィルタでもローパス、ハイパスなどのようなフィルタが作れる。FIRフィルタよりタップ数を小さくすることができるためより高速なフィルタになるのが利点のようだ。 IIRフィルタの定義式は、 x(n)は入力信号でy(n)は出力信号。FIRフィルタとの違いは、過去の出力信号がフィードバックされる点。第1項は、FIRフィルタの式そのものだが、第2項で y(n-j) と過去の「出力信号」が使われている。FIRフィルタと同じようにZ変換してがしがし計算していくと、IIRフィルタの伝達関数 H(z) は、 となる。A(z)とB(z)はフィルタ係数のZ変換の式がそのまま入る。 IIRフィルタの設

    IIRフィルタ - 人工知能に関する断創録
  • FIRフィルタ - 人工知能に関する断創録

    Pythonで音声信号処理(2011/05/14) 今回からしばらくディジタルフィルタの実験をいろいろやろうと思います。 ディジタルフィルタは、 乗算器 加算器 遅延器 の3つの要素の組み合わせによって構成されます。この組み合わせ方によって、 FIR(Finite Impulse Response)フィルタ IIR(Infinite Impulse Response)フィルタ の2種類にわけられるとのこと。今回は、FIRフィルタを実装してみます。 FIRフィルタ FIRフィルタの定義式は、 となり、畳み込みの定義式と同じです。x(n)は入力信号、y(n)は出力信号、b(i)は乗算器のフィルタ係数、Nは遅延器の数(フィルタ係数の数はN+1)です。式は難しそうだけどシグマをほぐしてみるとけっこう簡単。 b(0) x(n) 最新の入力信号x(n)にフィルタ係数b(0)をかける b(1) x(n-

    FIRフィルタ - 人工知能に関する断創録
  • 3日で作る高速特定物体認識システム (1) 物体認識とは - 人工知能に関する断創録

    情報処理学会の学会誌『情報処理』の2008年9月号(Vol.49, No.9)に「3日で作る高速特定物体認識システム」という特集記事があります。OpenCVを用いた面白そうなプロジェクトなのでレポートにまとめてみようと思います。3日でできるかはわからないけど。 残念ながらこの記事はPDFを無料でダウンロードすることができません(CiNiiでオープンアクセス可能になったみたいです)。なので会員以外で元記事が読みたい人は図書館でコピーする必要があるかも・・・また、2009年9月号の人工知能学会誌にも物体認識の解説「セマンティックギャップを超えて―画像・映像の内容理解に向けてー」があります。こちらも非常に参考になりますが同様にPDFが手に入りません・・・。他にもいくつかわかりやすい総説論文へのリンクを参考文献にあげておきます。 物体認識とは 物体認識(object recognition)は、画

    3日で作る高速特定物体認識システム (1) 物体認識とは - 人工知能に関する断創録
  • 波形を見る - 人工知能に関する断創録

    Pythonで音声信号処理(2011/05/14) サイン波 次は音の波をプロットして目に見えるようにしてみます。グラフの描画にはPythonのmatplotlibを使います。WAVEファイルには音をディジタル化(標化 + 量子化)したデータがそのまま含まれているのでそれを読み出します。WAVEファイルの詳細なフォーマットはwavファイルフォーマットが参考になりました。自分でバイナリを分析してもよいですが、waveモジュールがやってくれます。 #coding:utf-8 import wave from numpy import * from pylab import * def printWaveInfo(wf): """WAVEファイルの情報を取得""" print "チャンネル数:", wf.getnchannels() print "サンプル幅:", wf.getsampwidt

    波形を見る - 人工知能に関する断創録
  • Pythonで音声信号処理 - 人工知能に関する断創録

    今年の目標(2011/1/1)の1つに音声認識技術の深耕というのを立ててます。いきなり音声認識をやるのは知識不足でかなり大変だということが分かったので、まずは音声のいろんな性質や信号処理の技術を一つ一つ試しながら習得していくことにしました。 音声信号処理ではよくMatlabが使われるようなのですが、 Matlabは高くて買えない(フリーのOctaveってのもあります) すでに使っているPython、Rと文法が似ていて混乱する というわけでMatlabはやめてPythonを使います。SciPyにフーリエ変換の機能があったのでたぶん同じようなことができるでしょう。Pythonのいろんな音声関係のライブラリなんかも紹介できればと思います。 当面の目標は、簡単な類似楽曲検索システムを作ることです。その後は、いろんなツール(HTKなど)を駆使して音声認識システムを作りたいと思ってます。 このページは

    Pythonで音声信号処理 - 人工知能に関する断創録
  • ナイーブベイズを用いたテキスト分類 - 人工知能に関する断想録

    今までPRMLを読んで実装を続けてきましたが、10章からは難しくて歯が立たなくなってきたのでここらで少し具体的な応用に目を向けてみようと思います。機械学習の応用先としては画像の方が結果を見ていて面白いんですが、当面は自然言語処理を取り上げます。そんなわけで一番始めの応用は機械学習と自然言語処理の接点として非常に重要なテキスト分類(Text Classification, Text Categorization)の技法たちを試していきたいと思います。テキスト分類は文書分類(Document Classification)という呼び方もあります。テキストと文書は同じ意味です。最初なので自分の知識の整理と入門者への紹介のためにちょっと丁寧にまとめてみました。 テキスト分類とは テキスト分類とは、与えられた文書(Webページとか)をあらかじめ与えられたいくつかのカテゴリ(クラス)に自動分類するタス

    ナイーブベイズを用いたテキスト分類 - 人工知能に関する断想録
  • テキストからWikipedia見出し語を抽出 - 人工知能に関する断創録

    WindowsでMeCab Pythonを使う(2010/11/21)のつづきです。形態素解析を使ってると単語が変なところで切れていたり、未知語が多かったりと不満点が出てきます。また、応用によっては、形態素ではなく、複合語単位で抽出したいということもしばしばあります。たとえば、 人工知能は、コンピュータに人間と同様の知能を実現させようという試み、あるいはそのための一連の基礎技術をさす。 人工知能という名前は1956年にダートマス会議でジョン・マッカーシーにより命名された。 現在では、機械学習、自然言語処理、パターン認識などの研究分野がある。(Wikipedia人工知能』を改変)という文章をMeCabで形態素解析して名詞のみ取り出すと、 人工 知能 コンピュータ 人間 同様 知能 実現 試み ため 一連 基礎 技術 人工 知能 名前 1956 年 ダート マス 会議 ジョン マッカーシー

    テキストからWikipedia見出し語を抽出 - 人工知能に関する断創録
  • WindowsでMeCab Pythonを使う - 人工知能に関する断創録

    語の文章を単語に分割するには形態素解析を使います。日語の形態素解析には、ChaSen、MeCab、Yahoo!形態素解析などがあります。ナイーブベイズを用いたブログ記事の自動分類(2010/7/3)でMeCabをPythonから使う方法を簡単にまとめましたが、MeCabはよく使うので再度まとめ直して独立したエントリにしました。Yahoo!形態素解析の使い方は、Yahoo!形態素解析API(2009/4/15)で書きました。 Windowsへの導入方法 MeCabは高性能な形態素解析モジュールでPythonRubyPerlJavaなどさまざまな言語から使えます。Mac OS XとLinuxでは簡単にコンパイルしてインストールができるのですが、WindowsではMinGWやVisual Studioのインストール、コードの修正が必要でかなり面倒くさい。そこで、Pythonモジュー

    WindowsでMeCab Pythonを使う - 人工知能に関する断創録
  • 3日で作る高速特定物体認識システム (3) SURFの抽出 - 人工知能に関する断創録

    3日で作る高速特定物体認識システム (2) SIFT特徴量の抽出(2009/10/24)の続きです。あっ、3日経っちゃいました。 今回は、SIFTとは別の局所特徴量であるSURF(Speeded Up Robust Features)を抽出してみます。SURFのFはFeaturesなのでSURF特徴量とは言わないのかな?SIFTとは抽出方法は違いますが、画像からキーポイントと特徴ベクトルを抽出する点では同じです。抽出速度はSIFTより数倍高速だそうですが、精度は多少落ちるとのこと。リアルタイム処理したいときはこっちのほうがよさそうです。また、OpenCVにもすでに実装されています。SURFの詳しいアルゴリズムは後で論文を読むとしてとりあえず試してみます。 画像からSURFを抽出する 以下のプログラムは、画像からSURFを抽出して特徴点を描画し、特徴量をファイルへ格納するプログラムです。この

    3日で作る高速特定物体認識システム (3) SURFの抽出 - 人工知能に関する断創録
  • Visual Wordsを用いた類似画像検索 - 人工知能に関する断創録

    類似画像検索システムを作ろう(2009/10/3) 3日で作る高速特定物体認識システム(2009/10/18) に続くOpenCVプロジェクト第三弾です。今回は、上の二つをふまえてカラーヒストグラムではなく、局所特徴量(SIFTやSURF)を用いた類似画像検索を試してみます。局所特徴量はグレースケール画像から抽出するため、カラーヒストグラムと違って色は見ていません。画像の模様(テクスチャ)で類似性を判定します。 実験環境は、Windows 7、MinGW C++コンパイラ、OpenCV2.0、Python 2.5です。EclipseでMinGWを使う方法はEclipseでOpenCV(2009/10/16)を参照してください。Visual C++にはないディレクトリスキャン関数を一部使っているのでVisual C++を使う場合は、少しだけ修正が必要です。 Bag-of-Visual Wor

    Visual Wordsを用いた類似画像検索 - 人工知能に関する断創録
  • 3日で作る高速特定物体認識システム (2) SIFT特徴量の抽出 - 人工知能に関する断創録

    3日で作る高速特定物体認識システム (1) 物体認識とは(2009/10/18)の続きです。 今回は、画像からSIFT (Scale-Invariant Feature Transform) という局所特徴量を抽出するところを作ってみようと思います。 SIFT特徴量の抽出 まずは、局所特徴量の代表ともいえるSIFTを試してみます。OpenCVにはSIFTを抽出する関数がなかったのでRob Hess氏がC言語で実装したライブラリを試してみます。内部でOpenCVを使っているので事前にOpenCVのインストールが必要です。実装はOpenCV 1.1でされているみたいですが、2.0でもちょっと手直しすると動きました。Rob Hess氏のホームページからSIFT Feature Detectorのzip版を落とします。 (注)Hess氏のサイトが更新されたようで現在はGitHub上のOpenSIF

    3日で作る高速特定物体認識システム (2) SIFT特徴量の抽出 - 人工知能に関する断創録
  • 1