最近のブラシや他のメディアソフトウェア今日のニュースの見出し、多くの場合、ビデオでAIの顔移植のいくつかを見つけるので、私が思うに、それは顔認識ソフトウェアプログラムすることができ、独自のを達成することが可能です。私の具体的なプロセスは、クロール公共絵に直面している画像の特定の機能を分析して、機械学習OpenCVのビジョンライブラリを使用してソフトウェアを構築するためにPythonのWebクローラー1万PubFigと最初にすることです。:Githubのは非常に詳細な記事があり、あなたはを参照することができhttps://github.com/Hironsan/BossSensor。
PubFigの顔データをクロールする方法を説明し、その後、顔の一部の公の顔データを使用するための基本的なOpenCVのライブラリの操作だけでなく、シンプルを表示するには、フィルムの漫画の顔の写真の最初の言葉の一部を使用し、あなたを伝えることにより、いくつかの旧ブログ認識技術を学ぶために。
1.OpenCVプロフィール
OpenCVのがPythonインタフェースを提供し、画像処理およびコンピュータビジョンの多くの一般的なアルゴリズムを実装し、オープンソースのクロスプラットフォームのコンピュータビジョンライブラリです。
パッケージの2.インストール
ここでのOpenCVとnumpyの、パンダやその他のデータ解析パッケージあなたはあまりにも多くの問題を感じた場合、アナコンダ科学パックを直接インストールすることができますすることができます(データ分析、マイニング、機械学習ライブラリのコレクション)、インストールと異なるコンパイラ環境プロセスの設定をインストールBenpianすることはできません彼は説明しました。
ダウンロード(公式サイトが遅すぎる、次のアドレスを推奨):https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/opencv-python/。より多くのpython3.5はopencv_python-4.0バージョンをダウンロードする必要があるなど、それがここで使用されているopencv_python-4.0.0.21-CP37-cp37m- win_amd64.whl このファイル。
次のコードでインストールした後、我々は、第1の出力画像を:
インポートCV2の IMG = cv2.imread(" 1.JPG "、1 ) cv2.imshow(" 1 " 、IMG) cv2.waitKey()
結果は以下の通りであります:
私たちは、環境が正常にインストールされていることがわかりました。
3.予備的な認識
この記事が最初に公開されたので、ので、ここで簡単にあなたのマシンビジョンのOpenCVのいくつかの基本的な方法を示し、次のように紹介されます。
漫画の描画と、ここで(1)輸入の顔写真、
そして、上記のようなコードは、あなたが画像を変更することができます。
インポートCV2の IMG = cv2.imread(" firstPer.jpg "、1 ) cv2.imshow(" 1 " 、IMG) cv2.waitKey() cv2.destroyAllWindows()
ここでは、機能コードにカプセル化:
DEF viewImage(画像、name_of_window): '' ' 画像:画像オブジェクト name_of_window:画像ウィンドウ名 ' '' cv2.namedWindow(name_of_window、cv2.WINDOW_NORMAL) cv2.imshow(name_of_window、画像) cv2.waitKey() cv2.destroyAllWindows( )
(2)画像処理の基本的な方法を
トリミング:垂直下方、出発点として左上、画像のサイズ(H、W)を切断し、開始点として(Y、X)となる画像は、[X + W:Y + H、X、Yは=トリミングy軸方向、横方向をx軸。
リサイズ:DIM =(幅、高さ)
リサイズ= cv2.resize(IMG、DIM、補間= cv2.INTER_AREA)
画像のサイズを変更します。
両方の画像の処理のために、それぞれ次のコードで:
= cv2.imread IMG(" firstPer.jpg "。、1 ) #は、画像サイズをトリミング、距離画像100は、トリミング トリミングIMG = [0:100,0:100 ] viewImage(トリミング、" firstPer ")
IMG = cv2.imread(" firstPer.jpg "、1 ) scale_percent = 30 #调整30%的大小 幅= INT(img.shape [1] * scale_percent / 100 ) 高さ = INT(img.shape [0] * scale_percent / 100 ) DIM = (幅、高さ) リサイズ = cv2.resize(IMG、DIM、補間= cv2.INTER_AREA) viewImage(リサイズ、" firstPer ")
操作において使用される多くの方法があり、画像処理が行われない明るさ、等ぼやけ/滑らかな描画フレーム、描画線を調整するために回転され、従って、それらは説明した第1のtellではないであろう。ハハ。
(3)画像の階調処理
顔認識を行う際に、画像を操作するための多くの場所は、をご紹介するために、ここで、灰色のようになります。
閾値関数はgray_imageがあり、全ての画像は、カラー画像フレームの内容はスキップ、255輝度、又は0を増加させるために、最大127よりも暗くなります。
階調処理コード:
gray_image = cv2.cvtColor(IMG、cv2.COLOR_BGR2GRAY) viewImage(gray_image、" グレー画像")
結果:
色輝度閾値処理コード:
一threshold_image = cv2.threshold(IMG、127、255 、0) viewImage(threshold_image、" firstPer ")
結果:
背中を制御する三つの主要なパラメータがありますが、私たちは自分自身で学ぶことができます興味を持っています。
(4)顔認識早期話します
私たちは顔認識する必要がある場合は、あなたには、いくつかのOpenCVのコンフィギュレーションファイルをダウンロードする必要があり、アドレスは次のとおりです。https://github.com/opencv/opencv/tree/master/data/haarcascades、ここで我々が使用haarcascade_frontalface_default.xmlファイルです。次のコードでの検出:
= cv2.CascadeClassifierのface_cascade(' haarcascade_frontalface_default.xml ' ) IMG = cv2.imread(" firstPer.jpg " ) グレー = cv2.cvtColor(IMG、cv2.COLOR_BGR2GRAY)は 顔 = face_cascade.detectMultiScale( グレイ、 #1 階調 scaleFactorを= 1.1、 #スケーリング minNeighbors = 2、 #検出される現在のオブジェクトの周囲のオブジェクトの数に先立って、人間の顔に同定 に、minSize =(50、50) #のウィンドウサイズ ) firstPer =フォーマット(LEN(面))+ " 検出された顔!" を印刷(firstPer)位面の周りに四角形を描画 するための(X、Y、W、H)で顔: cv2.rectangle(IMG、(X、Y)、(X + W、Y + H)、(255、255、 0)、2 ) viewImage(IMG、firstPer)
detectMultiScale一般的な機能は、検出されたオブジェクトの関数です。私たちは、顔検出のためにそれを使用する場合は、画像から人物の顔を検出します。
しかし、我々は我々が理由である、美しいサクラの顔を検出しなかったことを発見しましたか?私たちが最初に他の画像を検出し、心配しないでください。
再び美しい写真:
その後、我々は、注意するには、2つの場所があるだろうと、最初の漫画の絵シンプルなラインで識別するために、認識プログラムを見つけ、時々認識しません。識別および画像の鮮明させる能力も関係です。
最初の質問については、次のチュートリアルでは、私は、マシンビジョントレーニングのための公共PubFig顔認識データセットとしてコロンビア大学のライブラリを使用します。私たちは、してください以下のコメントで、あなたは貴重な提案を持っている場合は、私のブログに注力し続けることを歓迎し、機械学習トレーニングと人間の顔を認識できるようにするだけでなく、ソフトウェアの発現を同定する方法を説明します。