0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

報告用:ディープラーニングの基礎を学び、ブルドックと柴犬を区別する判定器を作りました。

Last updated at Posted at 2021-12-04

機械学習及び深層学習(ディープラーニング)の基礎について学び、実験として2種類の犬種を判別する装置をプログラム(python)で試作しました。

Peek 2021-12-04 10-51.gif

使用した画像は以下から引用しました。
柴犬のウィキペディア
https://ja.wikipedia.org/wiki/%E6%9F%B4%E7%8A%AC
(アメリカン)ブルドックのウィキペディア
https://djanimateurfinistere.com/wiki/American_Bulldog

#仕様
プログラム言語:python
開発環境:google colaboratory

##colaboratoryについて
googleが無料で提供している(グレードアップ有料)ブラウザ上のpython開発環境です。
人工知能の研究者・学生向けに作られており、AIを製作するためのライブラリが
標準実装されています。AIプログラム製作に非常に便利

必要なのは、googleアカウントだけ!

#プログラム作成手順概要

機械学習とは・・・機械が自動でデータからパターンを見つけ出し、未知のデータに対しても
対応できるようにすること。
今回の場合、柴犬とブルドックの画像をたくさん覚えさせしっかり復習を行い、まだ見たことない画像に
対しても答えを導きだせるようにプログラムしました

使用した画像データ
https://www.robots.ox.ac.uk/~vgg/data/pets/
英国のオックスフォード大学が提供している犬猫の画像データから、必要なものを使用しました。

①用意した画像データの適切な処理、分類を行う。
②①の処理を施した画像データを専用のアルゴリズムで機械に覚えさせる(パターンを自動で取得できるようにプログラムする)。
③判定(テスト)行う。(上で実験済)         
         
以上が機械学習の大まかな流れです。

#①データの前処理
https://opencv.org/

機械が画像を覚えられやすいように「opencv」というライブラリで画像の前処理を
行います。

opencv・・・Intelが開発した画像処理オープンソースライブラリ
Peek 2021-12-04 15-57.gif

opencvを使うことで、画像認識のひとつである2値化処理(物体を2種類の色に分け、それぞれの比率から画像判定をする処理)も簡単に行うことができます。

#②学習

①の画像データを用い、深層学習を行います。

使用する主なライブラリは2点、

tensorflow・・・googleが開発した機械学習専用のオープンソースライブラリ
         世界で最も普及している機械学習のライブラリ

keras・・・機械学習のためのプログラムコードを簡易的に扱うことができるオープンソースラ  
      イブラリ、専門的な数式なしでAIを実装することができます。

以下のコードは製作したプログラムのうちの一部です。

model.py
model = Sequential()

model.add(Conv2D(32, (3, 3), padding='same', 
                input_shape=X_train.shape[1:]))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(label_num))
model.add(Activation('softmax'))

sgd = optimizers.SGD(lr=LEARNING_RATE)

model.compile(loss='categorical_crossentropy',
             optimizer='SGD',
             metrics=['accuracy']) 

kerasを使用することで、このような短いコードだけで機械に対して画像を覚えさせることが
できます。

#まとめ
今回製作したプログラムは、費用かけず無料で製作しました。
判別した犬種は2種類ですが、プログラムを改良することで判定種類を増やすことができます。

使用したプログラム言語はpythonですが、flaskなどのwebサーバフレームワークを用いることで多言語で製作したツールとの連携も可能です。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?