深層学習(ディープラーニング)のための失敗しない顔の切り出し方法(OpenCV)
このnoteは有料です。
このnoteで勉強できること
OpenCVを使って画像データの水増し
OpenCVを使って顔検出
OpenCVを使って目の検出
OpenCVを使って顔の切り出し方
matplotlibを使って複数画像のグリッド表示
Pythonプログラムの処理は1行ずつ詳しく説明がついています。
どんなとき使うか?
画像データの水増し:深層学習などで、学習させるための画像データが大量に集められない時に、この手法を使って特徴を失わない範囲で、画像データを様々な処理をして増やすことで、学習データの量を増やし、確保できます。
顔の切り出し:機械学習や深層学習の中で、ある人物を識別するために、その人物の顔写真を大量に集めて、学習させるデータを構築する時に、顔の部分だけが学習の対象となりますので、顔の部分だけを切り出ししたい場合は、この手法が役に立ちます。
他のご要望があれば、Twitterで受け付けます。お気軽に声をかけてください。
このnoteの対象者
機械学習、深層学習(ディープラーニング)を勉強する初心者の方
ある程度、コンピュータサイエンス、Pythonプログラミング, matplotの基礎のある方
もちろん、上記の内容がお探しの方にはどなたでも購入は可能です。
環境
Google Colab
OpenCV
matplotlib
皆さんの環境によりますが、必要があれば、下記をインストールしてください。
!pip install opencv-python
!pip install matplotlib
ここから実施手順
人物写真をダウンロードする(筆者の顔写真 All rights reserved! 笑)
!curl -O https://raw.githubusercontent.com/kawashimaken/photos/master/kawashima01.jpg
結果
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 16073 100 16073 0 0 99216 0 --:--:-- --:--:-- --:--:-- 99832
確認
ls
kawashima01.jpg sample_data/
Haar-like特徴分類器
Haar-like特徴分類器について、こちらの(有料)noteを参考してください。
OpenCVの機械学習モジュール
OpenCVは画像を処理するだけのライブラリではなく、機械学習の機能もあります。
機械学習関連のアルゴリズなどは、cv2.mlというモジュールにまとめられています。
import cv2
dir(cv2.ml)
結果
['ANN_MLP_ANNEAL',
'ANN_MLP_BACKPROP',
'ANN_MLP_GAUSSIAN',
'ANN_MLP_IDENTITY',
'ANN_MLP_LEAKYRELU',
'ANN_MLP_NO_INPUT_SCALE',
'ANN_MLP_NO_OUTPUT_SCALE',
'ANN_MLP_RELU',
'ANN_MLP_RPROP',
'ANN_MLP_SIGMOID_SYM',
'ANN_MLP_UPDATE_WEIGHTS',
'ANN_MLP_create',
'ANN_MLP_load',
'BOOST_DISCRETE',
'BOOST_GENTLE',
'BOOST_LOGIT',
'BOOST_REAL',
'Boost_DISCRETE',
'Boost_GENTLE',
'Boost_LOGIT',
'Boost_REAL',
'Boost_create',
'Boost_load',
'COL_SAMPLE',
'DTREES_PREDICT_AUTO',
'DTREES_PREDICT_MASK',
'DTREES_PREDICT_MAX_VOTE',
'DTREES_PREDICT_SUM',
'DTrees_PREDICT_AUTO',
'DTrees_PREDICT_MASK',
'DTrees_PREDICT_MAX_VOTE',
'DTrees_PREDICT_SUM',
'DTrees_create',
'DTrees_load',
'EM_COV_MAT_DEFAULT',
'EM_COV_MAT_DIAGONAL',
'EM_COV_MAT_GENERIC',
'EM_COV_MAT_SPHERICAL',
'EM_DEFAULT_MAX_ITERS',
'EM_DEFAULT_NCLUSTERS',
'EM_START_AUTO_STEP',
'EM_START_E_STEP',
'EM_START_M_STEP',
'EM_create',
'EM_load',
'KNEAREST_BRUTE_FORCE',
'KNEAREST_KDTREE',
'KNearest_BRUTE_FORCE',
'KNearest_KDTREE',
'KNearest_create',
'LOGISTIC_REGRESSION_BATCH',
'LOGISTIC_REGRESSION_MINI_BATCH',
'LOGISTIC_REGRESSION_REG_DISABLE',
'LOGISTIC_REGRESSION_REG_L1',
'LOGISTIC_REGRESSION_REG_L2',
'LogisticRegression_BATCH',
'LogisticRegression_MINI_BATCH',
'LogisticRegression_REG_DISABLE',
'LogisticRegression_REG_L1',
'LogisticRegression_REG_L2',
'LogisticRegression_create',
'LogisticRegression_load',
'NormalBayesClassifier_create',
'NormalBayesClassifier_load',
'ParamGrid_create',
'ROW_SAMPLE',
'RTrees_create',
'RTrees_load',
'STAT_MODEL_COMPRESSED_INPUT',
'STAT_MODEL_PREPROCESSED_INPUT',
'STAT_MODEL_RAW_OUTPUT',
'STAT_MODEL_UPDATE_MODEL',
'SVMSGD_ASGD',
'SVMSGD_HARD_MARGIN',
'SVMSGD_SGD',
'SVMSGD_SOFT_MARGIN',
'SVMSGD_create',
'SVMSGD_load',
'SVM_C',
'SVM_CHI2',
'SVM_COEF',
'SVM_CUSTOM',
'SVM_C_SVC',
'SVM_DEGREE',
'SVM_EPS_SVR',
'SVM_GAMMA',
'SVM_INTER',
'SVM_LINEAR',
'SVM_NU',
'SVM_NU_SVC',
'SVM_NU_SVR',
'SVM_ONE_CLASS',
'SVM_P',
'SVM_POLY',
'SVM_RBF',
'SVM_SIGMOID',
'SVM_create',
'SVM_getDefaultGridPtr',
'SVM_load',
'StatModel_COMPRESSED_INPUT',
'StatModel_PREPROCESSED_INPUT',
'StatModel_RAW_OUTPUT',
'StatModel_UPDATE_MODEL',
'TEST_ERROR',
'TRAIN_ERROR',
'TrainData_create',
'TrainData_getSubMatrix',
'TrainData_getSubVector',
'VAR_CATEGORICAL',
'VAR_NUMERICAL',
'VAR_ORDERED',
'__doc__',
'__loader__',
'__name__',
'__package__',
'__spec__']
結構いっぱいあります。
この記事は、学習済の分類器を利用しますが、機械学習については、また別の記事でご紹介します。
必要なファイルをアップロードする
分類機の用意方法①
ご自身のPCにダウンロードしている場合は、こちらからアップロードすることができます。
ここから先は
¥ 200
Amazonギフトカード5,000円分が当たる
株式会社虹賢舎 CEO 著書:https://amzn.to/39KwlE4 技術ブログ:https://kokensha.xyz 機械学習 深層学習 Python /JS IoT Raspberry Pi ロボット TOEIC950 https://gosen.world