Biểu đồ độ chính xác qua kiểm tra trong quá trình huấn luyện

Một phần của tài liệu Nhận dạng cảm xúc thông qua khuôn mặt dùng mạng nơ ron tích chập CNN (Trang 50)

Bảng 4.1: So sánh độ chính xác qua kiểm tra giữa hai mơ hình.

Mơ hình Mơ hình cá nhân thực hiện Mơ hình trong [1]

Độ chính xác kiểm tra ( % ) 64% 62%

Độ chính xác qua kiểm tra dùng để đánh giá mơ hình sau huấn luyện. Kết quả thể hiện trong hình 4.2. Đường chéo thuận trên ma trận đậm hơn so với các điểm còn lại thể hiện sự

tương quan giữa cảm xúc đầu vào và dự đốn có sự tương quan lớn. Các cảm xúc “vui”,

“bình thường” và “ngạc nhiên” có độ chính xác cao do tập mẫu có số lượng dùng huấn

luyện lớn, đồng thời đây cũng là các cảm xúc dễ làm, ít sự tương đồng với các cảm xúc khác. Cảm xúc “khó chịu” tuy có độ chính xác cao nhưng do cảm xúc này có số lượng tập

mẫu huấn luyện thấp, các tập riêng dùng để kiểm tra khơng nhiều, nên độ chính xác đạt

được khá cao lên đến 0.6. Ba cảm xúc còn lại bao gồm “giận dữ”, “sợ hãi” và “buồn” có tỉ lệ thấp do có nhiều sự tương đồng tại các điểm trên khuôn mặt dẫn đến việc kiểm tra gây nhầm lẫn, khiến cho sự đánh giá của máy tính sai lệch khá nhiều. Trong nghiên cứu [1], tác giả cho rằng để tăng độ chính xác lên đến 90% cần tập mẫu, tập kiểm tra phải nằm trong điều kiện lý tưởng của phịng thí nghiệm (ánh sáng hồn hảo, máy ảnh ngang tầm mắt và máy ảnh đối diện với các điểm nhận dạng trên khuôn mặt). Tuy tập dữ liệu của cá nhân thực hiện chưa đạt được các điều kiện như trên nhưng sau qua trình huấn luyện, cá nhân nhận thấy đường chéo trên ma trận tương quan đậm hơn so với nhưng điểm còn lại như vậy tập dữ liệu có thể được đánh giá là tương đối tốt.

Hình 4.3: Ma trận tương quan của mơ hình với ngõ vào là dữ liệu tập riêng

Kết quả kiểm tra tập riêng được thể hiện ở bảng 4.2 bên dưới. Đem kết quả sau khi

kiểm tra so sánh với đề tài đã nghiên cứu [1], độ chính xác qua kiểm tra của mơ hình của cá nhân thực hiện (trong tệp tin “_emotion_training.log”) và đề tài nghiên cứu [1] thể hiện ở bảng 4.3.

Bảng 4.2: Đánh giá tỉ lệ nhận dạng cảm xúc khi kiểm tra tập riêng.

Bảng 4.3: So sánh độ chính xác giữa hai mơ hình.

Mơ hình Mơ hình cá nhân thực hiện Mơ hình trong [1]

Độ chính xác ( % ) 62% 57%

4.2 ỨNG DỤNG NHẬN DẠNG CẢM XÚC THÔNG QUA KHUÔN MẶT TRÊN KIT RASPBERRY PI 4 RASPBERRY PI 4

Hình 4.4: Camera kết nối với kit raspberry Pi 4

Sau quá trình huấn luyện và kiểm tra mơ hình, cá nhân thực hiện lấy kết quả đạt được xây dựng một ứng dụng trên kit Raspberry Pi 4 với sự hỗ trợ thiết kế giao diện của bộ cơng cụ GUI Tkinter.

Hình 4.5: Giao diện của ứng dụng nhận dạng cảm xúc

- Nút nhấn “Chọn file” dùng để chọn file cần được nhận dạng, file được chọn với hai định dạng chính. Nếu là hình ảnh thì file đó có đi “.jpg” hoặc “.png”, nếu là video offline thì file có đi “.mp4”. Khi đã chọn được file, ứng dụng sẽ thông báo đến người dùng tin nhắn “Đã chọn file!!!”.

- Nút nhấn “Nhận dạng” dùng để nhận dạng cảm xúc cho file đã chọn ở nút nhấn “Chọn file”. Đối với hình ảnh sau khi nhận dạng được biểu diễn bằng cửa sổ và kết quả sẽ được lưu vào folder có tên “result”.

- Nút nhấn “Trực tuyến” dùng để nhận dạng cảm xúc đối với luồng video trực tuyến.

- Nút nhấn “Thốt” dùng để đóng ứng dụng.

Hình 4.6: Thơng báo khi đã chọn được file.

 Nhận dạng cảm xúc của 7 loại cảm xúc được nghiên cứu trong để tài này với những

Hình 4.7: Nhận dạng cảm xúc “ bình thường ”

Hình 4.8: Nhận dạng cảm xúc “ bình thường ”từ một ảnh bất kỳ được tải lên hệ thống Hình 4.7 và 4.8 miêu tả nhận dạng cảm xúc bình thường với độ chính xác khá cao lên Hình 4.7 và 4.8 miêu tả nhận dạng cảm xúc bình thường với độ chính xác khá cao lên đến 77.95% và 88.45% do các chi tiết biểu cảm cảm xúc bình thường trên khn mặt khá rõ ràng.

Hình 4.9: Nhận dạng cảm xúc “ vui vẻ ”

Hình 4.9 miêu tả nhận dạng cảm xúc vui vẻ với độ chính xác lên đến 93.98% do các chi tiết biểu cảm cảm xúc vui vẻ trên khuôn mặt khá chi tiết như miệng và các hàm răng được mở ra và giãn rộng, các chi tiết trên vùng má và lơng mày cũng có sự thay đổi như cong hơn nên hệ thống nhận dạng có độ chính xác tương đối tốt.

Hình 4.10: Nhận dạng cảm xúc “ ngạc nhiên ”

Hình 4.10 miêu tả nhận dạng cảm xúc ngạc nhiên với độ chính xác lên đến 67.6% do các chi tiết biểu cảm cảm xúc ngạc nhiên trên khuôn mặt khá cụ thể như lông mày nâng lên, mắt mở to, há miệng nên hệ thống nhận dạng có độ chính xác tương đối tốt so với tập mẫu đã huấn luyện.

1Hình 4.11: Nhận dạng cảm xúc “ buồn ”

Hình 4.11 miêu tả nhận dạng cảm xúc buồn với độ chính xác lên đến 63.47% do các chi tiết biểu cảm cảm xúc buồn trên khuôn mặt khá chi tiết như đi mí mắt trên sụp xuống, mắt mất tập trung,và diện tích bên trong mắt bị thu hẹp, ngồi ra gì má nâng cao lên. Các chi biểu cảm trên khuôn mặt cụ thể như đã huấn luyện nên hệ thống nhận dạng tương đối tốt.

Hình 4.12: Nhận dạng cảm xúc “ giận dữ ”

Hình 4.12 miêu tả nhận dạng cảm xúc giận dữ với độ chính xác lên đến 83.27% do các chi tiết biểu cảm cảm xúc giận dữ trên khuôn mặt khá rõ ràng như lông mày nhướng lên và kéo gần lại nhau và cong cao hơn, mí mắt trên kéo lên, mí mắt dưới căng, miệng hơi kéo sang hai bên và há rộng để hở một phần răng. Các cho tiết biểu cảm trong môi trường tốt và biểu cảm rõ ràng nên hệ thống nhận dạng có độ chính xác tương đối tốt.

Hình 4.13: Nhận dạng cảm xúc “ khó chịu ”

Hình 4.13 miêu tả nhận dạng cảm xúc khó chịu với độ chính xác lên đến 85.79% do các chi tiết biểu cảm cảm xúc khó chịu trên khn mặt khá rõ ràng như nhăn sống mũi và môi trên và mơi dưới được thu hẹp, hai mắt nhíu lại , vùng diện tích đơi mắt và miệng được thu hẹp khá lớn, bên cạnh đó lơng mày cũng có sự thay đổi như cong ở mức độ trung bình. Các chi tiết trên làm hệ thống nhận dạng có độ chính xác tương đối tốt.

Hình 4.14: Nhận dạng cảm xúc “ sợ hãi ”

Hình 4.14 miêu tả nhận dạng cảm xúc sợ hãi với độ chính xác chỉ 45.82% do đây là cảm xúc biểu cảm khó, dễ nhầm lẫn với nhiều cảm xúc khác. Ngoài ra các chi tiết biểu cảm gần có sự tương đồng với cảm xúc buồn.

 Nhận dạng cảm xúc sai đối với một số hình ảnh từ hình 4.15 đến hình 4.19.

