nknytk / ml-study

Personal study of machine learning

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

機械学習の勉強に使ったコードを置くリポジトリ。
主にPython3で実装される。

画像分類

image_classification/下のコード

inception_v4.py

Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning (arXiv:1602.07261)で提案されたInception-v4のchainer実装。InceptionV4クラスを使用する。

学習データ量や使えるマシンリソースに応じてネットワークサイズを縮小できるよう、フィルタ数と層の数を初期化時にパラメータで指定できるように実装した。デフォルト設定で論文と同じ値になる。入力画像サイズは3x299x299で固定。

パラメータ名 意味 デフォルト値
dim_out 出力値の次元数(クラス数) 1000
base_filter_num convolutionのフィルタ数の多さ 32
ablocks 論文Figure 9のInception-Aの繰り返し数 4
bblocks 論文Figure 9のInception-Bの繰り返し数 7
cblocks 論文Figure 9のInception-Cの繰り返し数 3
dropout 全結合層手前で行うdropoutの割合。keep=1-dropout 0.2

inception_resnet_v2.py

(arXiv:1602.07261)で提案されたInception-ResNet-v2のchainer実装。InceptionResNetV2を使用する。 batch normalizationを行う位置を論文から正確に理解できず、想像で実装した部分がある。また、Inception-ResNet-v2で使用されたReduction-Bの構造について論文に明記されていないが、channel数からInception-ResNet-v1("wider"ではない方)と同じであると推察して実装した。
オリジナルの実装を再現できていない可能性が高い。

学習データ量や使えるマシンリソースに応じてネットワークサイズを縮小できるよう、フィルタ数と層の数を初期化時にパラメータで指定できるように実装した。デフォルト設定で論文と同じ値になる。入力画像サイズは3x299x299で固定。

パラメータ名 意味 デフォルト値
dim_out 出力値の次元数(クラス数) 1000
base_filter_num convolutionのフィルタ数の多さ 32
ablocks 論文Figure 15のInception-resnet-Aの繰り返し数 5
bblocks 論文Figure 15のInception-resnet-Bの繰り返し数 10
cblocks 論文Figure 15のInception-resnet-Cの繰り返し数 5
dropout 全結合層手前で行うdropoutの割合。keep=1-dropout 0.2
scaling Figure 20のscalingの定数 0.1

層を浅くする時はscalingの値を1に近づけるよう調整したほうが良さそうな気がする

上記CNNの性能検証レポート

オブジェクト検出

object_detection/ 以下のコード。YOLOを参考に、CNNのネットワークを差し替えて高速化を目指している。

現時点で成功しているのは、CNN部をMobileNetのフィルタ削減版に置き換えたモデル。
デモ動画を含めたプレゼンテーション資料

  • 顔の検出
    • Raspberry Pi 3 Model B + USB Webカメラ の環境で、6.5FPSで顔の検出を行える。詳しくはこちらを参照。
  • 乗り物・動物・人間の3物体の検出
    • Raspberry Pi 3 Model B + USB Webカメラ の環境で、4.4FPSで顔の検出を行える。

License

本リポジトリ内のコードとドキュメントについて、著作権と責任を完全に放棄します。

About

Personal study of machine learning


Languages

Language:Python 100.0%