日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

caffe 人脸关键点检测_全套 | 人脸检测 人脸关键点检测 人脸卡通化

發布時間:2025/3/20 pytorch 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 caffe 人脸关键点检测_全套 | 人脸检测 人脸关键点检测 人脸卡通化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“AI算法與圖像處理”,選擇加"星標"或“置頂”

重磅干貨,第一時間送達

來源:CVPy

人臉檢測歷險記

可能跟我一樣,人臉檢測是很多人學習圖像處理的第一個自驅動型的任務,OpenCV剛上手沒幾天可能就想先跑一跑人臉檢測,然后一個坑接著一個坑的往里跳。我個人對人臉檢測的大概歷程應該是下面這樣的:

找一個直接能執行的

OpenCV的人臉檢測程序,直接執行看效果。雖然這貌似是最簡單的一步,但是由于最初水平實在太低,所以這一步可能是耗時最長的。當時初學的時候還在用

C++,想要直接跑程序,首先你要先配置好環境!曾經因為環境問題嘗試了不同版本

OpenCV未果、重裝

VS未果、重裝

Windows系統仍未果...當年的環境配置簡直是不堪回首,說多了都是淚。而且根據我的經驗,不論是因為版本還是還是系統問題,在網上找一個直接拿來就能跑的代碼實在是太難了...

按照千辛萬苦跑起來的程序,自己敲一遍。明明感覺沒啥差別,為啥就是跑不起來呢...所有的坑都會自己跳進去,所有的低級錯誤都會犯不止一遍。

嘗試找數據或者標注數據,嘗試自己訓練一個人臉檢測模型,

OpenCV提供了用來訓練的

exe,參數超多,一直感覺很難用...當時可謂是屢敗屢戰,屢戰屢敗。

找一個能直接執行的深度學習的人臉檢測程序,直接執行看效果。(雖然這貌似是最簡單的一步,但是由于最初水平實在太低,所以這一步可能是耗時最長的。當時初學的時候還在用

Caffe,想要直接跑程序,首先你要先配置好環境!

Caffe的環境配置...當年的環境配置簡直是不堪回首,說多了都是淚。???好像在哪里聽過?)

同2.

嘗試找數據或者標注數據,嘗試自己訓練一個人臉檢測模型。

Caffe...對,我當時用的是

TensorFlow Object Detection API(當時這個環境配置過程也很感人)。

找一個能直接能用的人臉檢測模型,直接跑起來看看效果....如果不能跑,嘗試改改,也許就該好了呢。

跑起來一個人臉檢測模型,加點其他效果?

要不就先看看效果吧,畢竟看到效果才更有動力走下去。【視頻有聲提示!】

上面用的是深度學習模型的人臉檢測,但是在此之前還是稍微回顧下OpenCV自帶的人臉檢測器。

OpenCV自帶的人臉檢測

OpenCV自帶了基于級聯分類器的人臉檢測模型,只能檢測正臉,在前深度學習時代,效果已經是很好的了。OpenCV中的使用方式是用級聯分類器加載人臉檢測模型,大家一般默認用haarcascade_frontalface_default.xml。這個文件在C++源碼路徑下很容易找到,大概在opencv/sources/data/haarcascades路徑下,Python的話,我用的Anaconda,所以路徑在/Anaconda3/Lib/site-packages/cv2/data/。不同版本想來差異不會太大。

然后用多尺度滑窗法去檢測人臉,函數參數含義和代碼示例如下:

直接【執行】看效果:【視頻有聲提示!】

基于深度學習的人臉檢測

想要深入學習的小伙伴可以嘗試自己訓練一個人臉檢測模型練手,這里直接在Github上找一個能跑的模型CenterFace。代碼和模型都來自這里https://github.com/Star-Clouds/CenterFace。由于模型是ONNX格式的,所以用OpenCV的readNetFromONNX函數加載模型centerface.onnx。

摘取主體代碼并注釋如下:

class?CenterFace(object):

def?__init__(self):

#?readNetFromONNX?加載模型

