機械学習で使用する画像を集める方法【Python】【google-images-download】

■はじめに

機械学習で使用する膨大な量の画像を集める方法として、1枚ずつGoogleでダウンロードしてもいいですが、途方もない作業になります。

そこで、「google-images-download」を使用して画像をまとめてダウンロードする方法を記載します。

こちらから、「pip」のインストールまで終わらせている必要があります。

■手順

ターミナルで以下のコマンドを実行し、「google_images_download」をインストールします。

pip install google_images_download

インストールしたら、以下のコマンドで実行できます。

googleimagesdownload -k "犬"

上記は、「犬」というキーワードにヒットした画像をカレントディレクトリに保存しています。

このダウンロードした画像で機械学習などに利用していきましょう。

■オプション

ショートカット 説明
k 画像のキーワードを指定
sk 画像のキーワードを複数指定
l ダウンロードする画像の数(100件が上限)
※ChromeDriverを使用するとそれ以上、指定可能
f 画像の形式(jpg,png,など)
co 画像の色(red,blue,など)
ct 画像色のタイプ(full-color,transparent,black-and-white)
s 画像のサイズ(large,medium,’>400*300′,など)
a 画像の形(tall,square,など)
t ダウンロードする画像タイプ(face,photo,など)
w 画像の期間(past-24-hours,past-7-days,など)
o 指定したディレクトリに画像を展開(指定しなければカレントディレクトリ)
si 画像ファイルやURLから類似の画像をダウンロードする
cd Chrome Driverの指定
la 言語の指定(Japanese,English,など)

■100件以上まとめてダウンロードする場合

100件以上まとめてダウンロードする場合には、「Chrome Driver」が必要になります。

※「Chrome Driver」は、こちらからダウンロードしてください。

ダウンロード、解凍を行い、出てきた「chromedriver.exe」をカレントディレクトリにコピーし、以下のコマンドを実行することで、100件以上まとめてダウンロードできます(「-l」オプションで件数を指定します。)

googleimagesdownload -ri -cd "chromedriver.exe" -l 1000  -k "犬"

OpenCVを使用して画像を分類する方法【Python】

■はじめに

データセットを作成していない人は、こちらを参照してデータセットを作成しておいてください。

■手順

プロジェクトの構成は以下です。

ソースコードの全量は以下です。(「TARGET_FILE」の画像名は、チェックしたい画像名に変更してください。)

import cv2
import numpy
sam = numpy.load('./filename.npz')
labelList = sam['trainlabel']
TARGET_FILE = './Check/check.png'
IMG_SIZE = (50, 50)
target_img = cv2.imread(TARGET_FILE)
target_img = cv2.resize(target_img, IMG_SIZE)
target_hist = cv2.calcHist([target_img], [0], None, [256], [0, 256])
for i in range(0, len(labelList)):
comparing_img = sam['trainimg'][i]
comparing_img = cv2.resize(comparing_img, IMG_SIZE)
comparing_hist = cv2.calcHist([comparing_img], [0], None, [256], [0, 256])
ret = cv2.compareHist(target_hist, comparing_hist, 0)
print(sam['type'][i], sam['trainlabel'][i], ret)

ターミナルで以下のコマンドを実行することで、画像の分類が行えます。

python match.py

値が「1」に近いほど類似した画像という結果になります。(「1」の場合は全く同じということです。)

OpenCVを使用して、データセットを作成する方法【Python】

■はじめに

PythonOpenCVの環境構築は、こちらを参照してください。

■手順

プロジェクトの構成は以下です。

ソースコードの全量は以下です。(「DATADIR」のパスはProjectのディレクトリパスを記載してください)

※実行する前に、「Dog」ディレクトリに「犬の画像」、「Cat」ディレクトリに「猫の画像」を格納しておいてください。(画像サイズは問わないので、適当にGoogleから取得するなど。)

import os
import cv2
import random
import numpy
# ディレクトリパスの定義
DATADIR = "/Users/user/Desktop/Project/"
# ディレクトリ名の定義
CATEGORIES = ["Dog", "Cat"]
# 画像のサイズ定義
IMG_SIZE = 50
training_data = []
def create_training_data():
for class_num, category in enumerate(CATEGORIES):
path = os.path.join(DATADIR, category)
for image_name in os.listdir(path):
try:
img_array = cv2.imread(os.path.join(path, image_name),)  # 画像読み込み
img_resize_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))  # 画像のリサイズ
training_data.append([img_resize_array, class_num])  # 画像データ、ラベル情報を追加
except Exception as e:
pass
create_training_data()
random.shuffle(training_data)  # データをシャッフル
X_train = []  # 画像データ
y_train = []  # ラベル情報
z_train = []  # カテゴリ情報
# データセット作成
for feature, label in training_data:
X_train.append(feature)
y_train.append(label)
z_train.append(CATEGORIES[label])
# データセットの保存
numpy.savez('./filename.npz', type=z_train,trainimg=X_train, trainlabel=y_train, imgsize=(IMG_SIZE, IMG_SIZE))

上記のPythonファイルを以下のコマンドを実行することでデータセットを作成できます。

# Pythonファイルが格納されているディレクトリをルートに
cd /Users/user/Desktop/Project/
# Pythonファイルの実行
python learning.py

これで、「Project」ディレクトリ直下に「filename.npz」が生成されていると思います。

このファイルがデータセットのバイナリファイルです。

以降は、このファイルを元に、画像分類などを行います。

Python,OpenCVの環境構築(Mac)【Python】

■はじめに

ここでは、PythonOpenCVを使用して画像解析を行うための環境構築手順を記載します。

Macを前提として記載します。

■手順

ターミナルで以下のコマンドを実行し、「Xcode Command Line Tools」をインストールします。

xcode-select --install

こちらのサイトから、「/usr/bin/ruby」で始まるコマンドを丸々コピーして、ターミナルで実行し、「Homebrew」をインストールします。

ターミナルで以下のコマンドを実行し、「pyenv」をインストールします。

brew install pyenv

ターミナルで以下のコマンドを実行し、「pyenv-virtualenv」をインストールします。

brew install pyenv-virtualenv

ターミナルで以下のコマンドを実行し、インストールできるPythonのバージョンを確認します。

pyenv install -l

ターミナルで以下のコマンドを実行し、「Python」をインストールします。(ここでは、ver3.6.0をインストールしています。)

pyenv install 3.6.0
pyenv rehash

ターミナルで以下のコマンドを実行し、「pip」(プラグイン管理ツール)をインストールします。

sudo easy_install pip
sudo easy_install --upgrade six
sudo pip install --upgrade pip

ターミナルで以下のコマンドを実行し、PythonをpyenvでインストールしたPythonに切り替える。(macにはデフォルトでPythonが入っていますが、バージョンの切り替えが簡単にできるpyenvを採用しています。)

echo eval "$(pyenv init -)" >> ~/.bash_profile
source ~/.bash_profile

ターミナルで以下のコマンドを実行することで、Pythonのバージョンを確認できます。

python --version

ターミナルで以下のコマンドを実行し、「OpenCV」をインストールします。

pip install opencv-python

これで、環境構築は終了です。