人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

コンピュータビジョン

Dogs vs. Cats Redux

今回はPractical Deep Learning for CodersのLesson1の結果をまとめてみた。題材はKaggleの犬・猫分類。

畳み込みニューラルネットワークの可視化

Deep Learningの学習結果(重み)はブラックボックスで、隠れ層のユニット(特に深い層の!)が一体何を学習したのかがよくわからないと長年言われてきた。しかし、今回紹介する方法を使うとニューラルネットが何を学習したのか目で見える形で表現できる。 …

VGG16のFine-tuningによる17種類の花の分類

前回(2017/1/10)は、VGG16をFine-tuningして犬か猫を分類できる2クラス分類のニューラルネットワークを学習した。今回は、同様のアプローチで17種類の花を分類するニューラルネットワークを学習してみたい。前回の応用編みたいな感じ。この実験はオリジナ…

VGG16のFine-tuningによる犬猫認識 (2)

VGG16のFine-tuningによる犬猫認識 (1) (2017/1/8)のつづき。 前回、予告したように下の3つのニューラルネットワークを動かして犬・猫の2クラス分類の精度を比較したい。 小さな畳み込みニューラルネットをスクラッチから学習する VGG16が抽出した特徴を使…

VGG16のFine-tuningによる犬猫認識 (1)

VGG16はILSVRCのコンペ用に学習されたニューラルネットなのでImageNetの1000クラスを認識できる。しかし、前の記事(2017/1/4)で実験したように「ひまわり」のようなImageNetに存在しないクラスはそのままでは認識できない。 この問題を解決するためVGG16の…

KerasでVGG16を使う

今回は、Deep Learningの画像応用において代表的なモデルであるVGG16をKerasから使ってみた。この学習済みのVGG16モデルは画像に関するいろいろな面白い実験をする際の基礎になるためKerasで取り扱う方法をちゃんと理解しておきたい。 ソースコード: test_vg…

ChainerによるCIFAR-10の一般物体認識 (2)

