這篇文章主要介紹“Python怎么實現(xiàn)AI人臉識別”,在日常操作中,相信很多人在Python怎么實現(xiàn)AI人臉識別問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python怎么實現(xiàn)AI人臉識別”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)專注骨干網(wǎng)絡(luò)服務(wù)器租用10余年,服務(wù)更有保障!服務(wù)器租用,綿陽主機托管 成都服務(wù)器租用,成都服務(wù)器托管,骨干網(wǎng)絡(luò)帶寬,享受低延遲,高速訪問。靈活、實現(xiàn)低成本的共享或公網(wǎng)數(shù)據(jù)中心高速帶寬的專屬高性能服務(wù)器。
既然要做人臉識別,那得找臺帶攝像頭的小電腦啊。首先得價格便宜,簡單搜了下,基本有以下幾個選擇:
樹莓派4: ARM系統(tǒng),生態(tài)好。價格合適,55刀。CPU在3個中最好,算力0.1TFLOPS
K210:RISC-V的(非ARM),價格是最實惠的,299元。算力有0.8TOPS
Jetson Nano:ARM系統(tǒng),比樹莓派4還貴,但是多一個英偉達的GPU(當(dāng)然是丐版的GPU),價格99刀。算力0.47TFLOPS
這3個里面,考慮到人臉識別應(yīng)該有更多的AI屬性,那么帶GPU能做AI推理不是更香么,于是就選擇了英偉達的Jetson Nano開發(fā)板(主要也是想先入門英偉達的GPU派系,誰叫現(xiàn)在NVIDIA比較香呢)。
這里需要先把“系統(tǒng)image”刷到 tf 卡里面,然后把tf卡插到開發(fā)板上,然后開機啟動。啟動有2個點需要注意:
跳線帽,需要插上(不然電源點不亮)。
第一次開機會卡住,需要重啟一次。
啟動后,發(fā)現(xiàn)是個帶界面的 Ubuntu系統(tǒng),接上鼠標+鍵盤,就是最熟悉的小電腦嘛。
連接網(wǎng)絡(luò),設(shè)置國內(nèi)Ubuntu源,安裝 jtop 命令(因為nano不能敲 nvidia-smi 命令)。
既然選了英偉達的GPU開發(fā)板,剛好了解一下CUDA是什么。
可以看到是C語言的,一共就2個函數(shù)。一個main函數(shù),一個useCUDA函數(shù)。
要跑起來,需要先進行編譯。發(fā)現(xiàn)不使用gcc,而是使用 nvcc 編譯器,有意思。
Jetson Nano的image已經(jīng)安裝了nvcc,所以可以直接用,只是使用前需要設(shè)置一下path。
export CUDA_HOME=/usr/local/cuda-10.0 export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH export PATH=/usr/local/cuda-10.0/bin:$PATH
設(shè)置后,才可以敲 nvcc 命令。
于是開始編譯:
nvcc -o main.out main.cu foo.cu (跟gcc編譯一樣)
運行:./main.out 即可。呵,原來CUDA是個編譯器啊(編譯出給GPU跑的程序)。
普通的程序編譯出來都是給CPU跑的;寫個程序,想給GPU跑,就得使用cuda編譯器了。畢竟咱們的這個GPU弱是弱了一點,也有128核呢,跑這種簡單的cuda程序還是OK的。
另外,CUDA還提供了一些現(xiàn)成的操作GPU的函數(shù),比如:矩陣乘法,矩陣轉(zhuǎn)置 之類的。CUDA只能用于英偉達的GPU,用于利用GPU進行復(fù)雜的并行計算。然后很多AI框架都是基于CUDA搞的,所以跑個cuda程序,幫助理解挺好的。
這里需要使用 nvgstcapture-1.0 命令,經(jīng)查,字母gst原來是Gstreamer的縮寫。
直接敲:
nvgstcapture-1.0
發(fā)現(xiàn)可以把攝像頭打開了。
搜了下,發(fā)現(xiàn)是一個音視頻流處理的pipeline框架。
比如Shell命令的管道符為:|
為避免沖突,Gstreamer的管道符,用了個比較像的:! 符號。
Copy了一個 face_detect.py 文件。
直接運行了:
python ./face_detect.py
發(fā)現(xiàn)就可以識別出人臉了,厲害了。。。(額,只是圖像是倒過來的)
于是簡單看了下代碼(不會Python,但是也大概能看懂),發(fā)現(xiàn)有一個圖像模式的參數(shù) “flip_method=0”,我改成了6,發(fā)現(xiàn)圖像就轉(zhuǎn)過來正常了。
再看了下,發(fā)現(xiàn)獲取攝像頭拍攝的圖片,還是通過 Gstreamer 來實現(xiàn)的。
通過上面的章節(jié),發(fā)現(xiàn)總共代碼沒幾行,怎么就能識別人臉了呢?雖然python不熟,但好在代碼少,仔細看了下:發(fā)現(xiàn)主要是調(diào)用了opencv的函數(shù)就可以識別人臉了,那說明opencv還是得了解一下。
你看識別人臉的代碼,總共也就10行,簡單過一下:
再搜索,發(fā)現(xiàn)這里的人臉識別用的是 “Haar分類器”這種方法實現(xiàn)的。學(xué)習(xí)了下,屬于機器學(xué)習(xí)的范疇,沒有用卷積神經(jīng)網(wǎng)絡(luò)。
既然通過opencv就能識別人臉,那我不需要攝像頭,直接拿圖片是不是也可以跑了?于是Windows上面安裝個opencv試試。
去 https://www.python.org/ 下載最新的Python, 安裝后就有Python了。當(dāng)然執(zhí)行命令是 py。
發(fā)現(xiàn)pip命令,還是不行。 找到原來在:
C:\Users\tsjsdbd\AppData\Local\Programs\Python\Python39\Scripts
這個目錄下。
于是把這個路徑,加入到了本機的環(huán)境變量里面:
所以pip命令ok了
vi ~/pip/pip.ini
然后設(shè)置內(nèi)容:
[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple
pip install opencv-python
這條命令會同時安裝 numpy 包。
Ps:如果需要代理。設(shè)置一下
export http_proxy=http://代理:端口 export https_proxy=http://代理:端口
下載一個帶人臉的jpg照片,這里假設(shè)名為 face.jpg
detect.py代碼如下:
import cv2 # load model detector=cv2.CascadeClassifier('C:/Users/t00402375/AppData/Local/Programs/Python/Python39/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml') src = cv2.imread("./face.jpg") cv2.namedWindow("image", cv2.WINDOW_AUTOSIZE); # detect gray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY) faces=detector.detectMultiScale(gray,1.2,5) # box for x,y,w,h in faces: cv2.rectangle(src,(x,y),(x+w,y+h),(255,0,0),2) # show cv2.imshow("image", src); cv2.waitKey(0); cv2.destroyAllWindows();
運行就行了。
py detect.py
得到結(jié)果:
發(fā)現(xiàn)確實可以,杠杠滴。
現(xiàn)在視頻圖像的識別,一般走CNN,所以咱也得玩一遍。Jetson 開發(fā)板,自己配套了一套 jetson-inference 的推理項目,就是用來跑GPU推理的。
到此,關(guān)于“Python怎么實現(xiàn)AI人臉識別”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)站題目:Python怎么實現(xiàn)AI人臉識別
瀏覽地址:http://weahome.cn/article/gigdie.html