Hình 4.15: Nhận dạng cảm xúc “ bình thường ” thành cảm xúc “ buồn ” do biểu cảm không rõ ràng

Hình 4.16: Nhận dạng cảm xúc “ bình thường ” thành cảm xúc “ sợ hãi ” do cường độ sáng quá cao và ảnh được nhận dạng bị ngược sáng.

Hình 4.17: Khơng nhận dạng được khn mặt do góc nghiêng và các đặc trưng trên khn mặt bị mất.

Hình 4.18: Nhận dạng cảm xúc “ bình thường ” thành cảm xúc “ sợ hãi ” do cường độ ánh sáng trên khuôn mặt yếu.

Hình 4.19: Nhận dạng cảm xúc “ bình thường ” thành cảm xúc “ buồn ” do khuôn mặt bị thay đổi góc nghiêng đồng thời khn mặt khơng ngang tầm và chính diện với camera

Nhận xét: Trong quá trình nhận dạng cảm xúc , các cảm xúc có thể bị nhận dạng sai do

các ảnh hưởng sau:

- Điều kiện cường độ sáng quá thấp hoặc quá cao

- Sự nhẫm lẫn giữa các cảm xúc có đặc điểm tương đối giống nhau.

- Biểu cảm không rõ ràng.

CHƯƠNG 5

KẾT LUẬN VÀ KIẾN NGHỊ 5.1 KẾT LUẬN

Đề tài đã ứng dụng thành công phương pháp “máy học” trong xây dựng và huấn luyện mạng CNN với tập mẫu FERC-2013 [2], dùng để nhận dạng cảm xúc khuôn mặt từ các nguồn khác nhau như ảnh chân dung, video có sẵn và luồng video trực tiếp từ webcam.

Ứng dụng có thể nhận dạng đầy đủ bảy cảm xúc, tốc độ xử lý nhanh. Tuy nhiên, ứng dụng vẫn còn nhiều hạn chế trong việc nhận dạng cảm xúc, xảy ra sự nhầm lẫn giữa một vài cảm xúc do biểu cảm khuôn mặt không rõ ràng. Nguồn đầu vào bị nhiễu do các yếu tố ngoại quan như thiếu ánh sáng hoặc cường độ sáng quá cao dẫn đến việc nhận dạng sai cảm xúc. Thêm vào đó, sự thay đổi góc cạnh cũng là một trong những yếu tố khiến ứng dụng không thể nhận dạng được khn mặt. Hạn chế lớn nhất đó là ứng dụng chỉ có thể nhận dạng được một khn mặt trong một khung hình từ luồng trực tuyến.

5.2 KIẾN NGHỊ

Cá nhận thực hiện đề tài đưa ra một số hướng phát triển của đề tài:

 Tăng số lượng tập mẫu về biểu cảm có độ phức tạp cao hơn nhằm để hệ thống

đánh giá tốt hơn và chính xác hơn những biểu cảm phức tạp của khn mặt.

 Tăng độ chính xác của mơ hình bằng thuật tốn Deep Learning cũng như triển khai

đến những mơ hình mạng học sâu tiên tiến hơn.

 Xây dựng và phát triển mơ hình phần cứng tốt hơn với tốc độ xử lý nhanh hơn và

ổn định hơn khi mà hệ thống phải tính tốn phức tạp với mơ hình mạng nơ-ron tích chập.

 Triển khai và phát triển hệ thống để áp dụng vào thực tế để đánh giá mức độ hài

lòng của khách hàng khi mua sản phẩm ở cửa hàng hoặc đánh giá biểu cảm của khuôn mặt khi phỏng vấn nhân viên.

TÀI LIỆU THAM KHẢO

[1] Dan Duncan, Gautam Shine, Chris English, “Facial Emotion Recognition in Real

time”, Stanford University, 2016.

[2] Competition “Challenges in Representation Learning: Facial Expression Recognition

Challenge”,https://www.kaggle.com/c/challenges-in-representationlearning-facial-

expression-recognition-challenge, [Ngày truy cập 29/12/2019].

[3] Anand S. Rao, Gerard Verweij. “Sizing the prize: What’s the real value of AI for your

business and how can you capitalize”. PwC report, 2017.

