マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Caffe

【OSS情報アーカイブ】Caffe

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

コンテンツ

「Caffe」とは

「Caffe」基本情報

■概要

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

■基本説明

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

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

■経緯

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

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

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

■オフィシャルサイト情報

オフィシャルサイト

→Caffe(Caffe | Deep Learning Framework)

ライセンス情報

Caffeのライセンスは「BSDライセンス」です。

詳細について、こちらを参照ください。
→GitHub →BVLC/caffe →caffe/LICENSE

ダウンロード

→Caffe →Installation

■同様製品

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

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

「Caffe」の主な特徴

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

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

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

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

■GPU対応

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

CUDAとは、NVIDIAが提供する並列コンピューティングアーキテクチャです。GPU向けC言語統合開発環境で、コンパイラ/ライブラリなどで構成されています。CUDAは、NVIDIA製ハードウェア(GPU)性能を最大限引き出せるように設計されており、計算処理能力を劇的に向上できます。

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

■高速処理

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

■高精度画像識別

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

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

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

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

→Caffe →Caffe Model Zoo

■ドキュメントが充実

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

「Caffe」の主な機能

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

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

■言語インターフェース

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

インターフェースとして「C++」「Python」「MATLAB」などを利用できます。

■数値解析ソフトウェア「MATLAB」

「MATLAB」とは、数値解析ソフトウェア(プログラミング言語)です。

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

「Caffe」の基本的な使い方

■①ネットワーク定義

設定ファイル(lenet_train_test.prototxt)に、処理順番(Convolution層/Pooling層など)とパラメータ設定を定義します。

JSONのような形式で、レイヤーごとに分けて記載します。

■②solver定義

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

■③コマンドで学習を開始

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

Caffe補足情報①「Caffeのインストール」

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

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

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

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

■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を使う

Caffe補足情報②「Caffeのチュートリアル」

Caffe補足情報②「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)

■「Imagenet」学習パラメータ編

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

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

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

解説テーマ

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

ページリンク

→GitHub Gist →Caffe tutorial

Caffe補足情報③「CaffeのPythonプログラミング」

Caffe補足情報③「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ツール,作りました

Caffe補足情報④「Caffeのファインチューニング」

Caffe補足情報④「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. 学習済みのネットワークをマルハナバチ分類にファインチューニング

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

この記事のタグ一覧

おすすめの記事

経営活動に活用できる 原価管理 を実現するには? 〜製造業の現実的な課題に向き合い、現場視点から改善する原価管理手法の必達プロセスをご紹介〜

ウェビナーまとめ

2024.05.15

経営活動に活用できる 原価管理 を実現するには? 〜製造業の現実的な課題に向き合い、現場視点から改善する原価管理手法の必達プロセスをご紹介〜

2024年3月12日に三菱電機ITソリューションズ株式会社とアットストリームパートナーズ合同会社の共催で、組立加工製造業向けのセミナー「なぜか高くなる原価を管理する 不確実性の時代を乗り切るためのコスト戦略とは」が開催されました。本セミナーでは、製造業における原価管理の現状と改善手法について深く掘り下げ、経営活動への具体的な活用方法を提示しました。今回は、その講演の要点をお伝えします。

【OSS情報】WebベースAPI開発スイート「 Hoppscotch 」🌐

OSS情報

2024.07.04

【OSS情報】WebベースAPI開発スイート「 Hoppscotch 」🌐

「 Hoppscotch 」は、オープンソースのAPI開発エコシステムで、使いやすさとアクセシビリティを重視した軽量なWebベースのスイートです。無料版と有料版があり、PostmanやInsomniaの代替として利用可能です。

【OSS情報】LLMトレーニング用ライブラリ「 GPT-NeoX 」📚

OSS情報

2024.07.18

【OSS情報】LLMトレーニング用ライブラリ「 GPT-NeoX 」📚

「 GPT-NeoX 」は、GPU上で大規模言語モデル(LLM)を効率的にトレーニングするためのライブラリです。NVIDIAのモデルを基に独自の最適化が加えられ、オートレグレッシブ言語モデルのトレーニング手法を集約しています。