目錄
1. 檢測香菸
2. 人臉辨識
首頁 科技週邊 人工智慧 AI禁煙可還行!吸菸辨識+人臉識別

AI禁煙可還行!吸菸辨識+人臉識別

Apr 14, 2023 pm 12:49 PM
專案 ai 監控

哈嘍,大家好。

今天跟大家分享一個吸菸辨識 人臉辨識的項目。很多公共場所、生產場所和學校,都有禁煙的要求,做一個禁煙的監控,讓AI自動識別吸煙行為,並識別是誰在吸煙,還是很有必要的。

用目標偵測演算法判斷吸菸行為,擷取吸菸者的人臉,用人臉辨識演算法判斷誰在吸菸。想法比較簡單,但細節處理起來還是稍微麻煩。

項目用到訓練資料和原始碼,都已經打包好了。還是老樣子,留言區獲取。

1. 檢測香菸

我用了 5k 張抽煙的標記數據,作為訓練數據

AI禁煙可還行!吸菸辨識+人臉識別

放在dataset目錄下。

訓練YOLOv5目標偵測模型。

第一步,複製data/coco128.yaml為smoke.yaml,並修改資料集目錄和類別配置資訊

path: ../dataset/smoke # dataset root dir
train: images/train# train images (relative to 'path') 128 images
val: images/test# val images (relative to 'path') 128 images
test:# test images (optional)

# Classes
names:
0: smoke
登入後複製

第二步,複製./models/yolov5s.yaml為smoke.yaml,修改nc

nc: 1# number of classes
登入後複製

第三步,下載yolov5s.pt預訓練模型,放在{yolov5目錄}/weights目錄中

執行下面指令,訓練即可

python ./train.py --data ./data/smoke.yaml --cfg ./models/smoke.yaml --weights ./weights/yolov5s.pt --batch-size 30 --epochs 120 --workers 8 --name smoke --project smoke_s
登入後複製

AI禁煙可還行!吸菸辨識+人臉識別

訓練完成後可以看到如下輸出:

AI禁煙可還行!吸菸辨識+人臉識別

#準召還湊合。

訓練完成後,可以找到best.pt位置,後面用它來做香菸偵測。

model = torch.hub.load('../28_people_counting/yolov5', 'custom', './weights/ciga.pt', source='local')

results = self.model(img[:, :, ::-1])
pd = results.pandas().xyxy[0]
ciga_pd = pd[pd['class'] == 0]
登入後複製

AI禁煙可還行!吸菸辨識+人臉識別

能辨識到煙後,我們還需要判斷,目前是否正在吸菸。

可以用香菸偵測框與嘴部偵測框計算IOU來判斷,說白了,就是判斷這兩框是否有交集,若有,則認為目前正在吸菸。

AI禁煙可還行!吸菸辨識+人臉識別

嘴部偵測框,使用人臉關鍵點來辨識。

2. 人臉辨識

人臉辨識演算法有很多成熟的模型,我們不需要自己訓練,直接調庫即可。

我這裡用的是dlib函式庫,它可以辨識人臉 68 個關鍵點,並根據這 68 個關鍵點,提取人臉特徵。

AI禁煙可還行!吸菸辨識+人臉識別

face_detector = dlib.get_frontal_face_detector()
face_sp = dlib.shape_predictor('./weights/shape_predictor_68_face_landmarks.dat')

dets = face_detector(img, 1)

face_list = []
for face in dets:
l, t, r, b = face.left(), face.top(), face.right(), face.bottom()

face_shape = face_sp(img, face)
登入後複製

face_detector可以偵測人臉,返回人臉偵測框,face_sp基於人臉偵測框,辨識人臉 68 個關鍵點。

從這 68 個關鍵點中,我們便可以取得到嘴部偵測框,用於判斷是否正在吸菸。

最後,我們還是希望利用人臉辨識演算法,辨識到誰在抽菸。

第一步,提取人臉特徵

face_feature_model = dlib.face_recognition_model_v1('./weights/dlib_face_recognition_resnet_model_v1.dat')

face_descriptor = face_feature_model.compute_face_descriptor(img, face_shape)
登入後複製

face_descriptor根據人臉 68 個關鍵點之間的位置、距離,維每張臉計算出一個特徵向量。這個原理類似於我們之前分享的word2vec或將影片映射到N維向量。

第二步,將現有人臉錄入人臉庫。我準備了3 個影視劇中的吸煙行為

AI禁煙可還行!吸菸辨識+人臉識別

從影片中裁剪出人臉,向量化後,寫入人臉資料庫(用檔案取代)

AI禁煙可還行!吸菸辨識+人臉識別

第三步,發生吸菸行為後,我們可以裁剪出吸菸者的人臉,併計算人臉向量,與人臉資料庫的特徵進行比對,找到最相似的人臉,返回對應的名字

AI禁煙可還行!吸菸辨識+人臉識別

def find_face_name(self, face_feat):
"""
人脸识别,计算吸烟者名称
:param face_feat:
:return:
"""
cur_face_feature = np.asarray(face_feat, dtype=np.float64).reshape((1, -1))

# 计算两个向量(两张脸)余弦相似度
distances = np.linalg.norm((cur_face_feature - self.face_feats), axis=1)
min_dist_index = np.argmin(distances)
min_dist = distances[min_dist_index]

