Rumah > Peranti teknologi > AI > teks badan

AI larangan merokok tidak mengapa! Pengecaman merokok + pengecaman muka

WBOY
Lepaskan: 2023-04-14 12:49:02
ke hadapan
2039 orang telah melayarinya

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
Salin selepas log masuk

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

nc: 1# number of classes
Salin selepas log masuk

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
Salin selepas log masuk

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]
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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 '未知'
Salin selepas log masuk

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!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan