ページの先頭です

お手軽ディープラーニング

Kerasを使って画像分類を試してみる(1)―環境構築前に考えること―

2020年2月13日 情報通信研究部 橋本 大樹

このコラムでは、全4回の連載で、ディープラーニングフレームワークKerasの開発環境を構築し、簡単なサンプルプログラムを動かしてディープラーニングを体験してみることを目標とします。このコラムを参考に、ディープラーニングの世界への第一歩を踏み出しましょう。

第1回 環境構築前に考えること
第2回 GPUドライバとライブラリの対応関係確認
第3回 Keras開発環境の構築
第4回 サンプルプログラムの実行

概要

本記事では、「環境構築前に考えること」と題し、ディープラーニングの開発環境の構築前に検討すべき項目について解説します。

ディープラーニング手法を開発する際には、開発の目的や条件に合わせて開発環境を選択することが必要になります。今回のコラムは、筆者らがディープラーニング初学者向けの環境を選択する際に検討した内容をそのまま記述したもので、これから開発者を目指している方の環境選定の一助になれば、との思いから執筆しました。

現時点で理解が難しい部分は読み飛ばして構いませんので、全体像を把握してもらえればと思います。のちに開発環境の再検討が必要になった際には、改めて読み返していただければうれしく思います。

環境構築前に考えること

ディープラーニングの開発環境を構築する前に、以下のような項目を検討する必要があります。

  • 使用するPCのOS
  • グラフィックボード(GPU)
  • 開発言語と管理ツール
  • ディープラーニングフレームワーク(ライブラリ)

各項目について、筆者らの検討内容とディープラーニングを気軽に試したい方向けの推奨環境を順番に解説します。

使用するPCのOS

ディープラーニングの開発を行うOSとして、一般的にWindowsあるいはLinux(Ubuntu)が使用されます。

最近のディープラーニング向けライブラリの多くはWindowsとLinux (Ubuntu)の双方に対応しているため、普段Windows OSを利用している方は、まずは使い慣れたWindows上で開発環境を構築することを推奨します。

本コラムでは、Windows 10に環境構築を行う前提で説明いたしますが、Windows 10以外のWindows OSやUbuntu OSに環境構築を行う場合においても、ほとんど同様の手順です。

グラフィックボード(GPU)

ディープラーニングでは、大量の計算が必要となる場合が多く、GPUを使って処理を高速化することが一般的です。ディープラーニングの真価を体験するためにも、GPUが搭載されたPCを使用することを推奨します。

また、ディープラーニングのためのライブラリは、NVIDIA製のGPUにのみ対応していることが多く、本コラムでもNVIDIA製のGPUの使用を強く推奨します。

開発言語と管理ツール

現状、ディープラーニングの開発言語として、データ解析や数値処理、機械学習のためのライブラリなど、ディープラーニング以外の機能も充実しているPythonが利用されることが多く、本記事においてもPythonを使用して開発を行います。

なお、Pythonのバージョンには、2系と3系の2種類がありますが、2020年1月1日をもって、Python 2系のサポートが打ち切られました *1。また主要ライブラリの多くも2系のサポート打ち切りを宣言しているため、Python 3系の環境を構築することを推奨します。

またマイナーバージョン(Python 3.〇の〇部分)は、使用したいライブラリが対応しているバージョンを選択する必要があります。本コラムでは、今回使用するライブラリであるtensorflow-gpu 2.0.0に対応しているPython 3.7を使用します。詳細は次回のコラムで説明します。

昨今のディープラーニングへの関心の高さを反映して、日々新しい手法が提案されていることもあり、開発者向けのライブラリも頻繁にアップデートがされています。このため、プログラムごとに異なるバージョンのライブラリを使い分けることも多く、その管理をおこなうための「パッケージ管理ツール」と「環境分離ツール」を使用することを推奨します。

本コラムでは、このツールとしてデータサイエンス、機械学習などの開発向けの多くの機能がまとめられたAnacondaを使用します。Anacondaは、Pythonのディストリビューション(=設定済みのソフトウェア等をまとめたもの)であり、「パッケージ管理」および「環境分離」のツールであるcondaが含まれます。

Anacondaのパッケージ管理機能を使用してパッケージのインストールを行うと、ライブラリの依存関係を確認した上で必要なライブラリ等が自動でインストールされるため、環境構築の手間を格段に減らすことができます。

ディープラーニングフレームワーク(ライブラリ)

Pythonには、KerasやTensorFlow、Chainer、PyTorch等、いくつかのディープラーニングフレームワーク(ディープラーニングの開発のためのライブラリ)が存在し、選択する必要があります。また既存のソースコードを流用する場合などでは、フレームワークのバージョンに関しても注意する必要があります。

本コラムでは、ディープラーニングフレームワークの中でも、直感的かつ容易に開発が可能な、Keras(執筆時の2020年1月の最新安定版であるkeras 2.3.1)を推奨します。また、Kerasのバックエンド(=Keras内でテンソル積や畳み込み等の基本操作を扱う際に使用するライブラリ)として、TensorFlow (tensorflow-gpu 2.0.0)を使用します。

(補足)
Kerasは、大きく分けて以下の2種類が存在します。

  • Keras: バックエンド(=Keras内でテンソル積や畳み込み等の基本操作を扱う際に使用するライブラリ)として、TensorFlow、Theano、CNTKが使用可能な、フレームワーク。言い換えると、TensorFlow等のバックエンドライブラリの提供する機能を、ディープラーニングの開発を目的としてまとめたものです。
  • tf.keras: 前述のKerasのTensorFlowバックエンド版の機能を、TensorFlow側に統合したもの。TensorFlowライブラリ内のサブモジュールです。

2019年9月、Keras 2.3.0のリリースと同時にKerasの開発チームから、以降の開発はtf.kerasに集中すること、またユーザーに対してtf.kerasへの移行検討を推奨する旨が発表されました*2

基本的に、Kerasとtf.kerasのインターフェースは共通部分が多く、大半のソースコードは少ない書き換えで移植可能であるため、これから本格的にKerasによるディープラーニングの開発を学びたいと思っている方は、Kerasではなく、tf.kerasを利用することを推奨します。一方、執筆時点(2020年1月現在)でのインターネット上の情報の大半はKerasに対するものが多く、既存のソースコードをそのまま使用してディープラーニングを試みる場合も考え、本コラムでは、Kerasを使用します。

おわりに

今回は、ディープラーニング初学者向けの環境選定における、選択肢や注意点等についてまとめました。もちろん、目的や条件によっては、筆者らが推奨する環境が必ずしも最適とは言えませんが、このコラムを読まれた方の環境選定の参考になればうれしく思います。

残り3回の連載で、Kerasの開発環境を構築し、サンプルプログラムを動かします。このコラムを参考に、ディープラーニングを体験してみましょう。

  1. *1https://www.python.org/doc/sunset-python-2/
  2. *2https://github.com/keras-team/keras/releases/tag/2.3.0
ページの先頭へ