Caffe(カフェ)。オープンソースのディープラーニングライブラリです。画像認識に特化しており、高速処理が可能です。

オープンソースのAI・人工知能/Caffeとは

Caffe(カフェ)。オープンソースのディープラーニングライブラリです。画像認識に特化しており、高速処理が可能です。

Caffe(カフェ)とは、オープンソースのディープラーニングライブラリです。画像認識に特化しており、高速処理が可能です。

目次

「Caffe」基本情報
・概要
・主な特徴
・基本的な使い方
・同様製品
・ライセンス情報
・ダウンロード

ざっくりわかる「Caffe」
第1回 Caffe補足情報
  ・畳み込みニューラルネットワーク「CNN」
  ・NVIDIA「CUDA」とは
  ・インターフェース
第2回 Caffeのインストール
  ・Caffeのインストールについて
  ・Caffeインストール---Linux編
  ・Caffeインストール---Windows編
  ・Caffeインストール---Mac編
  ・Caffeインストール---クラウド環境(AWS)編
第3回 Caffeのチュートリアル
  ・MNIST(手書き数字データ)編---MNIST用トレーニング環境で自動認識
  ・MNIST(手書き数字データ)編---学習後にJPEG画像認識
  ・MNIST(手書き数字データ)編---学習中に精度が上がっていく様子をプロット
  ・CIFAR10(物体認識)編---サンプル実行
  ・MINST+CIFAR10---処理フロー
  ・「Imagenet」学習パラメータ編
第4回 CaffeのPythonプログラミング
  ・画像分類---汎用型
  ・画像分類---「ご注文はうさぎですか?」キャラクター特化型
  ・画像分類---モデル「本田翼さん」特化型
  ・Caffeデータストア「LevelDB」操作ツール
  ・CaffeコマンドGUI操作ツール
第5回 Caffeのファインチューニング
  ・「ファインチューニング」とは
  ・学習済モデル配布フレームワーク「Caffe Model Zoo」
  ・【参考】ファインチューニング概要
  ・【参考】「Caffe Model Zoo」から学習モデルを取得してファインチューニング
  ・【参考】「マルハナバチ」分類のファインチューニング

TOPに戻る

「Caffe」基本情報

概要

基本説明

C++で実装されています。C++/Python/MATLABで使用できます。

「高速動作」「GPU対応」「洗練されたアーキテクチャ/ソースコード」「開発コミュニティが活発」などの特徴があります。

経緯

Yangqing Jia氏が、カリフォルニア大学バークレー校博士課程在籍中に開発がスタートしました。

その後、カリフォルニア大学バークレー校の「コンピュータビジョンおよび機械学習に関する研究センター(Berkeley Vision and Learning Center)」が中心となって開発しています。

ヤフージャパンは、2014年6月から同センターのスポンサーとなり、Caffe開発の支援を行っています。

主な特徴

Caffeがサポートしている主な機能

・CNNを利用した画像の多クラス分類
・CNNによる特徴ベクトルの抽出
・CNNの転移学習
・Stacked Auto Encoder

GPU対応

CaffeはGPUを利用できます。GPUを利用して高速で動作させるためにNVIDIAのCUDA(Compute Unified Device Architecture)が必要です。

CPUのみでの使用も可能です。

高速

Python用数値計算ライブラリ「Theano」と「Caffe」のスピード比較において、「Theano」で約56分かかる処理を「Caffe」では約4分で完了できたというテスト結果も報告されています。

高精度画像識別

画像識別に関する論文において、高精度を出した論文にCaffeを利用した研究が数多く報告されています。

学習済モデル配布フレームワーク「Caffe Model Zoo」

Caffeには、学習済モデル配布フレームワーク「Caffe Model Zoo」があります。ネットワーク定義を1から作成しなくても、リファレンスモデルを使用して処理を実行できます。

大規模画像認識コンテスト「ILSVRC 2012」でトップとなった、畳込みニューラルネットワーク画像分類モデルをすぐに利用できます。

環境構築

Caffeは関連するライブラリ群が多いため、環境構築にハードルがあります。

CUDA利用有効化GPUインスタンス上にDockerを用意する方法ならば、簡単にCaffeを使用できます。

ドキュメントが充実

Caffeを紹介する記事は多く、公式ドキュメントも充実しています。

基本的な使い方

1.ネットワーク定義

設定ファイル(lenet_train_test.prototxt)に、処理順番(Convolution層/Pooling層など)とパラメータ設定を定義します。JSONのような形式で、レイヤーごとに分けて記載します。

2.solver定義

重みの学習方法を設定するための「solver定義ファイル」を作成します。

3.コマンドで学習を開始

コマンドで学習を開始します。

同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「TensorFlow」「Chainer」「CNTK」「DeepDream」など。

ライセンス情報

Caffeのライセンスは「BSD 2-Clause license」です。このライセンスに従うことを条件として、ソースコードの改変と公開が許可されています。

ダウンロード

ダウンロードページ

TOPに戻る

ざっくりわかる「Caffe」

第1回 Caffe補足情報

ディープラーニングライブラリ「Caffe」について補足情報を紹介します。

畳み込みニューラルネットワーク「CNN」

Caffeは、畳み込みニューラルネットワーク「CNN(Convolution Neural Network)」を利用しています。

CNNとは、ディープラーニング技術の1つです。全結合していない順伝播型ニューラルネットワークで、畳み込み層を通常の活性化関数でつないでいく手法です。

全結合しているニューラルネットワークに比べて高速に学習を行えるメリットがあります。

NVIDIA「CUDA」とは

CUDA(Compute Unified Device Architecture:クーダ)とは、NVIDIAが提供する並列コンピューティングアーキテクチャです。

GPU向けC言語統合開発環境で、コンパイラ/ライブラリなどで構成されています。

CUDAは、NVIDIA製ハードウェア(GPU)性能を最大限引き出せるように設計されており、計算処理能力を劇的に向上できます。

インターフェース

Caffeは、コア言語として「C++」で実装されています。

インターフェースとして「C++」「Python」「MATLAB」を利用可能です。

「MATLAB」とは、数値解析ソフトウェア(プログラミング言語)です。「行列計算機能」「関数とデータの可視化機能」「アルゴリズム開発機能」「グラフィカルインターフェース」「他言語(C/C++/Java/Python)とのインターフェース」などの機能を有しています。

TOPに戻る

第2回 Caffeのインストール

ディープラーニングライブラリ「Caffe」を各環境へインストールする方法を紹介します。

Caffeのインストールについて

Caffeの手動インストールは、Caffe本体のコンパイル/ビルドの他に、多くの各種ライブラリ/各種ツールなどのインストールなども含み、なかなか大変な作業です。

その一方で、Dockerを使用したインストールは比較的簡単に行えます。特に問題がないようならば、Dockerでのインストールが有効です。

Caffeインストール---Linux編

Ubuntu環境へのCaffeインストール例です。

【導入環境】

・OS=Ubuntu 16.04 LTS (64bit)
・GPU=NVIDIA GeForce GTX1070
・CUDA=CUDA Toolkit 8.0 RC

【解説テーマ】

1. 必要なソフトウェアのダウンロード
2. Anacondaのインストール
3. CUDA Toolkitのインストール
3.1. GCCのインストール・シンボリックリンクの作成
3.2. CUDA Toolkitのインストール
3.3. サンプルの実行
4. OpenCVのインストール
5. cuDNNのインストール
6. Caffeのインストール

【ページリンク】

→電気と電子とエンジニアリング『CaffeをUbuntu16.04LTS + GTX1070の環境でインストール』

Caffeインストール---Windows編

Microsoftが開発を行っているCaffe(Windows版)をインストールする方法を紹介しています。

【導入環境】

・OS=Windows

【解説テーマ】

・ソースコード
・設定ファイルの準備
・CUDA
・NVIDIA CUDA Deep Neural Network library (cuDNN)
・Python
・MATLAB
・ビルド

【ページリンク】

→A certain engineer "COMPLEX"『ディープラーニング Caffe for Windows その1 環境構築』

Caffeインストール---Mac編

MacへCaffeをインストールする方法を紹介しています。

【導入環境】

・OS=OS X Yosemite (10.10.5)
・GPU=NVIDIA GeForce GTX 675MX 1024MB
・CUDA=CUDA 7.5

【解説テーマ】

・下ごしらえ
・コンパイルとインストール
・環境変数を設定し、起動することを確認

【ページリンク】

→まんぼう日記『Mac に Caffe をインストール』

Caffeインストール---クラウド環境(AWS)編

AWSのP2インスタンスに、Dockerを使用してCaffeをインストールする方法です。

【導入環境】

・クラウド=AWS(Amazon EC2 P2インスタンス)
・OS=Ubuntu 14.04
・GPU=K80

【解説テーマ】

・準備
・nvidia-driverのインストール
・nvidia-dockerのインストール
・Dockerをインストール
・nvidia-dockerをインストール
・テスト
・caffeのDockerイメージを作成
・テスト

【ページリンク】

→Qiita『AWS EC2 P2インスタンスでnvidia-docker+caffeを使う』

TOPに戻る

第3回 Caffeのチュートリアル

ディープラーニングライブラリ「Caffe」のチュートリアルについて紹介します。Caffeに付随しているサンプルデータや学習済みデータを取り込んで、基本的な画像認識方法について確認できます。

MNIST(手書き数字データ)編---MNIST用トレーニング環境で自動認識

【概要】

MNIST用トレーニング環境で、トレーニングを行なう手順について解説しています。

【解説テーマ】

(1) MNISTデータをダウンロード
(2) トレーニング用データを作成
(3) トレーニング開始
(4) トレーニング実行中
(5) トレーニング終了

【ページリンク】

→MNISTやってみる!Neural Networksによる自動認識に挑戦!『(20) CaffeでMNIST自動認識(その1)』

MNIST(手書き数字データ)編---学習後にJPEG画像認識

【概要】

公式情報をベースにしてMNISTの学習をさせた後、学習したネットワークを使って、MNISTのJPEG画像を認識させる手順を解説しています。

【解説テーマ】

・MNISTのデータベース(手書き文字)を認識させる
・MNISTの学習をさせる
・学習されたMNISTのネットワークで実際にどう認識されるか確かめてみる
・データベースをJPEGにして認識対象をわかりやすくする
・画像をネットワークに与えて、結果を見てみる

【ページリンク】

→Qiita『素人がCaffeを使ってDeepLearningしてみた(実践編)』

MNIST(手書き数字データ)編---学習中に精度が上がっていく様子をプロット

【概要】

MNIST学習時に出力されるログファイルを使用して、精度をプロットする手順について解説しています。

【解説テーマ】

・MNISTの学習
・精度のプロット

【ページリンク】

→下丸子のコネクショニスト『CaffeでMNISTを学習した経過をプロットしてみた』

CIFAR10(物体認識)編---サンプル実行

【概要】

CIFAR10(物体認識)サンプルを使用して、学習と分類テストを行う手順を解説しています。

【解説テーマ】

・Runtest
・サンプルをダウンロード
・学習
・分類テスト

【ページリンク】

→櫻朔『CaffeでDeep Learning (2)』

MINST+CIFAR10---処理フロー

【概要】

MNISTとCIFAR10を実行させています。それぞれの処理フロー図で、処理の流れを視覚的に確認できます。

【解説テーマ】

・MNISTデータを試してみる。
・CIFAR10

【ページリンク】

→東邦大学『ノート/Caffeのデモプログラムを試してみる (2014-12-24)』

「Imagenet」学習パラメータ編

【概要】

GitHub Gistに投稿されているチュートリアルです。

ネット上に公開されている「Imagenet」の学習パラメータを使用して、Python経由で特徴ベクトルを取り出す方法について説明しています。

「特徴ベクトル抽出方法」や「パラメータ学習方法」について理解を深めることができます。

【解説テーマ】

・Anacondaのインストール
・Imagenetの学習パラメータのダウンロード
・Python上での特徴ベクトル取り出し
・predict()とoversampleオプションの取り扱いについて
・平均画像の取り扱いについて
・サンプルコード
・データセットの作成
・平均画像の作成
・パラメータの調整
・CNNの学習
・Transfer learning

【ページリンク】

→GitHub Gist『Caffe tutorial』

TOPに戻る

第4回 CaffeのPythonプログラミング

ディープラーニングライブラリ「Caffe」について、Pythonでプログラミングを行っている例を紹介します。汎用画像分類、「ごちうさ」キャラ分類、Caffe用Pythonツールなど参考にできます。

画像分類---汎用型

【概要】

YahooJapanのTechBlog解説です。

Caffeを使った「デフォルトモデルでの画像分類」「特徴抽出」「ファイン・チューニング」の3つの方法を紹介しています。

【解説テーマ】

・Caffeの概要
・インストール
・リファレンスモデルでの分類
・Caffeを特徴抽出器として使った分類
・特徴抽出
・線形SVMの学習
・分類結果
・ファイン・チューニング
・データベースとmeanファイルの作成
・モデル定義ファイルの作成
・ソルバー設定ファイルの作成
・ファイン・チューニングの実行と結果

【ページリンク】

→Yahoo JAPANデベロッパーネットワーク『Caffeで手軽に画像分類』

画像分類---「ご注文はうさぎですか?」キャラクター特化型

【概要】

アニメ作品「ご注文はうさぎですか?」のキャラクターをCaffeを使って分類する試みが紹介されています。

入力された動画に対して、キャラクターごとに枠線を付加した動画を出力します。

【解説テーマ】

・Caffeなど必要なソフトのインストール
・データの準備
・LevelDBデータセットの準備
・学習器の設定
・平均画像の生成
・学習の実行
・動画の作成
・結果

【ページリンク】

→kivantium活動日記『ご注文はDeep Learningですか?』

画像分類---モデル「本田翼さん」特化型

【概要】

モデルの「本田翼さん」に特化した画像分類の仕組みを解説しています。

学習機として、上記の「ご注文はDeep Learningですか?」を活用しています。

【解説テーマ】

・ディープラーニングを行う環境を整える
・dockerを使って環境構築する
・学習に必要な画像を集める
・コンテナの外にあるファイルを参照できるようにする
・画像を学習させて分類器を作る
・実際に試験用の画像を分類してみる
・分類例

【ページリンク】

→moxt『ディープラーニングで本田翼を見分けたい。初歩編』

Caffeデータストア「LevelDB」操作ツール

【概要】

「LevelDB」とは、ファイル保存型のキーバリューストアです。「key→value」のリンクで高速読み書きを行えるGoogle製ライブラリです。

Caffeはデータストアとして「LevelDB」を使用しています。

「LevelDB」に対して、Pythonからデータの読み出し/書き込みを行えるツールについて紹介しています。

【解説テーマ】

・普通にツールを使ったとき
・pythonでの読み出し
・pythonでの書き出し

【ページリンク】

→ドウジンテイスウ.log『caffeのデータ操作』

CaffeコマンドGUI操作ツール

【概要】

Caffeインストール時に作成されるツールをコマンドとして実行するGUIツールの紹介です。GitHubでPythonコードが公開されています。

基本的な機能しかありませんが、カスタマイズ用ベースツールとしても利用できます。

【ページリンク】

→すするすするる『Caffeを(比較的)簡単に扱うGUIツール,作りました』

TOPに戻る

第5回 Caffeのファインチューニング

ディープラーニングライブラリ「Caffe」の画像認識精度を向上させるための「ファインチューニング」について紹介します。

「ファインチューニング」とは

【概要】

「ファインチューニング」とは、初期段階で学習済モデルを使用して学習することにより認識精度を向上させる手法です。

【基本説明】

ニューラルネットワークの各ニューロンの閾値は、最初は初期値で設定されています。学習していくに従って、各ニューロンの閾値は逆伝播によって調整されていきます。この調整により認識精度が高まっていきます。

「ファインチューニング」とは、この初期値を学習済モデルの値を使い更新することにより、初期段階で認識精度を高める方法です。

【活用例】

・一般物体認識データセット「ImageNet」の学習済モデルを、物体検出などの認識処理に活用
など

【メリット】

・1から学習させるよりも効率的
・初期段階で認識精度を大幅に向上できる
・大量の学習データを揃えなくても、ある程度の認識精度まで向上できる

【注意点】

・学習済みモデルは、認識したい対象と一致するモデルを調達する必要がある

学習済モデル配布フレームワーク「Caffe Model Zoo」

【概要】

「Caffe Model Zoo」から各種学習済モデルを取得できます。

【公式学習済モデル】

以下のモデルが用意されています。
・標準的サンプル「BVLC Reference CaffeNet」
・高性能ニューラルネット「BVLC AlexNet」
・R-CNN(物体検出アルゴリズム)サンプル「BVLC Reference R-CNN ILSVRC-2013」
・Googleチームが作成したニューラルネット「BVLC GoogLeNet」

【コミュニティモデル】

「コミュニティモデル」は、Caffeユーザーが作成したモデルです。多くのモデルが登録されています。

【参考】ファインチューニング概要

【概要】

ファインチューニングについて、コンパクトに解説されています。

【解説テーマ】

・ファインチューニングとは
・具体的な話
・Caffeの学習済みモデル
・公式の学習済みモデル
・非公式の学習済みモデル
・実行コマンド
・注意事項

【ページリンク】

→Qiita『WindowsのCaffeでファインチューニングするお話』

【参考】「Caffe Model Zoo」から学習モデルを取得してファインチューニング

【概要】

「Model Zoo」から「VGG16モデル」をダウンロードしてファインチューニングを行なう方法を解説しています。

【解説テーマ】

1.ネットワーク定義ファイルのダウンロード
2.スクリプトの実行

【ページリンク】

→いつもの作業の備忘録『【Caffe】モデルをダウンロードして利用する』

【参考】「マルハナバチ」分類のファインチューニング

【概要】

GPUありのCaffe環境で、「マルハナバチ」の分類を行なうモデルに対するファインチューニングについて解説しています。

丁寧に読みやすくまとめられているため参考になります。

【解説テーマ】

1. セットアップとデータの準備
2. ネットワークを定義する
3. マルハナバチ識別器の学習
4. End-to-endのファインチューニング

【ページリンク】

→Deep Learning実習『4. 学習済みのネットワークをマルハナバチ分類にファインチューニング』

TOPに戻る

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

Caffe最新TOPICS

【OSS】Facebook、ディープラーニングライブラリ「Caffe2」をオープンソース化---モデル変換ユーティリティスクリプトで「Caffe」から「Caffe2」へ(2017年04月21日 11:03)

Facebookは、4月18日(米国時間)、 ディープラーニングライブラリ「Caffe2」をオープンソース化した。 【Caffeとは】 画像認識に特化したオープンソースディープラーニングライブラリ https://www.ossnews.jp/oss_info/Caffe 【ポイント】 ・Facebookが最初のCaffeのエクステンションをリリース ・「Caffe」から「C...

Caffe最新CLOSEUPコラム

イベント情報

無料資料プレゼント

AI技術の方向性と企業の活用シナリオ

講演資料を見るには、 プライバシーポリシーに同意して、送付先メールアドレスをご入力しご請求ください。

またご入力いただきました情報は、当該資料の作成・提供企業とも共有させていただき、当社及び各社のサービス、製品、セミナー、イベントなどのご案内に使用させていただきます。

本資料を見るには次の画面でアンケートに回答していただく必要があります。



  • オープソース書籍(サイド)
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter