<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 教程詳解:用卷積神經(jīng)網(wǎng)絡(luò)檢測(cè)臉部關(guān)鍵點(diǎn)(一)

          教程詳解:用卷積神經(jīng)網(wǎng)絡(luò)檢測(cè)臉部關(guān)鍵點(diǎn)(一)

          作者: 時(shí)間:2018-08-03 來源:網(wǎng)絡(luò) 收藏

          這是一個(gè)手把手教你學(xué)習(xí)深度學(xué)校的教程。一步一步,我們將要嘗試去解決Kaggle challenge中的臉部關(guān)鍵點(diǎn)的檢測(cè)問題。

          本文引用地址:http://www.ex-cimer.com/article/201808/385311.htm

          這份教程介紹了Lasagne,一個(gè)比較新的基于Python和Theano的神經(jīng)庫(kù)。我們將用Lasagne去模擬一系列的神經(jīng)結(jié)構(gòu),討論一下數(shù)據(jù)增強(qiáng)(data augmentaTIon)、流失(dropout)、結(jié)合動(dòng)量(momentum)和預(yù)先訓(xùn)練(pre-training)。這里有很多方法可以將我們的結(jié)果改善不少。

          我假設(shè)諸位已經(jīng)知道了一些關(guān)于神經(jīng)的只是。所以我們就不介紹神經(jīng)網(wǎng)絡(luò)的背景知識(shí)了。這里也提供一些好的介紹神經(jīng)網(wǎng)絡(luò)的書籍和視頻,如Neural Networks and Deep Learning online book。Alec Radford的演講Deep Learning with Python’s Theano library也是一個(gè)快速介紹的好例子。以及ConvNetJS Browser Demos

          預(yù)先準(zhǔn)備

          如果你只需要看懂的話,則不需要自己寫一個(gè)代碼然后去執(zhí)行。這里提供一些安裝的教程給那些配置好CUDA的并且想要運(yùn)行試驗(yàn)的那些人。

          我假設(shè)你們已經(jīng)安裝了CUDA toolkit, Python 2.7.x, numpy, pandas, matplotlib, 和scikit-learn。安裝剩下的依賴包,比如Lasagne和Theano都可以運(yùn)行下面的指令

          pip install -r https://raw.githubusercontent.com/dnouri/kfkd-tutorial/master/requiremen...

          注意,為了簡(jiǎn)潔起見,我沒有在命令中創(chuàng)建虛擬環(huán)境,但是你需要的。

          譯者:我是在windows10上面配置這個(gè)環(huán)境的,安裝anaconda(再用此環(huán)境安裝依賴包)、VS2013(不推薦2015)、CUDA工具即可。

          如果一切都順利的話,你將會(huì)在你的虛擬環(huán)境下的src/lasagne/examples/目錄中找到mnist.py并運(yùn)行MNIST例子。這是一個(gè)對(duì)于神經(jīng)網(wǎng)絡(luò)的“Hello world”程序。數(shù)據(jù)中有十個(gè)分類,分別是0~9的數(shù)字,輸入時(shí)28TImes;28的手寫數(shù)字圖片。

          cd src/lasagne/examples/

          python mnist.py

          此命令將在三十秒左右后開始打印輸出。 這需要一段時(shí)間的原因是,Lasagne使用Theano做重型起重; Theano反過來是一個(gè)“優(yōu)化元編程代碼生成面向數(shù)組的優(yōu)化Python數(shù)學(xué)編譯器”,它將生成需要在訓(xùn)練發(fā)生前編譯的C代碼。 幸運(yùn)的是,我們組需要在第一次運(yùn)行時(shí)支付這個(gè)開銷的價(jià)格。

          譯者:如果沒有配置,用的是的話,應(yīng)該是不用這么久的編譯時(shí)間,但是執(zhí)行時(shí)間有一些長(zhǎng)。如果用GPU,在第一次跑一些程序的時(shí)候,會(huì)有提示正在編譯的內(nèi)容。

          當(dāng)訓(xùn)練開始的時(shí)候,你會(huì)看到

          Epoch 1 of 500

          training loss: 1.352731

          validaTIon loss: 0.466565

          validaTIon accuracy: 87.70 %

          Epoch 2 of 500

          training loss: 0.591704

          validation loss: 0.326680

          validation accuracy: 90.64 %

          Epoch 3 of 500

          training loss: 0.464022

          validation loss: 0.275699

          validation accuracy: 91.98 %

          如果你讓訓(xùn)練運(yùn)行足夠長(zhǎng),你會(huì)注意到,在大約75代之后,它將達(dá)到大約98%的測(cè)試精度。

          如果你用的是GPU,你想要讓Theano去使用它,你要在用戶的主文件夾下面創(chuàng)建一個(gè).theanorc文件。你需要根據(jù)自己安裝環(huán)境以及自己操作系統(tǒng)的配置使用不同的配置信息:

          [global]

          floatX = float32

          device = gpu0

          [lib]

          cnmem = 1

          譯者:這是我的配置文件。

          [cuba]

          root = C:Program FilesNVIDIA GPU Computing ToolkitCUDAv8.0

          [global]

          openmp = False

          device = gpu

          floatX = float32

          allow_input_downcast = True

          [nvcc]

          fastmath = True

          flags = -IC:Anaconda2libs

          compiler_bindir = C:Program Files (x86)Microsoft Visual Studio 12.0VCbin

          base_compiledir = path_to_a_directory_without_such_characters

          [blas]

          ldflags =

          [gcc]

          cxxflags = -IC:Anaconda2MinGW

          數(shù)據(jù)

          面部關(guān)鍵點(diǎn)檢測(cè)的訓(xùn)練數(shù)據(jù)集包括7049(96x96)個(gè)灰度圖像。 對(duì)于每個(gè)圖像,我們應(yīng)該學(xué)習(xí)找到15個(gè)關(guān)鍵點(diǎn)的正確位置(x和y坐標(biāo)),例如

          left_eye_center

          right_eye_outer_corner

          mouth_center_bottom_lip

          一個(gè)臉部標(biāo)記出三個(gè)關(guān)鍵點(diǎn)的例子。

          數(shù)據(jù)集的一個(gè)有趣的變化是,對(duì)于一些關(guān)鍵點(diǎn),我們只有大約2,000個(gè)標(biāo)簽,而其他關(guān)鍵點(diǎn)有7,000多個(gè)標(biāo)簽可用于訓(xùn)練。

          讓我們編寫一些Python代碼,從所提供的CSV文件加載數(shù)據(jù)。 我們將編寫一個(gè)可以加載訓(xùn)練和測(cè)試數(shù)據(jù)的函數(shù)。 這兩個(gè)數(shù)據(jù)集的區(qū)別在于測(cè)試數(shù)據(jù)不包含目標(biāo)值; 這是預(yù)測(cè)這些問題的目標(biāo)。 這里是我們的load()函數(shù):

          # file kfkd.py

          import os

          import numpy as np

          from pandas.io.parsers import read_csv

          from sklearn.utils import shuffle

          FTRAIN = '~/data/kaggle-facial-keypoint-detection/training.csv'

          FTEST = '~/data/kaggle-facial-keypoint-detection/test.csv'

          def load(test=False, cols=None):

          Loads data from FTEST if *test* is True, otherwise from FTRAIN.

          Pass a list of *cols* if you're only interested in a subset of the

          target columns.

          fname = FTEST if test else FTRAIN

          df = read_csv(os.path.expanduser(fname)) # load pandas dataframe

          # The Image column has pixel values separated by space; convert

          # the values to numpy arrays:

          df['Image'] = df['Image'].apply(lambda im: np.fromstring(im, sep=' '))

          if cols: # get a subset of columns

          df = df[list(cols) + ['Image']]

          print(df.count()) # prints the number of values for each column

          df = df.dropna() # drop all rows that have missing values in them


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();