1. 程式人生 > 其它 >三分鐘極速體驗:Java版人臉檢測

三分鐘極速體驗:Java版人臉檢測

歡迎訪問我的GitHub

https://github.com/zq2599/blog_demos

內容:所有原創文章分類彙總及配套原始碼,涉及Java、Docker、Kubernetes、DevOPS等;

本篇概覽

  • 檢測照片中的人臉,用Java可以實現嗎?

  • 當然可以,今天咱們用最少的時間、最簡單的操作來體驗這個實用的功能,當您提交一張帶有人臉的照片後,會看到下圖效果,所有人臉都被識別到並被框選出來了:

  • 本篇以體驗為主,不涉及具體的開發,後面還會有文章介紹完整的開發過程(包括原始碼)

風險提前告知

  • 為了簡化操作,接下來會用到docker,對應的映象體積巨大,達到了恐怖的4.69G

    ,建議您為自己的docker做好加速配置,可以減少下載等待時間;

  • 由於opencv體積龐大,再加上javacv的依賴庫也不小,這才導致超大映象的出現,還望您多多海涵,標題中的《三分鐘極速體驗》是要去掉映象的等待時間的,您要是覺得欣宸的標題起得很無恥,我覺得您是對的...

環境資訊

  • 為了簡化體驗過程,接下來會用到docker,推薦的環境資訊如下:
  • 作業系統:Ubuntu 16.04.1 LTS 伺服器版(MacBook Pro也可以,版本是11.2.3,macOS Big Sur)
  • docker:20.10.2 Community
  • 為了加快docker映象的下載速度,建議您提前做好docker加速配置
  • 文章標題號稱三分鐘極速體驗,沒時間說太多,準備好環境就火速動手啦

部署

  • 新建名為images的目錄,用於儲存處理後的檔案,我這裡完整路徑是/root/temp/202107/17/images
  • 新建名為model的目錄,用於儲存稍後要下載的模型檔案,我這裡完整路徑是/root/temp/202107/17/model
  • 下載訓練好的模型檔案,我準備了兩個下載地址,您任選一個即可,一個是csdn的(無需積分):
  1. https://download.csdn.net/download/boling_cavalry/20352221,另一個是
  2. https://raw.githubusercontent.com/zq2599/blog_download_files/master/files/haarcascade_frontalface_default.zip
  • 上述檔案下載下來是個壓縮包,請先解壓,再將檔案haarcascade_frontalface_default.xml放入model目錄(model裡放的必須是解壓後的檔案)

  • 執行以下命令,會先下載docker映象檔案再建立容器:

docker run \
--rm \
-p 18080:8080 \
-v /root/temp/202107/17/images:/app/images \
-v /root/temp/202107/17/model:/app/model \
bolingcavalry/facedetect:0.0.1
  • 部署完成,開始體驗

體驗

  • 瀏覽器訪問http://localhost:18080,這裡的localhost請改成docker宿主機IP(要關閉防火牆!),可以見到操作頁面,如下圖(欣宸的前端開發水平渣到令人髮指,果然不是空穴來風):
  • 找一張有人臉的圖片(我在百度圖片隨機找的),點選上圖的選取圖片按鈕進行上傳,至於周圍檢測數量那裡先保持預設值32不要動

  • 點選提交按鈕後,頁面會顯示檢測結果,如下圖,人臉被準確的框選出來了:

  • 再試試多人的,如下圖,居然一個人臉都沒有檢測到:
  • 周圍檢測數量的值調低些,改成4再試,如下圖,這次成功了,八張人臉全部檢測到:
  • 至此,Java版人臉檢測的體驗已經完成,一分鐘概覽,一分鐘部署,一分鐘體驗,咱們足夠高效(下載超大映象的時間不能算,不敢算...)

  • 此刻您應該能感受到Java在人臉識別領域的魅力了,聰明的您當然會有很多疑問,例如:

  1. 用了啥框架?
  2. 寫了啥程式碼?
  3. 執行環境好不好配置?只要jar依賴嗎?還需要其他操作嗎?
  • 這些疑問在下面這兩篇文章中完全揭祕,然後您也能輕易做出集成了人臉識別的SpringBoot應用了:
  1. Java版人臉檢測詳解上篇:執行環境的Docker映象(CentOS+JDK+OpenCV)
  2. Java版人臉檢測詳解下篇:編碼
  • 順便劇透一下:設定執行環境很麻煩,所幸欣宸已解決此問題,併成功封裝為基礎映象,咱們可以專注的開發應用,對執行環境再也無需處理了

你不孤單,欣宸原創一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 資料庫+中介軟體系列
  6. DevOps系列

歡迎關注公眾號:程式設計師欣宸

微信搜尋「程式設計師欣宸」,我是欣宸,期待與您一同暢遊Java世界...
https://github.com/zq2599/blog_demos