ChainerによるCIFAR-10の一般物体認識 (1)(2015/11/8)のつづき。今回は畳み込みニューラルネットワークの畳込み層の数を変えたときにテスト精度がどのように変わるか調査した。前回と同じくCIFAR-10の一般物体認識をタスクとしている。 畳み込み2層(conv2…

ChainerによるCIFAR-10の一般物体認識 (1)

Chainerによる畳み込みニューラルネットワークの実装(2015/10/7)のつづき。今回はMNISTの数字画像認識ではなく、CIFAR-10(2015/10/14)という画像データを使った一般物体認識をやってみた。画像を10個のクラスに分類するタスク。実装にはChainerを使った。…

CIFAR-10

MNISTの数字画像はそろそろ飽きてきた(笑)ので一般物体認識のベンチマークとしてよく使われているCIFAR-10という画像データセットについて調べていた。 このデータは、約8000万枚の画像がある80 Million Tiny Imagesからサブセットとして約6万枚の画像を抽…

Theanoによる畳み込みニューラルネットワークの実装 (2)

Theanoによる畳み込みニューラルネットワークの実装 (1)(2015/6/26)のつづき。今回は前回できなかった ConvLayerとPoolingLayerの分離 ReLUの導入 を試してみた。 ConvLayerとPoolingLayerの分離 Deep Learning Tutorialの実装では、LeNetConvPoolLayer()…

Theanoによる畳み込みニューラルネットワークの実装 (1)

Theanoによる多層パーセプトロンの実装(2015/6/18)のつづき。今回は、Deep Learning Tutorialの畳み込みニューラルネットワーク(Convolutional Neural Network: CNN, ConvNet)を実装してみる。 CNNは人間の視覚野を参考にした手法であり、画像認識に特化…

多層パーセプトロンでMNISTの手書き数字認識

多層パーセプトロンで手書き数字認識(2014/2/1)の続き。今回は、簡易版のdigitsデータではなく、MNISTのより大規模な手書き数字データを使って学習してみます。 MNISTデータ MNISTは、28x28ピクセル、70000サンプルの数字の手書き画像データです。各ピクセ…

多層パーセプトロンで手書き数字認識

多層パーセプトロンが収束する様子(2014/1/23)の続き。数字認識は前にニューラルネットによるパターン認識(2005/5/5)をJavaで作りましたが今回はPythonです。今回は、多層パーセプトロンを用いて手書き数字を認識するタスクを実験します。今回からscikit…

Visual Wordsを用いた類似画像検索

類似画像検索システムを作ろう(2009/10/3) 3日で作る高速特定物体認識システム(2009/10/18) に続くOpenCVプロジェクト第三弾です。今回は、上の二つをふまえてカラーヒストグラムではなく、局所特徴量(SIFTやSURF)を用いた類似画像検索を試してみます…

3日で作る高速特定物体認識システム (7) 最近傍探索の高速化

3日で作る高速特定物体認識システム (6) 線形探索を用いた特定物体認識(2009/11/22)のつづきです。今回がこのシリーズの最終回です。前回の線形探索は遅すぎるので最近傍探索を高速化します。これで表題の高速特定物体認識システムができあがります。高速…

3日で作る高速特定物体認識システム (6) 線形探索を用いた特定物体認識

3日で作る高速特定物体認識システム (5) 物体モデルデータベースの作成(2009/11/14)のつづきです。今回は、クエリを与えたときに物体モデルデータベースの中から一番似ている物体を探し出してクエリが何かを認識する部分(いわゆる、特定物体認識)を作り…

3日で作る高速特定物体認識システム (5) 物体モデルデータベースの作成

3日で作る高速特定物体認識システム (4) 特徴点のマッチング(2009/11/2)のつづきです。今回は、高速特定物体認識システムの物体モデルデータベースを作成してみます。クエリとして与えた画像が何かはこの物体モデルデータベースを検索することで認識できる…

3日で作る高速特定物体認識システム (4) 特徴点のマッチング

3日で作る高速特定物体認識システム (3) SURFの抽出(2009/10/30)のつづき。画像からSIFTや SURFといった局所特徴量を抽出できるようになったのでここらでそれを応用してみます。特徴点のマッチングを取ることで2つの画像間で対応する場所を求められるよう…

3日で作る高速特定物体認識システム (3) SURFの抽出

3日で作る高速特定物体認識システム (2) SIFT特徴量の抽出(2009/10/24)の続きです。あっ、3日経っちゃいました。今回は、SIFTとは別の局所特徴量であるSURF(Speeded Up Robust Features)を抽出してみます。SURFのFはFeaturesなのでSURF特徴量とは言わな…

3日で作る高速特定物体認識システム (2) SIFT特徴量の抽出

3日で作る高速特定物体認識システム (1) 物体認識とは(2009/10/18)の続きです。今回は、画像からSIFT (Scale-Invariant Feature Transform) という局所特徴量を抽出するところを作ってみようと思います。 SIFT特徴量の抽出 まずは、局所特徴量の代表ともい…

3日で作る高速特定物体認識システム (1) 物体認識とは

情報処理学会の学会誌『情報処理』の2008年9月号(Vol.49, No.9)に「3日で作る高速特定物体認識システム」という特集記事があります。OpenCVを用いた面白そうなプロジェクトなのでレポートにまとめてみようと思います。3日でできるかはわからないけど。残念…

類似画像検索システムを作ろう

C++版のOpenCVを使ってカラーヒストグラムを用いた類似画像検索を実験してみました。バッチ処理などのスクリプトはPythonを使ってますが、PerlでもRubyでも似たような感じでできます。指定した画像と類似した画像を検索するシステムは類似画像検索システムと…

眼の実装

OpenCVっていうコンピュータビジョンのライブラリを使うと拡張現実でもっと高度なことができるらしい。画像認識、画像理解、コンピュータビジョンも人工知能の範疇だけどまったく勉強したことなかったのでこれを機会に基礎は習得したい。とりあえず下の三冊…