[4] Kaustubh Dewoolkar, Gaurav Bhole, Arjun Mehta, Abhishek Choudhari, “Facial

expression recognition using image processing”, Bachelor of Engineering, Rizvi College

of Engineering, 2013-2014.

[5] Moon Hwan Kim, Yuong Hoon Jo, “Emotion Detection Algorithm Using Frontal Face

Image”, KINTEX, Gyeonggi-Do, Korea, Fer. 2014.

[6] Nguyễn Thị Thanh Vân, “Nghiên cứu nhận dạng biểu cảm mặt người trong tương tác

người máy”, PhD thesis, Đại học Hàng Hải Việt Nam. Hải Phòng, 2016.

[7] Alex Krizhevsky, Ilya Sutskever and Geoffrey E. Hinton, “ImageNet Classification with

Deep Convolutional Neural Networks”, University of Toronto, Aug. 2010.

[8] Keiron O’Shea and Ryan Nash, “An Introduction to Convolutional Neural Networks”, Aberystwyth University, Dec. 2015.

[9] Khanh Nguyen and Hieu Pham, “Những Vấn đề Cơ bản về Mạng Neuron”, University of Maryland and Stanford University, Stanford.

[10] Patrick Lucey và cộng sự, “The Extended Cohn-Kanade Dataset (CK+): A complete

dataset for action unitand emotion-specified expression”, in 2010 IEEE Computer Society

Conference on Computer Vision and Pattern Recognition – Workshops, San Francisco, CA, USA, 09 August 2010.

[11] Lương Mạnh Bá, Nguyễn Thanh Thủy, “Nhập môn xử lý ảnh số”. Hà Nội, Việt Nam: Nhà xuất bản khoa học kỹ thuật, 2006.

[12] Saad ALBAWI,TareqAbedMOHAMMED, “Understanding of a Convolutional

Neural Network”. Department of Computer Engineering Faculty of Engineering and

Architecture Istanbul Kemerburgaz University Istanbul, Turkey,2017.

[13] N. Kwak, “Introduction to Convolutional Neural Networks ( CNNs)”, 2016.

[14] R. E. Turner, “Lecture 14 : Convolutional neural networks for computer vision”, 2014.

[15] Neeraj Kumar, Alexander C Berg, Peter N Belhumeur, and Shree K Nayar. “Attribute and simile classifiers for face verification”. In Computer Vision, 2009 IEEE 12th International Conference oti, pages 365-372. IEEE, 2009.

[16] Richard F.Lyon. “A Brief History of ‘Pixel’”, FoveonInc., 2820 San Tom as Expressway, Santa Clara CA 95051.

[17] Robin Milner, Mads Tofte, Robert Harper. “The Definition of Standard ML”, Lab oratory for Foundations of Computer Science Department of Computer Science University of Edinburgh.

[18] Florian Schroff, Dmitrv Kalcnichenko, and James Philbin. “Facenet: A unified

embedding for face recognition and clustering In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition”, pages 815-823,2015.

PHỤ LỤC A

MÃ NGUỒN CHƯƠNG TRÌNH

from tkinter import * from tkinter import ttk

from tkinter import messagebox from PIL import ImageTk, Image

from tkinter.filedialog import askopenfilename from keras.preprocessing.image import img_to_array from keras.models import load_model

import numpy as np import imutils import cv2 import glob import os root = Tk() StringA = StringVar() filename ='' def open_file():

filetypes =(("All Files","*.*"),("Video", "*.mp4"),("Image", "*.jpg"),("Image", "*.png")),

title = "Choose a file." )

StringA.set(filename)

messagebox.showinfo("Thông báo", "Đã chọn file!!!!")

pass def detect_realtime_video(): import detect_real_time_video def detect_image(): image = StringA.get() imagename = os.path.basename(image) imgname = os.path.splitext(imagename)[0] detection_model_path = 'haarcascade_files/haarcascade_frontalface_default.xml' emotion_model_path = 'models/_mini_XCEPTION.106-0.65.hdf5' face_detection = cv2.CascadeClassifier(detection_model_path)

EMOTIONS = ["gian du" ,"kho chiu","so hai", "vui ve", "buon", "ngac nhien","binh thuong"] orig_frame = cv2.imread(image) frame = cv2.imread(image,0) faces = face_detection.detectMultiScale(frame,scaleFactor=1.1,minNeighbors=5,minSize=(30,30 ),flags=cv2.CASCADE_SCALE_IMAGE) if len(faces) > 0:

faces = sorted(faces, reverse=True,key=lambda x: (x[2] - x[0]) * (x[3] - x[1]))[0] (fX, fY, fW, fH) = faces roi = frame[fY:fY + fH, fX:fX + fW] roi = cv2.resize(roi, (48, 48)) roi = roi.astype("float") / 255.0 roi = img_to_array(roi)

roi = np.expand_dims(roi, axis=0)

preds = emotion_classifier.predict(roi)[0] emotion_probability = np.max(preds)

cv2.putText(orig_frame, label, (fX, fY - 10), cv2.FONT_HERSHEY_SIMPLEX, 2.5, (0, 0, 255), 3)

cv2.putText(orig_frame, str(round(emotion_probability*100,2)) + '%', (0,450), cv2.FONT_HERSHEY_SIMPLEX, 3.5, (0, 0, 255), 3)

cv2.putText(orig_frame, "Emotion Detection" , (0,50),

cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

cv2.putText(orig_frame, "gian du" + ' ' + str(round(preds[0]*100,2)) + '%', (0,90), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

cv2.putText(orig_frame, "kho chiu" + ' ' + str(round(preds[1]*100,2)) + '%', (0,130), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

cv2.putText(orig_frame, "so hai" + ' ' + str(round(preds[2]*100,2)) + '%', (0,170), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

cv2.putText(orig_frame, "vui ve" + ' ' + str(round(preds[3]*100,2)) + '%', (0,210), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

cv2.putText(orig_frame, "buon" + ' ' + str(round(preds[4]*100,2)) + '%', (0,250), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

cv2.putText(orig_frame, "ngac nhien"+ ' ' + str(round(preds[5]*100,2)) + '%', (0,290), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

cv2.putText(orig_frame, "binh thuong" + ' ' + str(round(preds[6]*100,2)) + '%', (0,330), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

cv2.imwrite('result/'+ imgname + '_' + label + ".jpg",orig_frame) cv2.imshow('Detect_Image',orig_frame) cv2.waitkey(0) cv2.destroyAllWindows() return def detect_video(): video = StringA.get() detection_model_path = 'haarcascade_files/haarcascade_frontalface_default.xml' emotion_model_path = 'models/_mini_XCEPTION.75-0.64.hdf5' face_detection = cv2.CascadeClassifier(detection_model_path)

emotion_classifier = load_model(emotion_model_path, compile=False)

EMOTIONS = ["gian du" ,"kho chiu","so hai", "vui ve", "buon", "ngac nhien","binh thuong"] cv2.namedWindow('Video') cap = cv2.VideoCapture(video) while True: frame = cap.read()[1] frame = imutils.resize(frame,width=580)

faces= face_detection.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=5,minSize=(30,30), flags=cv2.CASCADE_SCALE_IMAGE) frameClone = frame.copy() if len(faces) > 0:

faces = sorted(faces, reverse=True,

key=lambda x: (x[2] - x[0]) * (x[3] - x[1]))[0] (fX, fY, fW, fH) = faces roi = gray[fY:fY + fH, fX:fX + fW] roi = cv2.resize(roi, (48, 48)) roi = roi.astype("float") / 255.0 roi = img_to_array(roi)

roi = np.expand_dims(roi, axis=0)

preds = emotion_classifier.predict(roi)[0] emotion_probability = np.max(preds) label = EMOTIONS[preds.argmax()]

for (i, (emotion, prob)) in enumerate(zip(EMOTIONS, preds)):

text = "{}: {:.2f}%".format(emotion, prob * 100)

w = int(prob * 300) cv2.rectangle(frameClone, (7, (i * 35) + 5),(w, (i * 35) + 35), (0, 0, 255), -1) cv2.putText(frameClone, text, (10, (i * 35) + 23),cv2.FONT_HERSHEY_SIMPLEX, 0.45,(255, 255, 255), 2) cv2.putText(frameClone, label, (fX, fY - 10),cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 255), 2) cv2.rectangle(frameClone, (fX, fY), (fX + fW, fY + fH),(0, 0, 255), 2) cv2.imshow('video', frameClone) if cv2.waitKey(1) & 0xFF == ord('q'):

break cap.release() cv2.destroyAllWindows() return def label_img(img): word_label = img.split('.',1)[-1]

elif word_label == 'png': return 0 elif word_label == 'mp4': return 1 def exit_app(): root.destroy() ######################################################################## ######################################################################## ################################################################### # chữ viết

Title = root.title( "Emotion Detection")

label_1 = ttk.Label(root, text="TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HỒ CHÍ MINH",foreground = "blue",font = "times 16 bold ")

label_2 = ttk.Label(root, text="KHOA ĐÀO TẠO CHẤT LƯỢNG CAO",foreground = "blue",font = "times 16 bold")

label_3 = ttk.Label(root, text="NGHÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ - TRUYỀN THÔNG",foreground = "blue",font = "times 16 bold")

label_4 = ttk.Label(root, text="ĐỀ TÀI NGHIÊN CỨU KHOA HỌC NĂM HỌC 2019- 2020",foreground = "red",font = "times 20 bold")

label_5 = ttk.Label(root, text="NHẬN DẠNG CẢM XÚC THÔNG QUA KHUÔN MẶT \n DÙNG MẠNG NƠ-RON TÍCH CHẬP CNN",foreground = "red",font = "times 26 bold")

label_6 = ttk.Label(root, text="GVHD: ThS HUỲNH THỊ THU HIỀN",foreground = "blue",font = "times 16 bold")

label_7 = ttk.Label(root, text="SVTH: NGUYỄN VĂN PHÚC",foreground = "blue",font = "times 16 bold")

label_8 = ttk.Label(root, text="Chọn file Nhận dạng Trực tuyến Thoát",foreground = "black",font = "times 14 bold")

label_1.pack() label_2.pack() label_3.pack() label_4.pack() label_4.place(x=400,y=130) label_5.pack() label_5.place(x=300,y=200) label_6.pack() label_6.place(x=650,y=350) label_7.pack() label_7.place(x=650,y=380)

label_8.pack() label_8.place(x=645,y=485) ######################################################################## ######################################################################## ################################################################### photo1 = Image.open("icons/click.png")

photo1 = photo1.resize((60, 60), Image.ANTIALIAS) photo1 = ImageTk.PhotoImage(photo1)

a = Button(root,image = photo1,command=open_file) a.pack()

a.place(x = 650, y = 525)

photo2 = Image.open("icons/start.png")

photo2 = photo2.resize((60, 60), Image.ANTIALIAS) photo2 = ImageTk.PhotoImage(photo2)

filename1 = StringA.get() name=label_img(filename1) if name == 0:

b = Button(root,image = photo2,command = detect_image) else:

b = Button(root,image = photo2,command = detect_video)

b.pack()

b.place(x = 760, y = 525)

photo3 = Image.open("icons/start_1.png")

photo3 = photo3.resize((60, 60), Image.ANTIALIAS) photo3 = ImageTk.PhotoImage(photo3)

c = Button(root,image = photo3,command=detect_realtime_video) c.pack()

c.place(x = 870, y = 525)

photo4 = Image.open("icons/off.png")

photo4 = photo4.resize((60, 60), Image.ANTIALIAS) photo4 = ImageTk.PhotoImage(photo4) c = Button(root,image = photo4,command=exit_app) c.pack() c.place(x = 980, y = 525) ######################################################################## ######################################################################## ###################################################################

im1=Image.open("icons/ute.png")

im1 = im1.resize((125, 150), Image.ANTIALIAS) im1=ImageTk.PhotoImage(im1) label_im = Label(image=im1) label_im.image = im1 label_im.pack() label_im.place(x=235, y=0) im2=Image.open("icons/fhq.png")

im2 = im2.resize((150, 150), Image.ANTIALIAS) im2=ImageTk.PhotoImage(im2) label_im = Label(image=im2) label_im.image = im2 label_im.pack() label_im.place(x=1105, y=0) im3= Image.open("icons/emotion.jpg")

im3 = im3.resize((300, 300), Image.ANTIALIAS) im3 = ImageTk.PhotoImage(im3)

label_im = Label(image=im3) label_im.image = im3

label_im.place(x=235, y=320) menubar = Menu(root) w, h = root.winfo_screenwidth(), root.winfo_screenheight() root.geometry("%dx%d+0+0" % (w, h)) root.config(menu=menubar) root.mainloop()

Một phần của tài liệu Nhận dạng cảm xúc thông qua khuôn mặt dùng mạng nơ ron tích chập CNN (Trang 50)

Tải bản đầy đủ (PDF)

(82 trang)