self.net?=?cv2.dnn.readNetFromONNX(os.path.join(model_path,?'centerface.onnx'))

self.img_h_new,?self.img_w_new,?self.scale_h,?self.scale_w?=?0,?0,?0,?0

def?__call__(self,?img,?height,?width,?threshold=0.5,?landmarks=True):

#?圓整圖片大小為32的倍數

self.img_h_new,?self.img_w_new,?self.scale_h,?self.scale_w?=?self.transform(height,?width)

#?推理,即前向傳播一次

return?self.inference_opencv(img,?threshold,?landmarks)

def?inference_opencv(self,?img,?threshold,?landmarks=True):

#?圖像預處理,這里主要是?Reisze?和?BGR2RGB

blob?=?cv2.dnn.blobFromImage(img,?scalefactor=1.0,?size=(self.img_w_new,?self.img_h_new),?mean=(0,?0,?0),?swapRB=True,?crop=False)

self.net.setInput(blob)

begin?=?time.time()

#?前向傳播一次

heatmap,?scale,?offset,?lms?=?self.net.forward(["537",?"538",?"539",?'540'])

end?=?time.time()

print("dtime?=?",?end?-?begin)

#?后處理,主要是根據閾值?threshold?從輸出獲取人臉框和人臉關鍵點的位置

return?self.postprocess(heatmap,?lms,?offset,?scale,?threshold,?landmarks)

def?transform(self,?h,?w):

#?圓整圖片大小為32的倍數

img_h_new,?img_w_new?=?int(np.ceil(h?/?32)?*?32),?int(np.ceil(w?/?32)?*?32)

scale_h,?scale_w?=?img_h_new?/?h,?img_w_new?/?w

return?img_h_new,?img_w_new,?scale_h,?scale_w

這一步模型可以同時給出人臉框和人臉關鍵點的位置。【視頻有聲提示!】

人臉卡通化

僅僅是人臉檢測,顯得略微有些沒意思,所以在人臉檢測的基礎上,加點其他的更有意思的東西,比如上次剛玩過的卡通化。這是國內大佬的一篇文章,開源了代碼和模型,在這里:https://github.com/SystemErrorWang/White-box-Cartoonization/。代碼細節可以到這個鏈接查看,這里只給出人臉檢測之后和卡通化結合部分的代碼:

def?face_detect(self,?image,?landmarks:?bool,?cartoon:?bool):

#?加載模型

centerface?=?CenterFace()

h,?w?=?image.shape[:2]

#?人臉檢測

dets,?lms?=?centerface(image,?h,?w,?threshold=0.5,?landmarks=landmarks)

print("檢測到的人臉:",?dets)

if?len(dets):

for?det?in?dets:

boxes,?score?=?det[:4],?det[4]

x1,?y1,?x2,?y2?=?int(boxes[0]),?int(boxes[1]),?int(boxes[2]),?int(boxes[3])

box_w,?box_h?=?x2?-?x1,?y2?-?y1

#?人臉框稍微往外擴一點,個人感覺這么會好一點

face_box?=?image[max(0,?y1?-?int(box_h?*?0.1)):?min(y2?+?int(box_h?*?0.1),?h),?max(

0,?x1?-?int(box_w?*?0.1)):min(x2?+?int(box_w?*?0.1),?w)]

if?cartoon:

#?人臉卡通化之后

cartoonized_face?=?cartoonize(face_box)

#?貼回原圖,覆蓋原圖人臉部分

image[max(0,?y1?-?int(box_h?*?0.1)):?min(y2?+?int(box_h?*?0.1),?h),?max(

0,?x1?-?int(box_w?*?0.1)):min(x2?+?int(box_w?*?0.1),?w)]?=?cartoonized_face

#?畫出人臉框框

draw_box(image,?[x1,?y1,?x2,?y2],?color=(0,?255,?255))

#?cv2.rectangle(image,?(x1,?y1),?(x2,?y2),?(0,?255,?255),?min(h,?w)?//?200)

if?landmarks:

for?lm?in?lms:

for?i?in?range(0,?5):

cv2.circle(image,?(int(lm[i?*?2]),?int(lm[i?*?2?+?1])),

min(h,?w)?//?100,?(0,?0,?255),?-1)

else:

cv2.putText(image,?"No?Face?",?(int(w?*?0.1),?int(h?*?0.1)),?cv2.FONT_HERSHEY_SIMPLEX,?1.5,?(0,?0,?255),?min(h,?w)?//?200)

return?image

流程如下:

先加載

CenterFace的模型(參考上一節的

CenterFace的

__init__)

進行人臉檢測,獲取人臉框和人臉關鍵點的位置

稍微擴充下人臉框,進行卡通化操作

把卡通化后的人臉貼回原圖中人臉的位置

完整效果

看一下完整的效果吧:【視頻有聲提示!】

總結

以上是生活随笔為你收集整理的caffe 人脸关键点检测_全套 | 人脸检测 人脸关键点检测 人脸卡通化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美中文一区 | 久久99久久99精品中文字幕 | 番号动态图 | 国产精品白嫩白嫩大学美女 | 五月婷婷中文字幕 | 久久久久久久久久久综合 | www.久久久久久久久 | 亚洲理论电影在线观看 | 久久er99热精品一区二区 | 九九热伊人 | 国产三级伦理片 | juliaann第一次和老师 | 欧美被狂躁喷白浆精品 | www.色就是色 | 久久精品欧美日韩 | 久久99精品久久只有精品 | 东北女人啪啪ⅹxx对白 | 亚洲天堂中文字幕 | 国产在线伊人 | 天堂素人约啪 | 亚洲视频大全 | 亚洲乱码一区二区三区在线观看 | 国产第八页 | 一区二区三区四区精品视频 | 亚洲天堂美女 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 97人人视频 | 夜夜嗨一区二区三区 | 荔枝视频污 | 国产一区二区三区四 | 国产激情毛片 | 日本一本在线视频 | 久久久久国产免费 | 久久久久免费视频 | 性欧美8khd高清极品 | 国产午夜福利片 | 日本少妇毛茸茸 | 男女久久久 | 国产在线播放网站 | 色av吧| 亚洲AV无码成人精品区东京热 | av在线免费观看网站 | 久久久久久久久久久久Av | 亚洲激情 | 精品少妇人妻av一区二区 | 福利视频大全 | 久草视频免费在线播放 | 性欧美极品另类 | 欧美日韩一区二 | 国产视频aaa| 巨乳xxx | 综合欧美亚洲 | 久久成人亚洲 | 久久久精品中文字幕 | 日本一区二区三区视频在线播放 | 91欧美国产 | 日本一区不卡在线 | 五月香婷婷| 尤物视频最新网址 | 折磨小男生性器羞耻的故事 | 精品在线视频一区二区三区 | 91亚洲精华 | 国产精品一区二区av白丝下载 | 色秀视频网 | 色综合视频在线 | 在线毛片观看 | 欧美日韩国产激情 | 久久久人体 | 俄罗斯videodesxo极品 | 国产福利免费看 | 国产精品久久久久野外 | 2019亚洲男人天堂 | 在线 日本 制服 中文 欧美 | 亚色成人 | 欧美视频在线播放 | 中国极品少妇xxxx | 波多野结衣人妻 | 小sao货水好多真紧h无码视频 | 成av在线| 男女草逼网站 | 99久久久国产精品无码网爆 | 四虎久久久久 | 在线小视频 | 亚洲综合欧美日韩 | 成人毛毛片| 寂寞人妻瑜伽被教练日 | 在线免费看av的网站 | 射综合网 | 亚洲精品国产精品乱码不99按摩 | 久久久天堂国产精品女人 | av高清一区 | 久久疯狂做爰流白浆xx | 欧美天天性 | 欧美成人a视频 | √8天堂资源地址中文在线 欧美精品在线一区二区 | 午夜桃色 | 在线免费av网址 | 在线播放一区二区三区 | 国产成人精品无码免费看夜聊软件 |