Github项目|几行代码即可实现人脸检测、目标检测的开源计算机视觉库
關注&置頂“算法猿的成長”
每日8:30,干貨速遞!
2019 年第 73 篇文章,總第 97 篇文章
今天介紹一個簡單、易用的開源計算機視覺庫,名字是?cvlib,其 Github 地址:
https://github.com/arunponnusamy/cvlib
官方文檔地址:
http://cvlib.net/
安裝
cvlib?這個庫首先需要安裝這兩個庫:
tensorflow
opencv
快速的安裝方法是:
pip?install?opencv-python?tensorflow當然上述安裝的 tensorflow 是 cpu 版本,如果希望安裝可以使用 gpu 的,安裝包名字是?tensorflow-gpu?,安裝 gpu 版本需要注意安裝正確版本的英偉達驅動、CUDA、CUDNN。
接著就是正式安裝?cvlib,簡單的安裝方法是通過?pip:
pip?install?cvlib如果是希望升級到最新版本,命令為:
pip?install?--upgrade?cvlib第二種通過源碼安裝方法,只需要按照下列命令依次執行即可:
git?clone?https://github.com/arunponnusamy/cvlib.git cd?cvlib python?setup.py?sdist pip?install?.注意:目前僅在 Python 3.x 版本測試通過,而 2.x 版本并沒有進行測試,所以建議在 Python 3.x 環境使用該庫。
主要功能
目前?cvlib?支持以下幾種應用:
人臉檢測
性別檢測
目標檢測
人臉檢測
人臉檢測的接口是?detect_face(),返回的結果是所有檢測到的人臉的一個坐標點和置信度。
代碼示例:
import?cvlib?as?cv import?sys import?cv2 import?os?#?read?input?image image?=?cv2.imread(sys.argv[1])#?apply?face?detection faces,?confidences?=?cv.detect_face(image)print(faces) print(confidences)#?loop?through?detected?faces for?face,conf?in?zip(faces,confidences):(startX,startY)?=?face[0],face[1](endX,endY)?=?face[2],face[3]#?draw?rectangle?over?facecv2.rectangle(image,?(startX,startY),?(endX,endY),?(0,255,0),?2)#?display?output #?press?any?key?to?close?window??????????? cv2.imshow("face_detection",?image) cv2.waitKey()#?save?output cv2.imwrite("face_detection.jpg",?image)#?release?resources cv2.destroyAllWindows()輸出結果如下所示:
人臉檢測的底層實現其實是通過 OpenCV 的?dnn?模塊,并加載一個預訓練的?caffemodel。
性別檢測
性別檢測的接口是?detect_gender(),返回的是標簽(男性or女性)以及預測的概率。
代碼示例:
import?cv2 import?cvlib?as?cv import?sys import?numpy?as?np#?read?input?image img?=?cv2.imread(sys.argv[1])#?apply?face?detection face,?conf?=?cv.detect_face(img)#?loop?through?detected?faces for?f?in?face:(startX,startY)?=?f[0],f[1](endX,endY)?=?f[2],f[3]#?draw?rectangle?over?facecv2.rectangle(img,?(startX,startY),?(endX,endY),?(0,255,0),?2)face_crop?=?np.copy(img[startY:endY,?startX:endX])#?apply?gender?detection(label,?confidence)?=?cv.detect_gender(face_crop)print(confidence)print(label)idx?=?np.argmax(confidence)label?=?label[idx]label?=?"{}:?{:.2f}%".format(label,?confidence[idx]?*?100)Y?=?startY?-?10?if?startY?-?10?>?10?else?startY?+?10cv2.putText(img,?label,?(startX,?Y),??cv2.FONT_HERSHEY_SIMPLEX,0.7,?(0,?255,?0),?2)#?display?output #?press?any?key?to?close?window??????????? cv2.imshow("gender?detection",?img) cv2.waitKey()#?save?output cv2.imwrite("gender_detection.jpg",?img)#?release?resources cv2.destroyAllWindows()輸出結果如下所示:
從示例代碼可以看到,首先是需要檢測人臉,然后將人臉部分傳入性別檢測接口,再得到最終的檢測結果。其底層實現是采用 keras 的預訓練模型,不過其準確率并不是特別的高,所以可以自己優化模型,提升性別檢測的準確率,然后替換模型。
目標檢測
目標檢測的接口是?detect_common_objects(),它用于檢測常見的物體,返回結果是圖片中檢測到的物體的坐標、類別標簽以及置信度。
代碼示例如下:
import?cvlib?as?cv from?cvlib.object_detection?import?draw_bbox import?sys import?cv2#?read?input?image image?=?cv2.imread(sys.argv[1])#?apply?object?detection bbox,?label,?conf?=?cv.detect_common_objects(image)print(bbox,?label,?conf)#?draw?bounding?box?over?detected?objects out?=?draw_bbox(image,?bbox,?label,?conf)#?display?output #?press?any?key?to?close?window??????????? cv2.imshow("object_detection",?out) cv2.waitKey()#?save?output cv2.imwrite("object_detection.jpg",?out)#?release?resources cv2.destroyAllWindows()輸出結果:
目標檢測的底層實現是采用在 COCO 數據集上訓練的 YOLOv3 模型。
另外,上述三個功能其實不僅是對圖片進行檢測,還可以實時調用,通過攝像頭捕捉到的實時返回結果,代碼例子可以查看:
https://github.com/arunponnusamy/cvlib/tree/master/examples
其他功能
除了上述三個主要功能,其實?cvlib?也還能實現以下兩個功能:
獲取視頻的幀
生成 gif 動圖
獲取視頻的幀是在?utils.py?中的函數?get_frames(),輸入是視頻的路徑,使用方法如下所示:
import?cvlib?as?cv frames?=?cv.get_frames('~/Downloads/demo.mp4')也可以添加一個保存所有幀的文件夾路徑,返回的幀?frames?是用列表保存的?numpy?數組形式。
frames?=?cv.get_frames('~/Downloads/demo.mp4',?'~/Downloads/demo_frames/')生成 gif 動圖則是函數?animate()?實現的,它需要輸入一批圖片或者保存圖片的文件夾路徑,然后返回一個 gif 并保存。
cv.animate(frames,?'~/Documents/frames.gif')這兩個功能,具體可以查看:
https://github.com/arunponnusamy/cvlib/blob/master/cvlib/utils.py#L48
https://github.com/arunponnusamy/cvlib/blob/master/cvlib/utils.py#L87
小結
今天介紹的計算機視覺庫?cvlib?是一個非常容易上手的工具,簡單實現了人臉檢測、性別檢測和目標檢測三個非常常用的應用。
最后,前兩張圖片其實是來自一部美劇《硅谷》,這是一部講述幾個程序員創業的故事,非常有趣又有常見的程序員梗,目前出了第四季,第五季也是最后一季估計是在年底播出,還是非常推薦大家看看的。
歡迎關注我的微信公眾號--算法猿的成長,或者掃描下方的二維碼,大家一起交流,學習和進步!
如果覺得不錯,在看、轉發就是對小編的一個支持!
推薦閱讀:
-?[資源分享] Github上八千Star的深度學習500問教程
必讀的AI和深度學習博客
[Github項目推薦] 機器學習& Python 知識點速查表
[Github項目推薦] 推薦三個助你更好利用Github的工具
Github上的各大高校資料以及國外公開課視頻
總結
以上是生活随笔為你收集整理的Github项目|几行代码即可实现人脸检测、目标检测的开源计算机视觉库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot 项目瘦身指南,非
- 下一篇: 后端开发:数据持久化框架为什么放弃Hib