連Python都不熟,我是如何跑通AI人臉識別的

      網友投稿 777 2025-04-02

      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比較香呢)。

      參考鏈接:

      https://www.zhihu.com/question/384561694

      https://zhuanlan.zhihu.com/p/81969854

      2????? 啟動系統

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

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

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

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

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

      設置系統參考:https://zhuanlan.zhihu.com/p/336429888

      3????? 原來CUDA是個編譯器

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

      3.1????? 寫個CUDA程序

      當然,程序是抄課本的,如下。

      https://blog.csdn.net/fb_help/article/details/79283032

      可以看到是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 命令。參考:https://www.huaweicloud.com/articles/0ba49cd30493adbb37c82250408d8be4.html

      于是開始編譯:

      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的管道符,用了個比較像的:! ?符號。

      參考:https://thebigdoc.readthedocs.io/en/latest/gstreamer/gst-concept.html

      5????? 人臉可以正常識別

      按照教程:https://github.com/JetsonHacksNano/CSI-Camera/blob/master/face_detect.py

      Copy了一個 face_detect.py 文件。

      直接運行了:

      python ./face_detect.py

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

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

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

      6????? Opencv才是隱藏的Boss?

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

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

      找了這篇文章,還不錯:https://www.jianshu.com/p/0514c03e6727

      6.1????? Haar分類器

      再搜索,發現這里的人臉識別用的是 “Haar分類器”這種方法實現的。學習了下,屬于機器學習的范疇,沒有用卷積神經網絡。可參考:https://zhuanlan.zhihu.com/p/51431663

      完整的Opencv的介紹:http://woshicver.com/

      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

      這個目錄下。

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

      所以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

      連Python都不熟,我是如何跑通AI人臉識別的

      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

      得到結果:

      發現確實可以,杠杠滴。

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

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

      參考:https://blog.csdn.net/weixin_45319326/article/details/107956896

      AI OpenCV Python 人臉識別服務 FRS

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:OBSBrowser FAQ
      下一篇:excel表格數字設置居中的方法(excel表格內數字怎么居中)
      相關文章
      亚洲av无码片vr一区二区三区| 国产精品高清视亚洲一区二区 | 久久亚洲sm情趣捆绑调教| 午夜亚洲国产理论片二级港台二级 | 亚洲AV无码之国产精品| 亚洲私人无码综合久久网| 久久精品亚洲中文字幕无码网站| 精品国产日韩亚洲一区在线| 亚洲成在人线电影天堂色| 亚洲精品乱码久久久久66| 亚洲第一成人影院| 午夜在线a亚洲v天堂网2019| 亚洲国产精品免费观看| 亚洲综合激情五月色一区| 日韩亚洲国产综合高清| 亚洲日韩av无码中文| 亚洲人成人77777网站不卡| 久久水蜜桃亚洲av无码精品麻豆| 中文国产成人精品久久亚洲精品AⅤ无码精品| 亚洲人成网站观看在线播放| 亚洲精品无AMM毛片| 亚洲图片校园春色| 亚洲中文字幕无码av在线| 亚洲一区二区三区久久| 国产人成亚洲第一网站在线播放| 亚洲人成电影网站色www| 久久亚洲精品成人无码| 亚洲AV之男人的天堂| 亚洲一级片免费看| 亚洲五月综合缴情在线观看| 亚洲人成电影在线播放| 伊人久久大香线蕉亚洲五月天| 亚洲乱码国产一区三区| 亚洲成人在线网站| 久久国产精品亚洲一区二区| 中文字幕亚洲色图| 亚洲乱码中文字幕小综合| 亚洲熟妇无码AV不卡在线播放| 成人亚洲国产精品久久| 久久人午夜亚洲精品无码区| 亚洲高清最新av网站|