Rumah  >  Artikel  >  Peranti teknologi  >  AI larangan merokok tidak mengapa! Pengecaman merokok + pengecaman muka

AI larangan merokok tidak mengapa! Pengecaman merokok + pengecaman muka

WBOY
WBOYke hadapan
2023-04-14 12:49:021961semak imbas

Helo, semua.

Hari ini saya akan berkongsi dengan anda projek pengecaman merokok + pengecaman muka. Banyak tempat awam, tapak pengeluaran dan sekolah mempunyai larangan merokok. Ia masih perlu untuk melaksanakan larangan merokok dan membiarkan AI secara automatik mengenal pasti tingkah laku merokok dan mengenal pasti siapa yang merokok.

Gunakan algoritma pengesanan sasaran untuk menentukan tingkah laku merokok, mengekstrak muka perokok dan menggunakan algoritma pengecaman muka untuk menentukan siapa yang merokok. Idea ini agak mudah, tetapi butirannya masih sedikit menyusahkan.

Data latihan dan kod sumber yang digunakan dalam projek telah dibungkus. Masih sama seperti dulu, dapatkan di ruangan komen.

1. Kesan rokok

Saya menggunakan 5k data berlabel merokok sebagai data latihan

AI larangan merokok tidak mengapa! Pengecaman merokok + pengecaman muka

dan meletakkannya dalam direktori set data.

Latih model pengesanan sasaran YOLOv5.

Langkah pertama, salin data/coco128.yaml ke smoke.yaml, dan ubah suai direktori set data dan maklumat konfigurasi kategori

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

Langkah kedua, salin ./models/yolov5s ialah smoke.yaml​, ubah suai nc

nc: 1# number of classes

Langkah ketiga ialah memuat turun model pra-latihan yolov5s.pt dan letakkannya dalam direktori {yolov5}/weights

Laksanakan arahan berikut , latihan sudah cukup

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 larangan merokok tidak mengapa! Pengecaman merokok + pengecaman muka

Selepas latihan selesai, anda boleh melihat output berikut:

AI larangan merokok tidak mengapa! Pengecaman merokok + pengecaman muka

Telefon pun boleh.

Selepas latihan selesai, kedudukan terbaik.pt boleh didapati dan digunakan kemudian untuk pengesanan rokok.

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 larangan merokok tidak mengapa! Pengecaman merokok + pengecaman muka

Selepas dapat mengenal pasti rokok, kita masih perlu menentukan sama ada kita sedang merokok.

Anda boleh menggunakan bingkai pengesan rokok dan bingkai pengesanan mulut untuk mengira IOU untuk menilai secara terus terang, ia adalah untuk menentukan sama ada kedua-dua bingkai itu bersilang merokok.

AI larangan merokok tidak mengapa! Pengecaman merokok + pengecaman muka

Bingkai pengesan mulut, menggunakan mata kunci muka untuk mengenal pasti.

2. Pengecaman muka

Terdapat banyak model matang untuk algoritma pengecaman muka Kami tidak perlu melatihnya sendiri, kami hanya boleh memindahkan pangkalan data secara langsung.

Saya menggunakan perpustakaan dlib di sini, yang boleh mengenal pasti 68 perkara utama pada wajah dan mengekstrak ciri muka berdasarkan 68 perkara utama ini.

AI larangan merokok tidak mengapa! Pengecaman merokok + pengecaman muka

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)

pengesan_muka​ boleh mengesan muka dan mengembalikan bingkai pengesanan muka face_sp berdasarkan bingkai pengesanan muka dan mengenal pasti 68 titik utama muka.

Daripada 68 perkara utama ini, kami boleh mendapatkan bingkai pengesan mulut untuk menentukan sama ada anda merokok.

Akhir sekali, kami masih berharap untuk menggunakan algoritma pengecaman muka untuk mengenal pasti siapa yang merokok.

Langkah pertama ialah mengekstrak ciri muka

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​Kira vektor ciri untuk setiap muka berdasarkan kedudukan dan jarak antara 68 titik utama muka. Prinsip ini serupa dengan word2vec yang kami kongsi sebelum ini atau memetakan video ke vektor N-dimensi.

Langkah kedua ialah memasukkan muka sedia ada ke dalam pangkalan data wajah. Saya menyediakan 3 tingkah laku merokok dalam filem dan siri TV

AI larangan merokok tidak mengapa! Pengecaman merokok + pengecaman muka

Potong wajah daripada video, vektorkannya dan tuliskannya ke dalam pangkalan data wajah (digantikan dengan fail)

AI larangan merokok tidak mengapa! Pengecaman merokok + pengecaman muka

Langkah ketiga, selepas merokok berlaku, kita boleh memotong muka perokok, mengira vektor muka, membandingkannya dengan ciri pangkalan data muka, dan mencari wajah Serupa yang terbaik, kembalikan nama yang sepadan

AI larangan merokok tidak mengapa! Pengecaman merokok + pengecaman muka

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 '未知'

Terdapat banyak kawasan untuk pengembangan projek ini, contohnya: video yang saya sediakan hanya mempunyai satu muka, dan pemantauan sebenar mesti ada berbilang muka di dalamnya. Pada masa ini, anda boleh menggunakan algoritma MOT untuk menjejaki pejalan kaki, dan kemudian mengenal pasti setiap orang secara individu untuk merokok

Selain itu, anda boleh mencipta kawasan statistik yang berasingan untuk menyimpan tingkah laku merokok yang dikenal pasti dan menggunakannya sebagai bukti untuk amaran dan penalti.

Atas ialah kandungan terperinci AI larangan merokok tidak mengapa! Pengecaman merokok + pengecaman muka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam