LoginSignup
10
11

More than 5 years have passed since last update.

Caffeについて概要まとめ その1

Posted at

Caffeをはじめようを読んでの個人的なまとめメモです。
今回はCaffe及び深層学習(Deep Learning)についての概要と、Caffeの依存するライブラリについて。

Caffeとは

深層学習(Deep Learning)

  • 深層学習の適用例

    • Google
      • 広告の出し方
      • 音声認識
    • Flickr
      • 投稿画像への自動タグ付け
    • Paypal
      • 詐欺検知システム
  • 入力するデータは多いほうが良い学習ができるが、その分マシンリソースが必要となる。

  • ネットワークをDeep(深層)にすると何が良いのか?

    • 幾層にも重なったネットワークで、ノイズ(音声であれば、音の高低、話すスピードなどの個人差、録音環境の違いなど)を取り除くことにより、本当に必要な情報を抽出できる。
  • ただし層の数が多すぎると 過学習 に陥ることがある。

    • 過学習 とは、モデルが教師データに対して最適化されてしまって、未知の入力に対してパフォーマンスが出ない状態。

学習したい内容によって、ニューラルネットワークの 層の数 , ユニットの数 , 隣接層のユニットの繋がり方 等が異なる。

画像分野における深層学習

  • 畳み込み層とプーリング層を含むニューラルネットワークは 畳み込みニューラルネットワーク(CNN) という。
  • CNNは画像処理分野では、当たり前のように採用される手法。

Caffeの紹介

  • CaffeにはPythonとMATLABのインターフェイスが用意されている。
  • CUDA(NVIDIAのGPUを使用するためのSDK)に対応している。
  • GPUを利用して高速に演算できる(CPUだけで処理することも可能。その場合は処理速度は遅くなる)。

依存関係にあるライブラリ

  • CUDA
    • NVIDIAのGPUを使用するためのSDK
  • BLAS
    • 線形代数演算を行うためのライブラリ
    • Caffeでは ATLAS , OPENBLAS , MKL の三種類のBLASライブラリに依存する。
      • ATLAS: 自動で最適化されたBLASライブラリを生成するオープンソースライブラリ。
      • OpenBLAS: 手動でX86などに最適化されたライブラリ。
      • MKL: Intel製CPUに最適化されたIntel製ライブラリ。
        • MKLは有償ライセンスが必要
  • OpenCV(> 2.4)
    • 画像の入出力周りや、画像の一部を切り抜く際に使われる。
  • Boost
    • C++用の便利な汎用ライブラリ。
  • glog
    • ログAPIを提供するライブラリ。
  • gflags
    • コマンドラインオプション等を処理するライブラリ。
  • protobuf (Google Protocol Buffer)
    • データを効率的にシリアライズするライブラリ。MessagePackのようなもの?
    • .proto 形式のファイルにデータ構造を定義すると、各データをメンバ変数として扱えるクラスを自動生成する。
  • LevelDB
    • 高速な Key-Value Store のローカルデータベースを提供する。Caffe内部では学習データと評価データの保存に使われる。
  • snappy
    • データの圧縮・解凍機能を提供するライブラリ。LevelDBへの保存、取り出し時に使われる。
  • LMDB
    • LevelDBの問題を解決するために導入されたローカルデータベースライブラリ。
  • HDF5
    • 大量の数値データを保存するのに適したファイルフォーマットとファイル操作を提供するライブラリ。
10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11