中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么實現AI人臉識別

發布時間:2021-11-23 09:44:22 來源:億速云 閱讀:325 作者:iii 欄目:大數據

這篇文章主要介紹“Python怎么實現AI人臉識別”,在日常操作中,相信很多人在Python怎么實現AI人臉識別問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python怎么實現AI人臉識別”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1、買臺小“電腦”

既然要做人臉識別,那得找臺帶攝像頭的小電腦啊。首先得價格便宜,簡單搜了下,基本有以下幾個選擇:

  • 樹莓派4: ARM系統,生態好。價格合適,55刀。CPU在3個中最好,算力0.1TFLOPS

  • K210:RISC-V的(非ARM),價格是最實惠的,299元。算力有0.8TOPS

  • Jetson Nano:ARM系統,比樹莓派4還貴,但是多一個英偉達的GPU(當然是丐版的GPU),價格99刀。算力0.47TFLOPS

這3個里面,考慮到人臉識別應該有更多的AI屬性,那么帶GPU能做AI推理不是更香么,于是就選擇了英偉達的Jetson Nano開發板(主要也是想先入門英偉達的GPU派系,誰叫現在NVIDIA比較香呢)。

Python怎么實現AI人臉識別

2、啟動系統

這里需要先把“系統image”刷到 tf 卡里面,然后把tf卡插到開發板上,然后開機啟動。啟動有2個點需要注意:

  1. 跳線帽,需要插上(不然電源點不亮)。

  2. 第一次開機會卡住,需要重啟一次。

Python怎么實現AI人臉識別

Python怎么實現AI人臉識別

啟動后,發現是個帶界面的 Ubuntu系統,接上鼠標+鍵盤,就是最熟悉的小電腦嘛。

連接網絡,設置國內Ubuntu源,安裝 jtop 命令(因為nano不能敲 nvidia-smi 命令)。

3、原來CUDA是個編譯器

既然選了英偉達的GPU開發板,剛好了解一下CUDA是什么。

3.1 寫個CUDA程序

可以看到是C語言的,一共就2個函數。一個main函數,一個useCUDA函數。

要跑起來,需要先進行編譯。發現不使用gcc,而是使用 nvcc 編譯器,有意思。

Jetson Nano的image已經安裝了nvcc,所以可以直接用,只是使用前需要設置一下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

設置后,才可以敲 nvcc 命令。

于是開始編譯:

nvcc -o main.out main.cu foo.cu  (跟gcc編譯一樣)

運行:./main.out 即可。呵,原來CUDA是個編譯器啊(編譯出給GPU跑的程序)。

3.2 CUDA在干嘛

普通的程序編譯出來都是給CPU跑的;寫個程序,想給GPU跑,就得使用cuda編譯器了。畢竟咱們的這個GPU弱是弱了一點,也有128核呢,跑這種簡單的cuda程序還是OK的。

另外,CUDA還提供了一些現成的操作GPU的函數,比如:矩陣乘法,矩陣轉置 之類的。CUDA只能用于英偉達的GPU,用于利用GPU進行復雜的并行計算。然后很多AI框架都是基于CUDA搞的,所以跑個cuda程序,幫助理解挺好的。

4、檢測攝像頭功能OK

這里需要使用 nvgstcapture-1.0 命令,經查,字母gst原來是Gstreamer的縮寫。

直接敲:

nvgstcapture-1.0

發現可以把攝像頭打開了。

4.1 Gstreamer

搜了下,發現是一個音視頻流處理的pipeline框架。

比如Shell命令的管道符為:|

為避免沖突,Gstreamer的管道符,用了個比較像的:! 符號。

5、人臉可以正常識別

Copy了一個 face_detect.py 文件。

直接運行了:

python ./face_detect.py

發現就可以識別出人臉了,厲害了。。。(額,只是圖像是倒過來的)

Python怎么實現AI人臉識別

于是簡單看了下代碼(不會Python,但是也大概能看懂),發現有一個圖像模式的參數 “flip_method=0”,我改成了6,發現圖像就轉過來正常了。

Python怎么實現AI人臉識別

再看了下,發現獲取攝像頭拍攝的圖片,還是通過 Gstreamer 來實現的。

Python怎么實現AI人臉識別

6、Opencv才是隱藏的Boss?

通過上面的章節,發現總共代碼沒幾行,怎么就能識別人臉了呢?雖然python不熟,但好在代碼少,仔細看了下:發現主要是調用了opencv的函數就可以識別人臉了,那說明opencv還是得了解一下。

你看識別人臉的代碼,總共也就10行,簡單過一下:

Python怎么實現AI人臉識別

6.1 Haar分類器

再搜索,發現這里的人臉識別用的是 “Haar分類器”這種方法實現的。學習了下,屬于機器學習的范疇,沒有用卷積神經網絡。

7、Windows上面復現人臉識別

既然通過opencv就能識別人臉,那我不需要攝像頭,直接拿圖片是不是也可以跑了?于是Windows上面安裝個opencv試試。

7.1 安裝Python

去 https://www.python.org/ 下載最新的Python, 安裝后就有Python了。當然執行命令是 py。

7.2 pip命令

發現pip命令,還是不行。 找到原來在:

C:\Users\tsjsdbd\AppData\Local\Programs\Python\Python39\Scripts

這個目錄下。

于是把這個路徑,加入到了本機的環境變量里面:

Python怎么實現AI人臉識別

所以pip命令ok了

7.3 設置pip國內源

vi ~/pip/pip.ini

然后設置內容:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

7.4 安裝 opencv 包

pip install opencv-python

這條命令會同時安裝 numpy 包。

Ps:如果需要代理。設置一下

  export http_proxy=http://代理:端口
export https_proxy=http://代理:端口

7.5 重現Haar人臉識別

下載一個帶人臉的jpg照片,這里假設名為 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

得到結果:

Python怎么實現AI人臉識別

發現確實可以,杠杠滴。

8、通過神經網絡的人臉識別

現在視頻圖像的識別,一般走CNN,所以咱也得玩一遍。Jetson 開發板,自己配套了一套 jetson-inference 的推理項目,就是用來跑GPU推理的。

到此,關于“Python怎么實現AI人臉識別”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泸水县| 子洲县| 历史| 义乌市| 建阳市| 营山县| 田林县| 图木舒克市| 内江市| 乌兰浩特市| 稷山县| 昌吉市| 新津县| 金乡县| 临江市| 丁青县| 射阳县| 澄城县| 北宁市| 通江县| 香河县| 平湖市| 信阳市| 小金县| 福清市| 南充市| 玛沁县| 丹凤县| 长子县| 临猗县| 石河子市| 菏泽市| 蕉岭县| 息烽县| 巫山县| 共和县| 中卫市| 永善县| 西华县| 朝阳县| 长武县|