AI禁煙可還行!吸菸辨識+人臉識別
哈嘍,大家好。
今天跟大家分享一個吸菸辨識 人臉辨識的項目。很多公共場所、生產場所和學校,都有禁煙的要求,做一個禁煙的監控,讓AI自動識別吸煙行為,並識別是誰在吸煙,還是很有必要的。
用目標偵測演算法判斷吸菸行為,擷取吸菸者的人臉,用人臉辨識演算法判斷誰在吸菸。想法比較簡單,但細節處理起來還是稍微麻煩。
項目用到訓練資料和原始碼,都已經打包好了。還是老樣子,留言區獲取。
1. 檢測香菸
我用了 5k 張抽煙的標記數據,作為訓練數據
放在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
訓練完成後可以看到如下輸出:
#準召還湊合。
訓練完成後,可以找到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]
能辨識到煙後,我們還需要判斷,目前是否正在吸菸。
可以用香菸偵測框與嘴部偵測框計算IOU來判斷,說白了,就是判斷這兩框是否有交集,若有,則認為目前正在吸菸。
嘴部偵測框,使用人臉關鍵點來辨識。
2. 人臉辨識
人臉辨識演算法有很多成熟的模型,我們不需要自己訓練,直接調庫即可。
我這裡用的是dlib函式庫,它可以辨識人臉 68 個關鍵點,並根據這 68 個關鍵點,提取人臉特徵。
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 個影視劇中的吸煙行為
從影片中裁剪出人臉,向量化後,寫入人臉資料庫(用檔案取代)
第三步,發生吸菸行為後,我們可以裁剪出吸菸者的人臉,併計算人臉向量,與人臉資料庫的特徵進行比對,找到最相似的人臉,返回對應的名字
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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

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

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

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

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

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

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

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

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