if min_dist < 0.3:
return self.face_name_list[min_dist_index]
else:
return '未知'
登入後複製

這個項目還有很多可以擴展的地方,比如:我提供的視頻只有單張臉,實際監控中肯定是多張臉。這時候可以用MOT演算法進行行人跟踪,然後再對每個人單獨做吸煙識別

還有,可以單獨做一個統計區,把識別到的吸煙行為保存,用作警告、處罰的證據。

以上是AI禁煙可還行!吸菸辨識+人臉識別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Debian郵件服務器防火牆配置技巧 Debian郵件服務器防火牆配置技巧 Apr 13, 2025 am 11:42 AM

配置Debian郵件服務器的防火牆是確保服務器安全性的重要步驟。以下是幾種常用的防火牆配置方法,包括iptables和firewalld的使用。使用iptables配置防火牆安裝iptables(如果尚未安裝):sudoapt-getupdatesudoapt-getinstalliptables查看當前iptables規則:sudoiptables-L配置

Debian郵件服務器SSL證書安裝方法 Debian郵件服務器SSL證書安裝方法 Apr 13, 2025 am 11:39 AM

在Debian郵件服務器上安裝SSL證書的步驟如下:1.安裝OpenSSL工具包首先,確保你的系統上已經安裝了OpenSSL工具包。如果沒有安裝,可以使用以下命令進行安裝:sudoapt-getupdatesudoapt-getinstallopenssl2.生成私鑰和證書請求接下來,使用OpenSSL生成一個2048位的RSA私鑰和一個證書請求(CSR):openss

Debian OpenSSL如何進行數字簽名驗證 Debian OpenSSL如何進行數字簽名驗證 Apr 13, 2025 am 11:09 AM

在Debian系統上使用OpenSSL進行數字簽名驗證,可以按照以下步驟操作:準備工作安裝OpenSSL:確保你的Debian系統已經安裝了OpenSSL。如果沒有安裝,可以使用以下命令進行安裝:sudoaptupdatesudoaptinstallopenssl獲取公鑰:數字簽名驗證需要使用簽名者的公鑰。通常,公鑰會以文件的形式提供,例如public_key.pe

centos關機命令行 centos關機命令行 Apr 14, 2025 pm 09:12 PM

CentOS 關機命令為 shutdown,語法為 shutdown [選項] 時間 [信息]。選項包括:-h 立即停止系統;-P 關機後關電源;-r 重新啟動;-t 等待時間。時間可指定為立即 (now)、分鐘數 ( minutes) 或特定時間 (hh:mm)。可添加信息在系統消息中顯示。

Debian OpenSSL如何防止中間人攻擊 Debian OpenSSL如何防止中間人攻擊 Apr 13, 2025 am 10:30 AM

在Debian系統中,OpenSSL是一個重要的庫,用於加密、解密和證書管理。為了防止中間人攻擊(MITM),可以採取以下措施:使用HTTPS:確保所有網絡請求使用HTTPS協議,而不是HTTP。 HTTPS使用TLS(傳輸層安全協議)加密通信數據,確保數據在傳輸過程中不會被竊取或篡改。驗證服務器證書:在客戶端手動驗證服務器證書,確保其可信。可以通過URLSession的委託方法來手動驗證服務器

Debian Hadoop日誌管理怎麼做 Debian Hadoop日誌管理怎麼做 Apr 13, 2025 am 10:45 AM

在Debian上管理Hadoop日誌,可以遵循以下步驟和最佳實踐:日誌聚合啟用日誌聚合:在yarn-site.xml文件中設置yarn.log-aggregation-enable為true,以啟用日誌聚合功能。配置日誌保留策略:設置yarn.log-aggregation.retain-seconds來定義日誌的保留時間,例如保留172800秒(2天)。指定日誌存儲路徑:通過yarn.n

索尼證實PS5 Pro使用特製GPU 與AMD合作研發AI可能性 索尼證實PS5 Pro使用特製GPU 與AMD合作研發AI可能性 Apr 13, 2025 pm 11:45 PM

SonyInteractiveEntertainment(SIE,索尼互动娱乐)首席架构师MarkCerny公开更多次世代主机PlayStation5Pro(PS5Pro)硬体细节,包括性能升级的AMDRDNA2.x架构GPU,以及与AMD合作代号「Amethyst」的机器学习/人工智慧计划。PS5Pro性能提升的重点仍集中在更强大的GPU、先进的光线追踪与AI驱动的PSSR超解析度功能等3大支柱上。GPU採用客制化的AMDRDNA2架构,索尼将其命名为RDNA2.x,它拥有部分RDNA3架构才

Debian OpenSSL如何配置HTTPS服務器 Debian OpenSSL如何配置HTTPS服務器 Apr 13, 2025 am 11:03 AM

在Debian系統上配置HTTPS服務器涉及幾個步驟,包括安裝必要的軟件、生成SSL證書、配置Web服務器(如Apache或Nginx)以使用SSL證書。以下是一個基本的指南,假設你使用的是ApacheWeb服務器。 1.安裝必要的軟件首先,確保你的系統是最新的,並安裝Apache和OpenSSL:sudoaptupdatesudoaptupgradesudoaptinsta

See all articles