├── img
├── Demo.png
├── Flowchart .png
├── face alignment.png
└── facial_landmark.png
├── requirements.txt
├── README.md
├── lie_GUI.py
├── models.py
└── Qt_design.py
/img/Demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/come880412/Deception_detection/HEAD/img/Demo.png
--------------------------------------------------------------------------------
/img/Flowchart .png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/come880412/Deception_detection/HEAD/img/Flowchart .png
--------------------------------------------------------------------------------
/img/face alignment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/come880412/Deception_detection/HEAD/img/face alignment.png
--------------------------------------------------------------------------------
/img/facial_landmark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/come880412/Deception_detection/HEAD/img/facial_landmark.png
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | pytorch = 1.6.0
2 | pyqt = 5.12.3
3 | numpy = 1.18.5
4 | opencv = 4.3.0
5 | scikit-learn = 0.23.1
6 | joblib = 0.15.1
7 | imageio = 2.8.0
8 | skimage = 0.16.2
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Deception detection (Pytorch)
2 | ICSSE 2020 : Face Expression and Tone of Voice for Deception System (Award of best student paper)
3 |
4 | ## Flowchart of deception detection
5 | The overall flowchart for deception detection is illustrated below. We combine many features into a vector and then apply SVM to classification.
6 |
7 |
8 |
9 |
10 | ## Face alignment
11 | Because the face can be many angles, we need to align the face before using it.
12 |
13 |
14 |
15 |
16 | ## User instrctions
17 | Our deception detection system comprises four parts:
18 | 1. 3D landmarks displacement
19 | 2. Emotion Unit
20 | 3. Action Unit
21 | 4. Emotion Audio unit
22 |
23 | ### Install Packages
24 | Please see the ```requirements.txt``` for more details.
25 |
26 | ## Pre-trained models
27 | - Please download the pre-trained models before you run the code
28 |
29 |
30 | ## Dataset
31 | ### Real-life trial dataset:
32 | 121 videos including 61 deceptive videos and 60 truth videos [related paper](https://web.eecs.umich.edu/~zmohamed/PDFs/Trial.ICMI.pdf)
33 | ### Bag-of-lies dataset:
34 | 325 videos including 162 deceptive videos and 163 truth videos [related paper](https://openaccess.thecvf.com/content_CVPRW_2019/papers/CV-COPS/Gupta_Bag-Of-Lies_A_Multimodal_Dataset_for_Deception_Detection_CVPRW_2019_paper.pdf)
35 | ### MSPL-YTD dataset:
36 | 145 videos including 62 deceptive videos and 83 truth videos
37 |
38 | - Note: If you would like access to the above datasets, please contact the authors who provided the dataset, respectively.
39 | ## GUI demo
40 | 
41 | ## Inference
42 | ```python=
43 | python lie_GUI.py
44 | ```
45 | - If you have any implementation problem, feel free to E-mail me! come880412@gmail.com
46 |
--------------------------------------------------------------------------------
/lie_GUI.py:
--------------------------------------------------------------------------------
1 | import time
2 | import cv2
3 | import numpy as np
4 | import sys
5 | import os
6 | import argparse
7 | from random import sample
8 | #Landmark load model
9 | import yaml
10 | #PyQt5
11 | from PyQt5 import QtCore
12 | from PyQt5.QtCore import pyqtSlot, QTimer, QThread, QSize, pyqtSignal
13 | from PyQt5.QtGui import QImage, QPixmap, QIcon, QBrush
14 | from PyQt5.QtWidgets import QDialog, QApplication, QFileDialog, QGraphicsOpacityEffect
15 | from PyQt5 import QtGui
16 | import Qt_design as ui
17 | from threading import Thread
18 | #torch
19 | import torch
20 | import torchvision
21 | #image transform
22 | import skimage
23 | import imageio
24 | from skimage import img_as_ubyte
25 | from model.Facedetection.config import device
26 | #face detection
27 | from model.Facedetection.utils import align_face, get_face_all_attributes, draw_bboxes
28 | from model.Facedetection.RetinaFace.RetinaFaceDetection import retina_face
29 | #Featrue extraction
30 | import model.Emotion.lie_emotion_process as emotion
31 | import model.action_v4_L12_BCE_MLSM.lie_action_process as action
32 | from model.action_v4_L12_BCE_MLSM.config import Config
33 | #Landmark
34 | # from model.Landmark.TDDFA import TDDFA
35 | # from model.Landmark.utils.render import render
36 | # from model.Landmark.utils.functions import cv_draw_landmark, get_suffix
37 | # save model
38 | from joblib import dump, load
39 |
40 | parser = argparse.ArgumentParser()
41 | #Retina
42 | parser.add_argument('--len_cut', default=30, type=int, help= '# of frames you want to pred')
43 | parser.add_argument('-m', '--trained_model', default='./model/Facedetection/RetinaFace/weights/mobilenet0.25_Final.pth',
44 | type=str, help='Trained state_dict file path to open')
45 | parser.add_argument('--network', default='mobile0.25', help='Backbone network mobile0.25 or resnet50')
46 | parser.add_argument('--cpu', action="store_true", default=False, help='Use cpu inference')
47 | parser.add_argument('--confidence_threshold', default=0.02, type=float, help='confidence_threshold')
48 | parser.add_argument('--top_k', default=3000, type=int, help='top_k')
49 | parser.add_argument('--nms_threshold', default=0.4, type=float, help='nms_threshold')
50 | parser.add_argument('--keep_top_k', default=3, type=int, help='keep_top_k')
51 | parser.add_argument('--save_image', action="store_true", default=True, help='show detection results')
52 | parser.add_argument('--vis_thres', default=0.6, type=float, help='visualization_threshold')
53 | parser.add_argument('--gpu_num', default= "0", type=str, help='GPU number')
54 | #Landmark
55 | parser.add_argument('-c', '--config', type=str, default='./model/Landmark/configs/mb1_120x120.yml')
56 | parser.add_argument('--mode', default='gpu', type=str, help='gpu or cpu mode')
57 | parser.add_argument('-o', '--opt', type=str, default='2d', choices=['2d', '3d'])
58 | # Emotion
59 | parser.add_argument('--at_type', '--attention', default=1, type=int, metavar='N',help= '0 is self-attention; 1 is self + relation-attention')
60 | parser.add_argument('--preTrain_path', '-pret', default='./model/Emotion/model112/self_relation-attention_AFEW_better_46.0733_41.2759_12.tar', type=str, help='pre-training model path')
61 |
62 | args = parser.parse_args()
63 | os.environ['CUDA_VISIBLE_DEVICES'] = args.gpu_num
64 |
65 | #load model
66 | Retina = retina_face(crop_size = 224, args = args) # Face detection
67 | Emotion_class = emotion.Emotion_FAN(args = args)
68 | Action_class = action.Action_Resnet(args= Config())
69 | SVM_model = load('./model/SVM_model/se_res50+EU/split_svc_acc0.720_AUC0.828.joblib')
70 | print('model is loaded')
71 | class Landmark:
72 | def __init__(self,im,bbox,cfg,TDDFA,color):
73 | self.cfg = cfg
74 | self.tddfa = TDDFA
75 | self.boxes = bbox
76 | self.image = im
77 | self.color = color
78 |
79 | def main(self,index):
80 | dense_flag = args.opt in ('3d',)
81 | pre_ver = None
82 | self.boxes = [self.boxes[index]]
83 | param_lst, roi_box_lst = self.tddfa(self.image, self.boxes)
84 | ver = self.tddfa.recon_vers(param_lst, roi_box_lst, dense_flag=dense_flag)[0]
85 | # refine
86 | param_lst, roi_box_lst = self.tddfa(self.image, [ver], crop_policy='landmark')
87 | ver = self.tddfa.recon_vers(param_lst, roi_box_lst, dense_flag=dense_flag)[0]
88 | pre_ver = ver # for tracking
89 |
90 | if args.opt == '2d':
91 | res = cv_draw_landmark(self.image, ver,color=self.color)
92 | elif args.opt == '3d':
93 | res = render(self.image, [ver])
94 | else:
95 | raise Exception(f'Unknown opt {args.opt}')
96 |
97 | lnd = ver.T
98 | # D1_i = np.sqrt(np.square(lnd[61][0]-lnd[67][0]) + np.square(lnd[61][1]-lnd[67][1]))
99 | # D1_o = np.sqrt(np.square(lnd[50][0]-lnd[58][0]) + np.square(lnd[50][1]-lnd[58][1]))
100 | # D2_i = np.sqrt(np.square(lnd[62][0]-lnd[66][0]) + np.square(lnd[62][1]-lnd[66][1]))
101 | # D2_o = np.sqrt(np.square(lnd[51][0]-lnd[57][0]) + np.square(lnd[51][1]-lnd[57][1]))
102 | # D3_i = np.sqrt(np.square(lnd[63][0]-lnd[65][0]) + np.square(lnd[63][1]-lnd[65][1]))
103 | # D3_o = np.sqrt(np.square(lnd[52][0]-lnd[56][0]) + np.square(lnd[52][1]-lnd[56][1]))
104 | res = res[int(roi_box_lst[0][1]):int(roi_box_lst[0][3]), int(roi_box_lst[0][0]):int(roi_box_lst[0][2])]
105 | # pm_ratio_1 = D1_i / D1_o
106 | # pm_ratio_2 = D2_i / D2_o
107 | # pm_ratio_3 = D3_i / D3_o
108 | # print('pm1:',pm_ratio_1)
109 | # print('pm2:',pm_ratio_2)
110 | # print('pm3:',pm_ratio_3)
111 | if res.shape[0] != 0 and res.shape[1] != 0:
112 | img_res = cv2.resize(res,(224,224))
113 | else:
114 | img_res = np.array([None])
115 | return img_res
116 |
117 | #AU_pred thread
118 | class AU_pred(QThread):
119 | trigger = pyqtSignal(list,list)
120 | def __init__ (self,image):
121 | super(AU_pred ,self). __init__ ()
122 | self.face = image
123 | def run(self):
124 | logps, emb = Action_class._pred(self.face,Config)
125 | self.trigger.emit(emb.tolist(),logps.tolist())
126 |
127 | class show(QThread):
128 | trigger = pyqtSignal(list,list,int)
129 | def __init__ (self, frame_list ,frame_AU,log):
130 | super(show,self). __init__ ()
131 | self.frame_embed_list = frame_list
132 | self.frame_emb_AU = frame_AU
133 | self.log = log
134 | def pred(self):
135 | #Action calculation
136 | AU_list = self.log.tolist()[0]
137 | for index,i in enumerate(AU_list):
138 | if i >= 0.01:
139 | AU_list[index] = 1
140 | else:
141 | AU_list[index] = 0
142 |
143 | pred_score, self_embedding, relation_embedding = Emotion_class.validate(self.frame_embed_list) # Emotion_pred
144 | feature = np.concatenate((self.frame_emb_AU,relation_embedding.cpu().numpy()), axis = 1)
145 | results = SVM_model.predict(feature) # Lie_pred
146 | return AU_list, pred_score, results
147 | def run(self):
148 | logps, pred_score, results = self.pred()
149 | self.trigger.emit(logps, pred_score.tolist(), results)
150 |
151 |
152 | class lie_GUI(QDialog, ui.Ui_Dialog):
153 | def __init__(self, args):
154 | super(lie_GUI, self).__init__()
155 | print('Start deception detection')
156 | import qdarkstyle
157 | self.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5())
158 | self.mouth_count = 0
159 | self.frame_embed_list = [] # 儲存人臉
160 | self.frame_emb_AU = []
161 | self.log = []
162 | self.userface =[]
163 | self.color = (0, 255, 0)
164 | self.index = 0
165 | self.len_bbox = 1
166 | self.time = None
167 | #Qt_design
168 | self.setupUi(self)
169 | self.Startlabel.setText('Press the button to upload a video or activate camera')
170 | self.Problem.setPlaceholderText('Enter the question')
171 | self.Record.setPlaceholderText('Enter the description')
172 | #hidden button
173 | self.Reset.setVisible(False)
174 | self.Finish.setVisible(False)
175 | self.truth_lie.setVisible(False)
176 | self.prob_label.setVisible(False)
177 | self.Start.setVisible(False)
178 | self.RecordStop.setVisible(False)
179 | self.filename.setVisible(False)
180 | self.videoprogress.setVisible(False)
181 | self.User0.setVisible(False)
182 | self.User1.setVisible(False)
183 | self.User2.setVisible(False)
184 | self.Record_area.setVisible(False)
185 | self.Problem.setVisible(False)
186 | self.Record.setVisible(False)
187 | # self.Export.setVisible(False)
188 | self.camera_start.setVisible(False)
189 | self.Clear.setVisible(False)
190 | self.camera_finish.setVisible(False)
191 | #set style
192 | self.videoprogress.setStyleSheet("QProgressBar::chunk ""{""background-color: white;""}") ##4183c5
193 | #button click
194 | self.loadcamera.clicked.connect(self.start_webcam)
195 | self.loadvideo.clicked.connect(self.get_image_file)
196 | self.Reset.clicked.connect(self.Reset_but)
197 | self.Finish.clicked.connect(self.Reset_but)
198 | self.camera_finish.clicked.connect(self.Reset_but)
199 | self.Start.clicked.connect(self.time_start)
200 | self.RecordStop.clicked.connect(self.record_stop)
201 | self.camera_start.clicked.connect(self.Enter_problem)
202 | self.Clear.clicked.connect(self.cleartext)
203 | self.User0.clicked.connect(self.User_0)
204 | self.User1.clicked.connect(self.User_1)
205 | self.User2.clicked.connect(self.User_2)
206 | #button icon
207 | self.loadvideo.setIcon(QIcon('./icon/youtube.png')) # set button icon
208 | self.loadvideo.setIconSize(QSize(50,50)) # set icon size
209 | self.loadcamera.setIcon(QIcon('./icon/camera.png')) # set button icon
210 | self.loadcamera.setIconSize(QSize(50,50)) # set icon size
211 | self.Reset.setIcon(QIcon('./icon/reset.png')) # set button icon
212 | self.Reset.setIconSize(QSize(60,60)) # set icon size
213 | self.RecordStop.setIcon(QIcon('./icon/stop.png')) # set button icon
214 | self.RecordStop.setIconSize(QSize(30,30)) # set icon size
215 | #Landmark
216 | # self.cfg = yaml.load(open(args.config), Loader=yaml.SafeLoader)
217 | # self.tddfa = TDDFA(gpu_mode='gpu', **self.cfg)
218 | #攝像頭
219 | self.cap = None
220 | self.countframe = 0
221 | #timer
222 | self.timer = QTimer(self, interval=0)
223 | self.timer.timeout.connect(self.update_frame)
224 |
225 | def cleartext(self):
226 | self.Problem.clear()
227 | self.Record.clear()
228 |
229 | def Enter_problem(self):
230 | the_input = self.Problem.toPlainText() #文字框的字
231 |
232 | with open('Result.txt', 'a',newline='') as f:
233 | f.write("Problem :")
234 | f.write(the_input)
235 |
236 | self.time_start()
237 |
238 | def User_0(self):
239 | self.User0.setVisible(False)
240 | self.User1.setVisible(False)
241 | self.User2.setVisible(False)
242 | self.index = 0
243 | self.userface = self.face_list[self.index]
244 | self.userface = np.array(self.userface)
245 | self.Startlabel.setVisible(False)
246 | self.timer.start()
247 | self.RecordStop.setVisible(True)
248 |
249 | def User_1(self):
250 | self.User0.setVisible(False)
251 | self.User1.setVisible(False)
252 | self.User2.setVisible(False)
253 | self.index = 1
254 | self.userface = self.face_list[self.index]
255 | self.userface = np.array(self.userface)
256 | self.Startlabel.setVisible(False)
257 | self.timer.start()
258 | self.RecordStop.setVisible(True)
259 |
260 | def User_2(self):
261 | self.User0.setVisible(False)
262 | self.User1.setVisible(False)
263 | self.User2.setVisible(False)
264 | self.index = 2
265 | self.userface = self.face_list[self.index]
266 | self.userface = np.array(self.userface)
267 | self.Startlabel.setVisible(False)
268 | self.timer.start()
269 | self.RecordStop.setVisible(True)
270 |
271 | def time_start(self):
272 | if self.cap is not None:
273 | if self.mode == 'camera':
274 | self.Start.setVisible(False)
275 | self.RecordStop.setVisible(True)
276 | else:
277 | self.Start.setVisible(False)
278 | self.RecordStop.setVisible(True)
279 | self.videoprogress.setVisible(True)
280 | #把所有歸零
281 | self.User0.setVisible(False)
282 | self.User1.setVisible(False)
283 | self.User2.setVisible(False)
284 | self.camera_finish.setVisible(False)
285 | self.camera_start.setVisible(False)
286 | self.Clear.setVisible(False)
287 | self.prob_label.setVisible(False)
288 | self.Reset.setVisible(False)
289 | self.timer.start()
290 | self.truth_lie.setVisible(False)
291 | self.A01.setStyleSheet('''color:#c3c3c3''')
292 | self.A02.setStyleSheet('''color:#c3c3c3''')
293 | self.A04.setStyleSheet('''color:#c3c3c3''')
294 | self.A05.setStyleSheet('''color:#c3c3c3''')
295 | self.A06.setStyleSheet('''color:#c3c3c3''')
296 | self.A09.setStyleSheet('''color:#c3c3c3''')
297 | self.A12.setStyleSheet('''color:#c3c3c3''')
298 | self.A15.setStyleSheet('''color:#c3c3c3''')
299 | self.A17.setStyleSheet('''color:#c3c3c3''')
300 | self.A20.setStyleSheet('''color:#c3c3c3''')
301 | self.A25.setStyleSheet('''color:#c3c3c3''')
302 | self.A26.setStyleSheet('''color:#c3c3c3''')
303 | self.Happly_label.setStyleSheet('''color:#c3c3c3''')
304 | self.Angry_label.setStyleSheet('''color:#c3c3c3''')
305 | self.DIsgust_label.setStyleSheet('''color:#c3c3c3''')
306 | self.Fear_label.setStyleSheet('''color:#c3c3c3''')
307 | self.Sad_label.setStyleSheet('''color:#c3c3c3''')
308 | self.Neutral_label.setStyleSheet('''color:#c3c3c3''')
309 | self.Surprise_label.setStyleSheet('''color:#c3c3c3''')
310 |
311 |
312 | def record_stop(self):
313 | self.timer.stop()
314 | if self.mode =='video':
315 | self.RecordStop.setVisible(False)
316 | self.Start.setVisible(True)
317 | self.Finish.setVisible(True)
318 | else:
319 | self.frame_emb_AU = np.array(self.frame_emb_AU)
320 | self.frame_emb_AU = np.mean(self.frame_emb_AU, axis = 0)
321 | self.log = np.array(self.log)
322 | self.log = np.mean(self.log, axis = 0)
323 | self.show_thread = show(self.frame_embed_list, self.frame_emb_AU,self.log)
324 | self.show_thread.start()
325 | self.show_thread.trigger.connect(self.display_feature)
326 | self.frame_embed_list = []
327 | self.frame_emb_AU = []
328 | self.log = []
329 | self.camera_finish.setVisible(True)
330 | _translate = QtCore.QCoreApplication.translate
331 | self.camera_start.setText(_translate("Dialog", "Continue"))
332 | self.camera_start.setVisible(True)
333 | self.Clear.setVisible(True)
334 | self.RecordStop.setVisible(False)
335 | self.camera_finish.setVisible(True)
336 |
337 | self.Reset.setVisible(False)
338 |
339 | if self.lie_count >0 :
340 | lie_prob = round((self.lie_prob_count / self.lie_count) * 100)
341 | self.RecordStop.setVisible(False)
342 | self.prob_label.setVisible(True)
343 | self.prob_label.setText('The probability of deception: {:.0f}% '.format(lie_prob))
344 |
345 | def start_webcam(self):
346 | self.lie_count = 0
347 | self.lie_prob_count = 0
348 | self.loadvideo.setVisible(False)
349 | self.loadcamera.setVisible(False)
350 | # self.Start.setVisible(True)
351 | self.Reset.setVisible(True)
352 | if self.cap is None:
353 | self.Startlabel.setVisible(False)
354 | self.cap = cv2.VideoCapture(0)
355 | self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
356 | self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
357 | self.mode = 'camera'
358 | self.Problem.setVisible(True)
359 | self.Record.setVisible(True)
360 | self.Record_area.setVisible(True)
361 |
362 | self.Clear.setVisible(True)
363 | self.camera_start.setVisible(True)
364 | with open('Result.txt', 'w',newline='') as f:
365 | f.write("\t\t\t\t\t\tReport\n")
366 |
367 |
368 | def get_image_file(self):
369 | self.lie_count = 0
370 | self.lie_prob_count = 0
371 | file_name, _ = QFileDialog.getOpenFileName(self, 'Open Video File', r"", "Video files (*.mp4 *.avi)")
372 | if self.cap is None and file_name != '':
373 | self.Startlabel.setVisible(False)
374 | self.loadvideo.setVisible(False)
375 | self.loadcamera.setVisible(False)
376 | self.Start.setVisible(True)
377 | self.filename.setVisible(True)
378 | self.Finish.setVisible(False)
379 | self.Reset.setVisible(True)
380 | self.filename.setText(' Current file:\n{:^29}' .format(file_name.split('/')[-1]))
381 | self.cap = cv2.VideoCapture(file_name)
382 | self.frame_total = self.cap.get(cv2.CAP_PROP_FRAME_COUNT)
383 | self.mode = 'video'
384 |
385 | def face_recognition(self,bbox,img):
386 | self.Original.setPixmap(QPixmap(""))
387 | # self.Facealignment.setPixmap(QPixmap(""))
388 | # self.Landmark.setPixmap(QPixmap(""))
389 |
390 | qformat = QImage.Format_Indexed8
391 | if len(img.shape)==3 :
392 | if img.shape[2]==4:
393 | qformat = QImage.Format_RGBA8888
394 | else:
395 | qformat = QImage.Format_RGB888
396 | img_raw = QImage(img, img.shape[1], img.shape[0], img.strides[0], qformat)
397 | img_raw = img_raw.rgbSwapped()
398 | self.Original.setPixmap(QPixmap.fromImage(img_raw))
399 |
400 | self.Startlabel.setVisible(True)
401 | self.RecordStop.setVisible(False)
402 |
403 | if len(bbox) == 2:
404 | op0 = QGraphicsOpacityEffect()
405 | op0.setOpacity(0)
406 | op1 = QGraphicsOpacityEffect()
407 | op1.setOpacity(0)
408 | self.User0.setGraphicsEffect(op0)
409 | self.User1.setGraphicsEffect(op1)
410 | self.User0.setGeometry(QtCore.QRect(bbox[0][0], bbox[0][1]+25, 251, 91))
411 | self.User1.setGeometry(QtCore.QRect(bbox[1][0], bbox[1][1]+25, 251, 91))
412 | self.User0.setVisible(True)
413 | self.User1.setVisible(True)
414 |
415 | elif len(bbox) == 3:
416 | op0 = QGraphicsOpacityEffect()
417 | op0.setOpacity(0)
418 | op1 = QGraphicsOpacityEffect()
419 | op1.setOpacity(0)
420 | op2 = QGraphicsOpacityEffect()
421 | op2.setOpacity(0)
422 | self.User0.setGraphicsEffect(op0)
423 | self.User1.setGraphicsEffect(op1)
424 | self.User0.setGeometry(QtCore.QRect(bbox[0][0], bbox[0][1]+25, 251, 91))
425 | self.User1.setGeometry(QtCore.QRect(bbox[1][0], bbox[1][1]+25, 251, 91))
426 | self.User2.setGeometry(QtCore.QRect(bbox[2][0], bbox[2][1]+25, 251, 91))
427 | self.User0.setVisible(True)
428 | self.User1.setVisible(True)
429 | self.User2.setVisible(True)
430 | self.Startlabel.setText('Choose the user you want to detect!')
431 |
432 |
433 |
434 | def update_frame(self):
435 | ret, im = self.cap.read()
436 | im = cv2.resize(im, (640, 480), interpolation=cv2.INTER_AREA)
437 | self.im = im
438 | show_img = im.copy()
439 | self.countframe += 1
440 | #影片讀條
441 | if self.mode == 'video':
442 | self.videoprogress.setValue((round(self.countframe / self.frame_total ,2) * 100 ))
443 |
444 | image = skimage.img_as_float(im).astype(np.float32)
445 | frame = img_as_ubyte(image)
446 | self.img_raw, output_raw, output_points,bbox,self.face_list = Retina.detect_face(frame) # face detection
447 | #若只有一個臉,正常顯示
448 | if len(bbox) == 1:
449 | self.index = 0
450 | self.userface = self.face_list[self.index]
451 | self.len_bbox = 1
452 | elif len(bbox) >= 2:
453 | if len(self.userface):
454 | dist_list = []
455 | self.face_list = np.array(self.face_list)
456 | for i in range(len(bbox)):
457 | dist = np.sqrt(np.sum(np.square(np.subtract(self.userface[:], self.face_list[i, :]))))
458 | dist_list.append(dist)
459 | dist_list = np.array(dist_list)
460 | self.index = np.argmin(dist_list)
461 |
462 | if(len(output_points)):
463 | #face_align
464 | out_raw = align_face(output_raw, output_points[self.index], crop_size_h = 112, crop_size_w = 112)
465 | out_raw = cv2.resize(out_raw,(224, 224))
466 | #Landmark
467 | # _landmark = Landmark(im,bbox,self.cfg,self.tddfa,self.color)
468 | # landmark_img = _landmark.main(self.index)
469 |
470 | cv2.rectangle(show_img, (bbox[self.index][0], bbox[self.index][1]), (bbox[self.index][2], bbox[self.index][3]), (0, 0, 255), 2)
471 | self.face_align = out_raw
472 | self.bbox = bbox
473 | self.displayImage(show_img,bbox,True)
474 | self.frame_embed_list.append(out_raw) #儲存人臉
475 | #計算AU
476 | self.lnd_AU = AU_pred(out_raw)
477 | self.lnd_AU.start()
478 | self.lnd_AU.trigger.connect(self.AU_store)
479 | #沒有臉的時候
480 | else:
481 | self.frame_embed_list = []
482 | self.frame_emb_AU = []
483 | self.log = []
484 | self.A01.setStyleSheet('''color:#e8e8e8''') # #e8e8e8
485 | self.A02.setStyleSheet('''color:#e8e8e8''')
486 | self.A04.setStyleSheet('''color:#e8e8e8''')
487 | self.A05.setStyleSheet('''color:#e8e8e8''')
488 | self.A06.setStyleSheet('''color:#e8e8e8''')
489 | self.A09.setStyleSheet('''color:#e8e8e8''')
490 | self.A12.setStyleSheet('''color:#e8e8e8''')
491 | self.A15.setStyleSheet('''color:#e8e8e8''')
492 | self.A17.setStyleSheet('''color:#e8e8e8''')
493 | self.A20.setStyleSheet('''color:#e8e8e8''')
494 | self.A25.setStyleSheet('''color:#e8e8e8''')
495 | self.A26.setStyleSheet('''color:#e8e8e8''')
496 | self.Happly_label.setStyleSheet('''color:#e8e8e8''')
497 | self.Angry_label.setStyleSheet('''color:#e8e8e8''')
498 | self.DIsgust_label.setStyleSheet('''color:#e8e8e8''')
499 | self.Fear_label.setStyleSheet('''color:#e8e8e8''')
500 | self.Sad_label.setStyleSheet('''color:#e8e8e8''')
501 | self.Neutral_label.setStyleSheet('''color:#e8e8e8''')
502 | self.Surprise_label.setStyleSheet('''color:#e8e8e8''')
503 | self.truth_lie.setVisible(False)
504 | self.displayImage(im, face_num = None)
505 |
506 | def AU_store(self,AU_emb,log):
507 | AU_emb = torch.FloatTensor(AU_emb)
508 | log = torch.FloatTensor(log)
509 | # print(log)
510 | self.frame_emb_AU.append(AU_emb.cpu().numpy())
511 | self.log.append(log.cpu().numpy())
512 |
513 | def displayImage(self, img,bbox=None,face_num = None ):
514 | #定義參數
515 | qformat = QImage.Format_Indexed8
516 | if len(img.shape)==3 :
517 | if img.shape[2]==4:
518 | qformat = QImage.Format_RGBA8888
519 | else:
520 | qformat = QImage.Format_RGB888
521 | #顯示影像
522 | if face_num:
523 | img_raw = QImage(img, img.shape[1], img.shape[0], img.strides[0], qformat)
524 | img_raw = img_raw.rgbSwapped()
525 | # if lnd_img.any() != None:
526 | # landmark_image = QImage(lnd_img, lnd_img.shape[1], lnd_img.shape[0], lnd_img.strides[0], qformat)
527 | # landmark_image = landmark_image.rgbSwapped()
528 | # self.Landmark.setPixmap(QPixmap.fromImage(landmark_image))
529 |
530 | # align_img = QImage(face_align, face_align.shape[1], face_align.shape[0], face_align.strides[0], qformat)
531 | # align_img = align_img.rgbSwapped()
532 |
533 | self.Original.setPixmap(QPixmap.fromImage(img_raw))
534 | # self.Facealignment.setPixmap(QPixmap.fromImage(align_img))
535 |
536 | #若大於兩個人,則選擇要哪個人
537 | if len(bbox) >=2 and self.len_bbox != len(bbox):
538 | self.frame_embed_list = []
539 | self.frame_emb_AU = []
540 | self.log = []
541 | self.len_bbox = len(bbox)
542 | self.timer.stop()
543 | self.face_recognition(bbox,self.img_raw)
544 | #若是影片,則len_cut禎計算一次結果
545 | if self.mode =='video':
546 | if len(self.frame_embed_list) == args.len_cut:
547 | self.frame_emb_AU = np.array(self.frame_emb_AU)
548 | self.frame_emb_AU = np.mean(self.frame_emb_AU, axis = 0)
549 | self.log = np.array(self.log)
550 | self.log = np.mean(self.log, axis = 0)
551 | self.show_thread = show(self.frame_embed_list, self.frame_emb_AU,self.log)
552 | self.show_thread.start()
553 | self.show_thread.trigger.connect(self.display_feature)
554 | self.frame_embed_list = []
555 | self.frame_emb_AU = []
556 | self.log = []
557 |
558 |
559 | else:
560 | img_raw = QImage(img, img.shape[1], img.shape[0], img.strides[0], qformat)
561 | img_raw = img_raw.rgbSwapped()
562 | self.Original.setPixmap(QPixmap.fromImage(img_raw))
563 | # self.Facealignment.setPixmap(QPixmap(""))
564 | # self.Landmark.setPixmap(QPixmap(""))
565 | if self.mode =='camera' :
566 | self.countframe =0
567 |
568 | if self.mode =='video' :
569 | if self.countframe == self.frame_total:
570 | self.prob_label.setVisible(True)
571 | self.RecordStop.setVisible(False)
572 | self.Reset.setVisible(True)
573 | if self.lie_count != 0:
574 | lie_prob = round((self.lie_prob_count / self.lie_count) * 100)
575 | self.prob_label.setText('The probability of deception: {:.0f}% '.format(lie_prob))
576 | self.timer.stop()
577 | def display_feature(self, logps, pred_score, results):
578 | pred_score = torch.Tensor(pred_score)
579 | #intialization
580 | self.A01.setStyleSheet('''color:#c3c3c3''')
581 | self.A02.setStyleSheet('''color:#c3c3c3''')
582 | self.A04.setStyleSheet('''color:#c3c3c3''')
583 | self.A05.setStyleSheet('''color:#c3c3c3''')
584 | self.A06.setStyleSheet('''color:#c3c3c3''')
585 | self.A09.setStyleSheet('''color:#c3c3c3''')
586 | self.A12.setStyleSheet('''color:#c3c3c3''')
587 | self.A15.setStyleSheet('''color:#c3c3c3''')
588 | self.A17.setStyleSheet('''color:#c3c3c3''')
589 | self.A20.setStyleSheet('''color:#c3c3c3''')
590 | self.A25.setStyleSheet('''color:#c3c3c3''')
591 | self.A26.setStyleSheet('''color:#c3c3c3''')
592 | self.Happly_label.setStyleSheet('''color:#c3c3c3''')
593 | self.Angry_label.setStyleSheet('''color:#c3c3c3''')
594 | self.DIsgust_label.setStyleSheet('''color:#c3c3c3''')
595 | self.Fear_label.setStyleSheet('''color:#c3c3c3''')
596 | self.Sad_label.setStyleSheet('''color:#c3c3c3''')
597 | self.Neutral_label.setStyleSheet('''color:#c3c3c3''')
598 | self.Surprise_label.setStyleSheet('''color:#c3c3c3''')
599 | self.truth_lie.setText('')
600 |
601 | if results ==1:
602 | self.color = (0, 0, 255) # red
603 | self.truth_lie.setText('Deception!')
604 | self.truth_lie.setStyleSheet('''QPushButton{background:#fff;border-radius:5px;color: red;}''')
605 | self.truth_lie.setVisible(True)
606 | self.lie_prob_count += 1
607 | #Emotion unit
608 | if pred_score.cpu().numpy().argmax() == 0:
609 | self.Happly_label.setStyleSheet('''color:red''')
610 | elif pred_score.cpu().numpy().argmax() == 1:
611 | self.Angry_label.setStyleSheet('''color:red''')
612 | elif pred_score.cpu().numpy().argmax() == 2:
613 | self.DIsgust_label.setStyleSheet('''color:red''')
614 | elif pred_score.cpu().numpy().argmax() == 3:
615 | self.Fear_label.setStyleSheet('''color:red''')
616 | elif pred_score.cpu().numpy().argmax() == 4:
617 | self.Sad_label.setStyleSheet('''color:red''')
618 | elif pred_score.cpu().numpy().argmax() == 5:
619 | self.Neutral_label.setStyleSheet('''color:red''')
620 | elif pred_score.cpu().numpy().argmax() == 6:
621 | self.Surprise_label.setStyleSheet('''color:red''')
622 | #Action unit
623 | if logps[0]==1:
624 | self.A01.setStyleSheet('''color:red''')
625 | if logps[1]==1:
626 | self.A02.setStyleSheet('''color:red''')
627 | if logps[2]==1:
628 | self.A04.setStyleSheet('''color:red''')
629 | if logps[3]==1:
630 | self.A05.setStyleSheet('''color:red''')
631 | if logps[4]==1:
632 | self.A06.setStyleSheet('''color:red''')
633 | if logps[5]==1:
634 | self.A09.setStyleSheet('''color:red''')
635 | if logps[6]==1:
636 | self.A12.setStyleSheet('''color:red''')
637 | if logps[7]==1:
638 | self.A15.setStyleSheet('''color:red''')
639 | if logps[8]==1:
640 | self.A17.setStyleSheet('''color:red''')
641 | if logps[9]==1:
642 | self.A20.setStyleSheet('''color:red''')
643 | if logps[10]==1:
644 | self.A25.setStyleSheet('''color:red''')
645 | if logps[11]==1:
646 | self.A26.setStyleSheet('''color:red''')
647 |
648 |
649 | else:
650 | self.color = (0, 255, 0) #green
651 | self.truth_lie.setText('Truth!')
652 | self.truth_lie.setStyleSheet('''QPushButton{background:#fff;border-radius:5px;color: green;}''')
653 | self.truth_lie.setVisible(True)
654 | #Emotion unit
655 | if pred_score.cpu().numpy().argmax() == 0:
656 | self.Happly_label.setStyleSheet('''color:green''')
657 | elif pred_score.cpu().numpy().argmax() == 1:
658 | self.Angry_label.setStyleSheet('''color:green''')
659 | elif pred_score.cpu().numpy().argmax() == 2:
660 | self.DIsgust_label.setStyleSheet('''color:green''')
661 | elif pred_score.cpu().numpy().argmax() == 3:
662 | self.Fear_label.setStyleSheet('''color:green''')
663 | elif pred_score.cpu().numpy().argmax() == 4:
664 | self.Sad_label.setStyleSheet('''color:green''')
665 | elif pred_score.cpu().numpy().argmax() == 5:
666 | self.Neutral_label.setStyleSheet('''color:green''')
667 | elif pred_score.cpu().numpy().argmax() == 6:
668 | self.Surprise_label.setStyleSheet('''color:green''')
669 | #Action unit
670 | if logps[0]==1:
671 | self.A01.setStyleSheet('''color:green''')
672 | if logps[1]==1:
673 | self.A02.setStyleSheet('''color:green''')
674 | if logps[2]==1:
675 | self.A04.setStyleSheet('''color:green''')
676 | if logps[3]==1:
677 | self.A05.setStyleSheet('''color:green''')
678 | if logps[4]==1:
679 | self.A06.setStyleSheet('''color:green''')
680 | if logps[5]==1:
681 | self.A09.setStyleSheet('''color:green''')
682 | if logps[6]==1:
683 | self.A12.setStyleSheet('''color:green''')
684 | if logps[7]==1:
685 | self.A15.setStyleSheet('''color:green''')
686 | if logps[8]==1:
687 | self.A17.setStyleSheet('''color:green''')
688 | if logps[9]==1:
689 | self.A20.setStyleSheet('''color:green''')
690 | if logps[10]==1:
691 | self.A25.setStyleSheet('''color:green''')
692 | if logps[11]==1:
693 | self.A26.setStyleSheet('''color:green''')
694 |
695 |
696 | self.frame_embed_list = []
697 | self.frame_emb_AU = []
698 | self.lie_count +=1
699 | if self.mode =='camera' :
700 | self.countframe =0
701 | with open('Result.txt', 'a',newline='') as f:
702 |
703 | f.write("\nEmotion unit:")
704 | if pred_score.cpu().numpy().argmax() == 0:
705 | f.write('Happy')
706 | elif pred_score.cpu().numpy().argmax() == 1:
707 | f.write("Angry")
708 | elif pred_score.cpu().numpy().argmax() == 2:
709 | f.write("Disgust")
710 | elif pred_score.cpu().numpy().argmax() == 3:
711 | f.write("Fear")
712 | elif pred_score.cpu().numpy().argmax() == 4:
713 | f.write("Sad")
714 | elif pred_score.cpu().numpy().argmax() == 5:
715 | f.write("Neutral")
716 | elif pred_score.cpu().numpy().argmax() == 6:
717 | f.write("Surprise")
718 |
719 | f.write('\nAction unit:')
720 | if logps[0]==1:
721 | f.write('Inner brow raiser\t')
722 | if logps[1]==1:
723 | f.write('Outer brow raiser\t')
724 | if logps[2]==1:
725 | f.write('Brow lower\t')
726 | if logps[3]==1:
727 | f.write('Upper Lid Raiser\t')
728 | if logps[4]==1:
729 | f.write('Cheek raiser\t')
730 | if logps[5]==1:
731 | f.write('Nose wrinkle\t')
732 | if logps[6]==1:
733 | f.write('Lip corner puller\t')
734 | if logps[7]==1:
735 | f.write('Lip corner depressor\t')
736 | if logps[8]==1:
737 | f.write('Chin raiser\t')
738 | if logps[9]==1:
739 | f.write('Lip Stretcher\t')
740 | if logps[10]==1:
741 | f.write('Lips part\t')
742 | if logps[11]==1:
743 | f.write('Jaw drop\t')
744 |
745 | f.write('\nLie detection:')
746 | if results == 1:
747 | f.write('Deception!')
748 | else:
749 | f.write('Truth!')
750 | the_output = self.Record.toPlainText()
751 | f.write('\nDescription:')
752 | f.write(the_output)
753 | f.write('\n\n')
754 |
755 | # _landmark = Landmark(self.im,self.bbox,self.cfg,self.tddfa,self.color)
756 | # lnd_img = _landmark.main(self.index)
757 | qformat = QImage.Format_Indexed8
758 | if len(self.im.shape)==3 :
759 | if self.im.shape[2]==4:
760 | qformat = QImage.Format_RGBA8888
761 | else:
762 | qformat = QImage.Format_RGB888
763 | # if lnd_img.any() != None:
764 | # landmark_image = QImage(lnd_img, lnd_img.shape[1], lnd_img.shape[0], lnd_img.strides[0], qformat)
765 | # landmark_image = landmark_image.rgbSwapped()
766 | # self.Landmark.setPixmap(QPixmap.fromImage(landmark_image))
767 | def Reset_but(self):
768 | self.Reset.setVisible(False)
769 | self.camera_finish.setVisible(False)
770 | self.Finish.setVisible(False)
771 | self.truth_lie.setVisible(False)
772 | self.videoprogress.setVisible(False)
773 | self.filename.setVisible(False)
774 | self.loadcamera.setVisible(True)
775 | self.loadvideo.setVisible(True)
776 | self.Startlabel.setVisible(True)
777 | self.Start.setVisible(False)
778 | self.prob_label.setVisible(False)
779 | self.Problem.setVisible(False)
780 | self.Record_area.setVisible(False)
781 | self.Record.setVisible(False)
782 | self.camera_start.setVisible(False)
783 | self.Clear.setVisible(False)
784 | _translate = QtCore.QCoreApplication.translate
785 | self.camera_start.setText(_translate("Dialog", "Start"))
786 | self.Problem.clear()
787 | self.Record.clear()
788 | self.A01.setStyleSheet('''color:#c3c3c3''')
789 | self.A02.setStyleSheet('''color:#c3c3c3''')
790 | self.A04.setStyleSheet('''color:#c3c3c3''')
791 | self.A05.setStyleSheet('''color:#c3c3c3''')
792 | self.A06.setStyleSheet('''color:#c3c3c3''')
793 | self.A09.setStyleSheet('''color:#c3c3c3''')
794 | self.A12.setStyleSheet('''color:#c3c3c3''')
795 | self.A15.setStyleSheet('''color:#c3c3c3''')
796 | self.A17.setStyleSheet('''color:#c3c3c3''')
797 | self.A20.setStyleSheet('''color:#c3c3c3''')
798 | self.A25.setStyleSheet('''color:#c3c3c3''')
799 | self.A26.setStyleSheet('''color:#c3c3c3''')
800 | self.Happly_label.setStyleSheet('''color:#c3c3c3''')
801 | self.Angry_label.setStyleSheet('''color:#c3c3c3''')
802 | self.DIsgust_label.setStyleSheet('''color:#c3c3c3''')
803 | self.Fear_label.setStyleSheet('''color:#c3c3c3''')
804 | self.Sad_label.setStyleSheet('''color:#c3c3c3''')
805 | self.Neutral_label.setStyleSheet('''color:#c3c3c3''')
806 | self.Surprise_label.setStyleSheet('''color:#c3c3c3''')
807 | self.color = (0, 255, 0)
808 | self.truth_lie.setText('Lie_truth')
809 | # self.truth_lie.setStyleSheet('''QPushButton{background:##ff70ff;border-radius:5px;}''')
810 | self.videoprogress.setValue(0)
811 | self.frame_embed_list = []
812 | self.frame_emb_AU = []
813 | self.userface = []
814 | self.countframe = 0
815 | self.index = 0
816 | self.len_bbox = 1
817 | self.Original.setPixmap(QPixmap(""))
818 | # self.Facealignment.setPixmap(QPixmap(""))
819 | # self.Landmark.setPixmap(QPixmap(""))
820 | self.filename.setText('')
821 | self.Startlabel.setText('Press the button to upload a video or activate camera')
822 | # self.Facedetection.setPixmap(QPixmap(""))
823 | self.timer.stop()
824 | if self.cap != None:
825 | self.cap.release()
826 | self.cap = None
827 | if __name__=='__main__':
828 | app = QApplication(sys.argv)
829 | window = lie_GUI(args)
830 | window.show()
831 | sys.exit(app.exec_())
--------------------------------------------------------------------------------
/models.py:
--------------------------------------------------------------------------------
1 | # https://blog.csdn.net/qq_30105095/article/details/102761644
2 | # coding=UTF-8
3 | import math
4 | import torch
5 | import torch.nn as nn
6 | import torch.nn.functional as F
7 | import torchvision.models as models
8 | import torch.utils.model_zoo as model_zoo
9 | from torch.hub import load_state_dict_from_url
10 |
11 | ################## Activation Function ##################
12 | class Mish(nn.Module):
13 | def __init__(self):
14 | super().__init__()
15 | # print("Mish activation loaded...")
16 |
17 | def forward(self, x):
18 | x = x *(torch.tanh(F.softplus(x)))
19 | return x
20 |
21 | class Swish(nn.Module):
22 | def __init__(self):
23 | super(Swish, self).__init__()
24 | # print("Swish activation loaded...")
25 |
26 | def forward(self, x, beta = 1):
27 | x = x * F.sigmoid(beta * x)
28 | return x
29 |
30 | class Auto_swish(torch.autograd.Function):
31 | @staticmethod
32 | def forward(ctx, i):
33 | result = i * torch.sigmoid(i)
34 | ctx.save_for_backward(i)
35 | return result
36 |
37 | @staticmethod
38 | def backward(ctx, grad_output):
39 | i = ctx.saved_variables[0]
40 | sigmoid_i = torch.sigmoid(i)
41 | return grad_output * (sigmoid_i * (1 + i * (1 - sigmoid_i)))
42 |
43 | class Auto_swish(nn.Module):
44 | def __init__(self):
45 | super().__init__()
46 | # print("Auto Swish activation loaded...")
47 |
48 | def forward(self, input_tensor):
49 | return Auto_swish.apply(input_tensor)
50 |
51 | class Shift_tanh(nn.Module):
52 | def __init__(self):
53 | super(Shift_tanh, self).__init__()
54 | # print("Swish activation loaded...")
55 |
56 | def forward(self, x):
57 | x = 0.5*(torch.tanh(5*x - 2.5) + 1)
58 | return x
59 | ####################### backbone ########################
60 | def conv3x3(in_planes, out_planes, stride=1):
61 | """3x3 convolution with padding"""
62 | return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,
63 | padding=1, bias=False)
64 |
65 | class BasicBlock(nn.Module):
66 | expansion = 1
67 |
68 | def __init__(self, inplanes, planes, stride=1, downsample=None):
69 | super(BasicBlock, self).__init__()
70 | self.conv1 = conv3x3(inplanes, planes, stride)
71 | self.bn1 = nn.BatchNorm2d(planes)
72 | self.relu = nn.ReLU(inplace=True)
73 | self.conv2 = conv3x3(planes, planes)
74 | self.bn2 = nn.BatchNorm2d(planes)
75 | self.downsample = downsample
76 | self.stride = stride
77 |
78 | def forward(self, x):
79 | residual = x
80 |
81 | out = self.conv1(x)
82 | out = self.bn1(out)
83 | out = self.relu(out)
84 |
85 | out = self.conv2(out)
86 | out = self.bn2(out)
87 |
88 | if self.downsample is not None:
89 | residual = self.downsample(x)
90 |
91 | out += residual
92 | out = self.relu(out)
93 |
94 | return out
95 |
96 | class Bottleneck(nn.Module):
97 | expansion = 4
98 | def __init__(self, inplanes, planes, stride=1, downsample=None):
99 | super(Bottleneck, self).__init__()
100 | self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, bias=False)
101 | self.bn1 = nn.BatchNorm2d(planes)
102 | self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=stride,
103 | padding=1, bias=False)
104 | self.bn2 = nn.BatchNorm2d(planes)
105 | self.conv3 = nn.Conv2d(planes, planes * self.expansion, kernel_size=1, bias=False)
106 | self.bn3 = nn.BatchNorm2d(planes * self.expansion)
107 | self.relu = nn.ReLU(inplace=True)
108 | self.downsample = downsample
109 | self.stride = stride
110 |
111 | def forward(self, x):
112 | residual = x
113 |
114 | out = self.conv1(x)
115 | out = self.bn1(out)
116 | out = self.relu(out)
117 |
118 | out = self.conv2(out)
119 | out = self.bn2(out)
120 | out = self.relu(out)
121 |
122 | out = self.conv3(out)
123 | out = self.bn3(out)
124 |
125 | if self.downsample is not None:
126 | residual = self.downsample(x)
127 |
128 | out += residual
129 | out = self.relu(out)
130 |
131 | return out
132 |
133 | class ResNet(nn.Module):
134 | def __init__(self, args, block, layers, num_classes=1000):
135 | self.inplanes = 64
136 | super(ResNet, self).__init__()
137 | self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3,
138 | bias=False)
139 | self.bn1 = nn.BatchNorm2d(64)
140 | self.relu = nn.ReLU(inplace=True)
141 | self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
142 | self.layer1 = self._make_layer(block, 64, layers[0])
143 | self.layer2 = self._make_layer(block, 128, layers[1], stride=2)
144 | self.layer3 = self._make_layer(block, 256, layers[2], stride=2)
145 | self.layer4 = self._make_layer(block, 512, layers[3], stride=2)
146 | self.avgpool = nn.AvgPool2d(7, stride=1)
147 | self.dropout = nn.Dropout(0.5)
148 | if args.model_name == 'resnet18':
149 | self.fclass = nn.Linear(512, args.num_classes)
150 | else:
151 | self.fclass = nn.Linear(2048, args.num_classes)
152 | self.bn2 = nn.BatchNorm1d(num_classes)
153 | # self.relu2 = nn.ReLU(inplace=True)
154 | # self.sigmoid = nn.Sigmoid()
155 | # self.tanh = nn.Tanh()
156 | # self.softmax = nn.Softmax()
157 | # self.swish = Swish()
158 | # self.mish = Mish()
159 | self.Stanh = Shift_tanh()
160 |
161 | for m in self.modules():
162 | if isinstance(m, nn.Conv2d):
163 | n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels
164 | m.weight.data.normal_(0, math.sqrt(2. / n))
165 | elif isinstance(m, nn.BatchNorm2d):
166 | m.weight.data.fill_(1)
167 | m.bias.data.zero_()
168 |
169 | def _make_layer(self, block, planes, blocks, stride=1):
170 | downsample = None
171 | if stride != 1 or self.inplanes != planes * block.expansion:
172 | downsample = nn.Sequential(
173 | nn.Conv2d(self.inplanes, planes * block.expansion,
174 | kernel_size=1, stride=stride, bias=False),
175 | nn.BatchNorm2d(planes * block.expansion),
176 | )
177 |
178 | layers = []
179 | layers.append(block(self.inplanes, planes, stride, downsample))
180 | self.inplanes = planes * block.expansion
181 | for i in range(1, blocks):
182 | layers.append(block(self.inplanes, planes))
183 |
184 | return nn.Sequential(*layers)
185 |
186 | def forward(self, x, args):
187 | x = self.conv1(x)
188 | x = self.bn1(x)
189 | x = self.relu(x)
190 | x = self.maxpool(x)
191 |
192 | layer1 = self.layer1(x)
193 | layer2 = self.layer2(layer1)
194 | layer3 = self.layer3(layer2)
195 | layer4 = self.layer4(layer3)
196 |
197 | x = self.avgpool(layer4)
198 |
199 | x = self.dropout(x)
200 | embedding = x.view(x.size(0), -1)
201 | x = self.fclass(embedding)
202 | if args.loss_func == 'MSE' or args.loss_func == 'L1':
203 | x = self.bn2(x)
204 | x = self.Stanh(x)
205 | return x, embedding
206 |
207 | def resnet18(args, num_classes, pretrained=False):
208 | """Constructs a ResNet-18 model.
209 | Args:
210 | num_classes = 1000 (default)
211 | """
212 | model = ResNet(args = args, block = BasicBlock, layers = [2, 2, 2, 2], num_classes = num_classes)
213 | if pretrained:
214 | pretrained_dict = models.resnet18(pretrained = pretrained)
215 | num_ftrs = pretrained_dict.fc.in_features
216 | pretrained_dict.fc = nn.Linear(num_ftrs, num_classes)
217 | pretrained_dict = pretrained_dict.state_dict()
218 | model_dict = model.state_dict()
219 | pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}
220 | model_dict.update(pretrained_dict)
221 | model.load_state_dict(model_dict)
222 | return model
223 |
224 | def resnet34(args, num_classes, pretrained=False):
225 | """Constructs a ResNet-34 model.
226 | Args:
227 | num_classes = 1000 (default)
228 | """
229 | model = ResNet(args = args, block = BasicBlock, layers = [3, 4, 6, 3], num_classes = num_classes)
230 | if pretrained:
231 | pretrained_dict = models.resnet34(pretrained = pretrained)
232 | num_ftrs = pretrained_dict.fc.in_features
233 | pretrained_dict.fc = nn.Linear(num_ftrs, num_classes)
234 | pretrained_dict = pretrained_dict.state_dict()
235 | model_dict = model.state_dict()
236 | pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}
237 | model_dict.update(pretrained_dict)
238 | model.load_state_dict(model_dict)
239 | return model
240 |
241 | def resnet50(args, num_classes, pretrained=False):
242 | """Constructs a ResNet-50 model.
243 | Args:
244 | num_classes = 1000 (default)
245 | """
246 | model = ResNet(args = args, block = Bottleneck, layers = [3, 4, 6, 3], num_classes = num_classes)
247 | if pretrained:
248 | pretrained_dict = models.resnet50(pretrained = pretrained)
249 | num_ftrs = pretrained_dict.fc.in_features
250 | pretrained_dict.fc = nn.Linear(num_ftrs, num_classes)
251 | pretrained_dict = pretrained_dict.state_dict()
252 | model_dict = model.state_dict()
253 | pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}
254 | model_dict.update(pretrained_dict)
255 | model.load_state_dict(model_dict)
256 | return model
257 |
258 | def resnet101(args, num_classes, pretrained=False):
259 | """Constructs a ResNet-101 model.
260 | Args:
261 | num_classes = 1000 (default)
262 | """
263 | model = ResNet(args = args, block = Bottleneck, layers = [3, 4, 23, 3], num_classes = num_classes)
264 | if pretrained:
265 | pretrained_dict = models.resnet101(pretrained = pretrained)
266 | num_ftrs = pretrained_dict.fc.in_features
267 | pretrained_dict.fc = nn.Linear(num_ftrs, num_classes)
268 | pretrained_dict = pretrained_dict.state_dict()
269 | model_dict = model.state_dict()
270 | pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}
271 | model_dict.update(pretrained_dict)
272 | model.load_state_dict(model_dict)
273 | return model
274 |
275 | def resnet152(args, num_classes, pretrained=False):
276 | """Constructs a ResNet-152 model.
277 | Args:
278 | num_classes = 1000 (default)
279 | """
280 | model = ResNet(args = args, block = Bottleneck, layers = [3, 8, 36, 3], num_classes = num_classes)
281 | if pretrained:
282 | pretrained_dict = models.resnet152(pretrained = pretrained)
283 | num_ftrs = pretrained_dict.fc.in_features
284 | pretrained_dict.fc = nn.Linear(num_ftrs, num_classes)
285 | pretrained_dict = pretrained_dict.state_dict()
286 | model_dict = model.state_dict()
287 | pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}
288 | model_dict.update(pretrained_dict)
289 | model.load_state_dict(model_dict)
290 | return model
291 |
292 | #---------------------------------------------------------------------------
293 | class SELayer(nn.Module):
294 | def __init__(self, channel, reduction=16):
295 | super(SELayer, self).__init__()
296 | self.avg_pool = nn.AdaptiveAvgPool2d(1)
297 | self.fc = nn.Sequential(
298 | nn.Linear(channel, channel // reduction, bias=False),
299 | nn.ReLU(inplace=True),
300 | nn.Linear(channel // reduction, channel, bias=False),
301 | nn.Sigmoid()
302 | )
303 |
304 | def forward(self, x):
305 | b, c, _, _ = x.size()
306 | y = self.avg_pool(x).view(b, c)
307 | y = self.fc(y).view(b, c, 1, 1)
308 | return x * y.expand_as(x)
309 |
310 | class SEBasicBlock(nn.Module):
311 | expansion = 1
312 |
313 | def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1,
314 | base_width=64, dilation=1, norm_layer=None,
315 | *, reduction=16):
316 | super(SEBasicBlock, self).__init__()
317 | self.conv1 = conv3x3(inplanes, planes, stride)
318 | self.bn1 = nn.BatchNorm2d(planes)
319 | self.relu = nn.ReLU(inplace=True)
320 | self.conv2 = conv3x3(planes, planes, 1)
321 | self.bn2 = nn.BatchNorm2d(planes)
322 | self.se = SELayer(planes, reduction)
323 | self.downsample = downsample
324 | self.stride = stride
325 |
326 | def forward(self, x):
327 | residual = x
328 | out = self.conv1(x)
329 | out = self.bn1(out)
330 | out = self.relu(out)
331 |
332 | out = self.conv2(out)
333 | out = self.bn2(out)
334 | out = self.se(out)
335 |
336 | if self.downsample is not None:
337 | residual = self.downsample(x)
338 |
339 | out += residual
340 | out = self.relu(out)
341 |
342 | return out
343 |
344 | class SEBottleneck(nn.Module):
345 | expansion = 4
346 |
347 | def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1,
348 | base_width=64, dilation=1, norm_layer=None,
349 | *, reduction=16):
350 | super(SEBottleneck, self).__init__()
351 | self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, bias=False)
352 | self.bn1 = nn.BatchNorm2d(planes)
353 | self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=stride,
354 | padding=1, bias=False)
355 | self.bn2 = nn.BatchNorm2d(planes)
356 | self.conv3 = nn.Conv2d(planes, planes * 4, kernel_size=1, bias=False)
357 | self.bn3 = nn.BatchNorm2d(planes * 4)
358 | self.relu = nn.ReLU(inplace=True)
359 | self.se = SELayer(planes * 4, reduction)
360 | self.downsample = downsample
361 | self.stride = stride
362 |
363 | def forward(self, x):
364 | residual = x
365 |
366 | out = self.conv1(x)
367 | out = self.bn1(out)
368 | out = self.relu(out)
369 |
370 | out = self.conv2(out)
371 | out = self.bn2(out)
372 | out = self.relu(out)
373 |
374 | out = self.conv3(out)
375 | out = self.bn3(out)
376 | out = self.se(out)
377 |
378 | if self.downsample is not None:
379 | residual = self.downsample(x)
380 |
381 | out += residual
382 | out = self.relu(out)
383 |
384 | return out
385 |
386 | class SELayerX(nn.Module):
387 |
388 | def __init__(self, inplanes):
389 | super(SELayerX, self).__init__()
390 | self.global_avgpool = nn.AdaptiveAvgPool2d(1)
391 | self.conv1 = nn.Conv2d(inplanes, int(inplanes / 16), kernel_size=1, stride=1)
392 | self.conv2 = nn.Conv2d(int(inplanes / 16), inplanes, kernel_size=1, stride=1)
393 | self.relu = nn.ReLU(inplace=True)
394 | self.sigmoid = nn.Sigmoid()
395 |
396 | def forward(self, x):
397 |
398 | out = self.global_avgpool(x)
399 |
400 | out = self.conv1(out)
401 | out = self.relu(out)
402 |
403 | out = self.conv2(out)
404 | out = self.sigmoid(out)
405 |
406 | return x * out
407 |
408 | class SEBottleneckX(nn.Module):
409 | expansion = 4
410 | def __init__(self, inplanes, planes, cardinality, stride=1, downsample=None):
411 | super(SEBottleneckX, self).__init__()
412 | self.conv1 = nn.Conv2d(inplanes, planes * 2, kernel_size=1, bias=False)
413 | self.bn1 = nn.BatchNorm2d(planes * 2)
414 |
415 | self.conv2 = nn.Conv2d(planes * 2, planes * 2, kernel_size=3, stride=stride,
416 | padding=1, groups=cardinality, bias=False)
417 | self.bn2 = nn.BatchNorm2d(planes * 2)
418 |
419 | self.conv3 = nn.Conv2d(planes * 2, planes * 4, kernel_size=1, bias=False)
420 | self.bn3 = nn.BatchNorm2d(planes * 4)
421 |
422 | self.selayer = SELayerX(planes * 4)
423 |
424 | self.relu = nn.ReLU(inplace=True)
425 | self.downsample = downsample
426 | self.stride = stride
427 |
428 | def forward(self, x):
429 | residual = x
430 |
431 | out = self.conv1(x)
432 | out = self.bn1(out)
433 | out = self.relu(out)
434 |
435 | out = self.conv2(out)
436 | out = self.bn2(out)
437 | out = self.relu(out)
438 |
439 | out = self.conv3(out)
440 | out = self.bn3(out)
441 |
442 | out = self.selayer(out)
443 |
444 | if self.downsample is not None:
445 | residual = self.downsample(x)
446 |
447 | out += residual
448 | out = self.relu(out)
449 |
450 | return out
451 |
452 | class SEResNeXt(nn.Module):
453 | def __init__(self, block, layers, cardinality=32, num_classes=1000):
454 | super(SEResNeXt, self).__init__()
455 | self.cardinality = cardinality
456 | self.inplanes = 64
457 |
458 | self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3,
459 | bias=False)
460 | self.bn1 = nn.BatchNorm2d(64)
461 | self.relu = nn.ReLU(inplace=True)
462 | self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
463 |
464 | self.layer1 = self._make_layer(block, 64, layers[0])
465 | self.layer2 = self._make_layer(block, 128, layers[1], stride=2)
466 | self.layer3 = self._make_layer(block, 256, layers[2], stride=2)
467 | self.layer4 = self._make_layer(block, 512, layers[3], stride=2)
468 | self.dropout = nn.Dropout(0.5)
469 | self.avgpool = nn.AdaptiveAvgPool2d(1)
470 | self.fc = nn.Linear(512 * block.expansion, num_classes)
471 |
472 | for m in self.modules():
473 | if isinstance(m, nn.Conv2d):
474 | n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels
475 | m.weight.data.normal_(0, math.sqrt(2. / n))
476 | if m.bias is not None:
477 | m.bias.data.zero_()
478 | elif isinstance(m, nn.BatchNorm2d):
479 | m.weight.data.fill_(1)
480 | m.bias.data.zero_()
481 |
482 | def _make_layer(self, block, planes, blocks, stride=1):
483 | downsample = None
484 | if stride != 1 or self.inplanes != planes * block.expansion:
485 | downsample = nn.Sequential(
486 | nn.Conv2d(self.inplanes, planes * block.expansion,
487 | kernel_size=1, stride=stride, bias=False),
488 | nn.BatchNorm2d(planes * block.expansion),
489 | )
490 |
491 | layers = []
492 | layers.append(block(self.inplanes, planes, self.cardinality, stride, downsample))
493 | self.inplanes = planes * block.expansion
494 | for i in range(1, blocks):
495 | layers.append(block(self.inplanes, planes, self.cardinality))
496 |
497 | return nn.Sequential(*layers)
498 |
499 | def forward(self, x):
500 | x = self.conv1(x)
501 | x = self.bn1(x)
502 | x = self.relu(x)
503 | x = self.maxpool(x)
504 |
505 | x = self.layer1(x)
506 | x = self.layer2(x)
507 | x = self.layer3(x)
508 | layer4 = self.layer4(x)
509 |
510 | x = self.avgpool(layer4)
511 | x = self.dropout(x)
512 | embedding = x.view(x.size(0), -1)
513 |
514 | x = self.fc(embedding)
515 |
516 | return x
517 |
518 | def se_resnet18(num_classes=1000):
519 | """Constructs a ResNet-18 model.
520 | Args:
521 | pretrained (bool): If True, returns a model pre-trained on ImageNet
522 | """
523 | model = ResNet(SEBasicBlock, [2, 2, 2, 2], num_classes=num_classes)
524 | model.avgpool = nn.AdaptiveAvgPool2d(1)
525 | return model
526 |
527 | def se_resnet34(num_classes=1000):
528 | """Constructs a ResNet-34 model.
529 | Args:
530 | pretrained (bool): If True, returns a model pre-trained on ImageNet
531 | """
532 | model = ResNet(SEBasicBlock, [3, 4, 6, 3], num_classes=num_classes)
533 | model.avgpool = nn.AdaptiveAvgPool2d(1)
534 | return model
535 |
536 | def se_resnet50(args,num_classes=1000, pretrained=False):
537 | """Constructs a ResNet-50 model.
538 | Args:
539 | pretrained (bool): If True, returns a model pre-trained on ImageNet
540 | """
541 | model = ResNet(args = args, block = SEBottleneck, layers = [3, 4, 6, 3], num_classes=num_classes)
542 | model.avgpool = nn.AdaptiveAvgPool2d(1)
543 | if pretrained:
544 | pretrained_dict = load_state_dict_from_url("https://github.com/moskomule/senet.pytorch/releases/download/archive/seresnet50-60a8950a85b2b.pkl")
545 | model_dict = model.state_dict()
546 | pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}
547 | model_dict.update(pretrained_dict)
548 | model.load_state_dict(model_dict)
549 | return model
550 |
551 | def se_resnet101(num_classes=1000):
552 | """Constructs a ResNet-101 model.
553 | Args:
554 | pretrained (bool): If True, returns a model pre-trained on ImageNet
555 | """
556 | model = ResNet(SEBottleneck, [3, 4, 23, 3], num_classes=num_classes)
557 | model.avgpool = nn.AdaptiveAvgPool2d(1)
558 | return model
559 |
560 | def se_resnet152(num_classes=1000):
561 | """Constructs a ResNet-152 model.
562 | Args:
563 | pretrained (bool): If True, returns a model pre-trained on ImageNet
564 | """
565 | model = ResNet(SEBottleneck, [3, 8, 36, 3], num_classes=num_classes)
566 | model.avgpool = nn.AdaptiveAvgPool2d(1)
567 | return model
568 |
569 | def se_resnext50(num_classes, pretrained=False):
570 | """Constructs a SE-ResNeXt-50 model.
571 | Args:
572 | num_classes = 1000 (default)
573 | """
574 | model = SEResNeXt(SEBottleneckX, [3, 4, 6, 3], num_classes = num_classes)
575 | if pretrained:
576 | pretrained_dict = models.resnext50_32x4d(pretrained = pretrained)
577 | num_ftrs = pretrained_dict.fc.in_features
578 | pretrained_dict.fc = nn.Linear(num_ftrs, num_classes)
579 | pretrained_dict = pretrained_dict.state_dict()
580 | model_dict = model.state_dict()
581 | pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}
582 | model_dict.update(pretrained_dict)
583 | model.load_state_dict(model_dict)
584 | return model
585 |
586 | def se_resnext101(num_classes, pretrained=False):
587 | """Constructs a SE-ResNeXt-101 model.
588 | Args:
589 | num_classes = 1000 (default)
590 | """
591 | model = SEResNeXt(SEBottleneckX, [3, 4, 23, 3], num_classes = num_classes)
592 | if pretrained:
593 | pretrained_dict = models.resnext101_32x8d(pretrained = pretrained)
594 | num_ftrs = pretrained_dict.fc.in_features
595 | pretrained_dict.fc = nn.Linear(num_ftrs, num_classes)
596 | pretrained_dict = pretrained_dict.state_dict()
597 | model_dict = model.state_dict()
598 | pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}
599 | model_dict.update(pretrained_dict)
600 | model.load_state_dict(model_dict)
601 | return model
602 |
603 | #-------------------------------------------------------------------------------
604 | class CifarSEBasicBlock(nn.Module):
605 | def __init__(self, inplanes, planes, stride=1, reduction=16):
606 | super(CifarSEBasicBlock, self).__init__()
607 | self.conv1 = conv3x3(inplanes, planes, stride)
608 | self.bn1 = nn.BatchNorm2d(planes)
609 | self.relu = nn.ReLU(inplace=True)
610 | self.conv2 = conv3x3(planes, planes)
611 | self.bn2 = nn.BatchNorm2d(planes)
612 | self.se = SELayer(planes, reduction)
613 | if inplanes != planes:
614 | self.downsample = nn.Sequential(nn.Conv2d(inplanes, planes, kernel_size=1, stride=stride, bias=False),
615 | nn.BatchNorm2d(planes))
616 | else:
617 | self.downsample = lambda x: x
618 | self.stride = stride
619 |
620 | def forward(self, x):
621 | residual = self.downsample(x)
622 | out = self.conv1(x)
623 | out = self.bn1(out)
624 | out = self.relu(out)
625 |
626 | out = self.conv2(out)
627 | out = self.bn2(out)
628 | out = self.se(out)
629 |
630 | out += residual
631 | out = self.relu(out)
632 |
633 | return out
634 |
635 | class CifarSEResNet(nn.Module):
636 | def __init__(self, block, n_size, num_classes=10, reduction=16):
637 | super(CifarSEResNet, self).__init__()
638 | self.inplane = 16
639 | self.conv1 = nn.Conv2d(
640 | 3, self.inplane, kernel_size=3, stride=1, padding=1, bias=False)
641 | self.bn1 = nn.BatchNorm2d(self.inplane)
642 | self.relu = nn.ReLU(inplace=True)
643 | self.layer1 = self._make_layer(
644 | block, 16, blocks=n_size, stride=1, reduction=reduction)
645 | self.layer2 = self._make_layer(
646 | block, 32, blocks=n_size, stride=2, reduction=reduction)
647 | self.layer3 = self._make_layer(
648 | block, 64, blocks=n_size, stride=2, reduction=reduction)
649 | self.avgpool = nn.AdaptiveAvgPool2d(1)
650 | self.fc = nn.Linear(64, num_classes)
651 | self.initialize()
652 |
653 | def initialize(self):
654 | for m in self.modules():
655 | if isinstance(m, nn.Conv2d):
656 | nn.init.kaiming_normal_(m.weight)
657 | elif isinstance(m, nn.BatchNorm2d):
658 | nn.init.constant_(m.weight, 1)
659 | nn.init.constant_(m.bias, 0)
660 |
661 | def _make_layer(self, block, planes, blocks, stride, reduction):
662 | strides = [stride] + [1] * (blocks - 1)
663 | layers = []
664 | for stride in strides:
665 | layers.append(block(self.inplane, planes, stride, reduction))
666 | self.inplane = planes
667 |
668 | return nn.Sequential(*layers)
669 |
670 | def forward(self, x):
671 | x = self.conv1(x)
672 | x = self.bn1(x)
673 | x = self.relu(x)
674 |
675 | x = self.layer1(x)
676 | x = self.layer2(x)
677 | x = self.layer3(x)
678 |
679 | x = self.avgpool(x)
680 | x = x.view(x.size(0), -1)
681 | x = self.fc(x)
682 |
683 | return x
684 |
685 | class CifarSEPreActResNet(CifarSEResNet):
686 | def __init__(self, block, n_size, num_classes=10, reduction=16):
687 | super(CifarSEPreActResNet, self).__init__(
688 | block, n_size, num_classes, reduction)
689 | self.bn1 = nn.BatchNorm2d(self.inplane)
690 | self.initialize()
691 |
692 | def forward(self, x):
693 | x = self.conv1(x)
694 | x = self.layer1(x)
695 | x = self.layer2(x)
696 | x = self.layer3(x)
697 |
698 | x = self.bn1(x)
699 | x = self.relu(x)
700 |
701 | x = self.avgpool(x)
702 | x = x.view(x.size(0), -1)
703 | x = self.fc(x)
704 |
705 | def Cifar_se_resnet20(**kwargs):
706 | """Constructs a ResNet-18 model.
707 | """
708 | model = CifarSEResNet(CifarSEBasicBlock, 3, **kwargs)
709 | return model
710 |
711 | def Cifar_se_resnet32(**kwargs):
712 | """Constructs a ResNet-34 model.
713 | """
714 | model = CifarSEResNet(CifarSEBasicBlock, 5, **kwargs)
715 | return model
716 |
717 | def Cifar_se_resnet56(**kwargs):
718 | """Constructs a ResNet-34 model.
719 | """
720 | model = CifarSEResNet(CifarSEBasicBlock, 9, **kwargs)
721 | return model
722 |
723 | def Cifar_se_preactresnet20(**kwargs):
724 | """Constructs a ResNet-18 model.
725 | """
726 | model = CifarSEPreActResNet(CifarSEBasicBlock, 3, **kwargs)
727 | return model
728 |
729 | def Cifar_se_preactresnet32(**kwargs):
730 | """Constructs a ResNet-34 model.
731 | """
732 | model = CifarSEPreActResNet(CifarSEBasicBlock, 5, **kwargs)
733 | return model
734 |
735 | def Cifar_se_preactresnet56(**kwargs):
736 | """Constructs a ResNet-34 model.
737 | """
738 | model = CifarSEPreActResNet(CifarSEBasicBlock, 9, **kwargs)
739 | return model
740 |
741 | #-------------------------------------------------------------------------------
742 | def w_conv3x3(in_planes, out_planes, stride=1, groups=1, dilation=1):
743 | """3x3 convolution with padding"""
744 | return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,
745 | padding=dilation, groups=groups, bias=False, dilation=dilation)
746 |
747 | def w_conv1x1(in_planes, out_planes, stride=1):
748 | """1x1 convolution"""
749 | return nn.Conv2d(in_planes, out_planes, kernel_size=1, stride=stride, bias=False)
750 |
751 | class wide_Bottleneck(nn.Module):
752 | expansion = 4
753 | __constants__ = ['downsample']
754 |
755 | def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1,
756 | base_width=64, dilation=1, norm_layer=None):
757 | super(wide_Bottleneck, self).__init__()
758 | if norm_layer is None:
759 | norm_layer = nn.BatchNorm2d
760 | width = int(planes * (base_width / 64.)) * groups
761 | self.conv1 = w_conv1x1(inplanes, width)
762 | self.bn1 = norm_layer(width)
763 | self.conv2 = w_conv3x3(width, width, stride, groups, dilation)
764 | self.bn2 = norm_layer(width)
765 | self.conv3 = w_conv1x1(width, planes * self.expansion)
766 | self.bn3 = norm_layer(planes * self.expansion)
767 | self.relu = nn.ReLU(inplace=True)
768 | self.downsample = downsample
769 | self.stride = stride
770 |
771 | def forward(self, x):
772 | identity = x
773 |
774 | out = self.conv1(x)
775 | out = self.bn1(out)
776 | out = self.relu(out)
777 |
778 | out = self.conv2(out)
779 | out = self.bn2(out)
780 | out = self.relu(out)
781 |
782 | out = self.conv3(out)
783 | out = self.bn3(out)
784 |
785 | if self.downsample is not None:
786 | identity = self.downsample(x)
787 |
788 | out += identity
789 | out = self.relu(out)
790 |
791 | return out
792 |
793 | class wide_ResNet(nn.Module):
794 | def __init__(self, block, layers, num_classes=1000, zero_init_residual=False,
795 | groups=1, width_per_group=64, replace_stride_with_dilation=None,
796 | norm_layer=None):
797 | super(wide_ResNet, self).__init__()
798 | if norm_layer is None:
799 | norm_layer = nn.BatchNorm2d
800 | self._norm_layer = norm_layer
801 |
802 | self.inplanes = 64
803 | self.dilation = 1
804 | if replace_stride_with_dilation is None:
805 | replace_stride_with_dilation = [False, False, False]
806 | if len(replace_stride_with_dilation) != 3:
807 | raise ValueError("replace_stride_with_dilation should be None "
808 | "or a 3-element tuple, got {}".format(replace_stride_with_dilation))
809 | self.groups = groups
810 | self.base_width = width_per_group
811 | self.conv1 = nn.Conv2d(3, self.inplanes, kernel_size=7, stride=2, padding=3,
812 | bias=False)
813 | self.bn1 = norm_layer(self.inplanes)
814 | self.relu = nn.ReLU(inplace=True)
815 | self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
816 | self.layer1 = self._make_layer(block, 64, layers[0])
817 | self.layer2 = self._make_layer(block, 128, layers[1], stride=2,
818 | dilate=replace_stride_with_dilation[0])
819 | self.layer3 = self._make_layer(block, 256, layers[2], stride=2,
820 | dilate=replace_stride_with_dilation[1])
821 | self.layer4 = self._make_layer(block, 512, layers[3], stride=2,
822 | dilate=replace_stride_with_dilation[2])
823 | self.avgpool = nn.AdaptiveAvgPool2d((1, 1))
824 | self.dropout = nn.Dropout(0.5)
825 | self.fc = nn.Linear(512 * block.expansion, num_classes)
826 |
827 | for m in self.modules():
828 | if isinstance(m, nn.Conv2d):
829 | nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
830 | elif isinstance(m, (nn.BatchNorm2d, nn.GroupNorm)):
831 | nn.init.constant_(m.weight, 1)
832 | nn.init.constant_(m.bias, 0)
833 |
834 | if zero_init_residual:
835 | for m in self.modules():
836 | if isinstance(m, Bottleneck):
837 | nn.init.constant_(m.bn3.weight, 0)
838 | elif isinstance(m, BasicBlock):
839 | nn.init.constant_(m.bn2.weight, 0)
840 |
841 | def _make_layer(self, block, planes, blocks, stride=1, dilate=False):
842 | norm_layer = self._norm_layer
843 | downsample = None
844 | previous_dilation = self.dilation
845 | if dilate:
846 | self.dilation *= stride
847 | stride = 1
848 | if stride != 1 or self.inplanes != planes * block.expansion:
849 | downsample = nn.Sequential(
850 | w_conv1x1(self.inplanes, planes * block.expansion, stride),
851 | norm_layer(planes * block.expansion),
852 | )
853 |
854 | layers = []
855 | layers.append(block(self.inplanes, planes, stride, downsample, self.groups,
856 | self.base_width, previous_dilation, norm_layer))
857 |
858 | self.inplanes = planes * block.expansion
859 | for _ in range(1, blocks):
860 | layers.append(block(self.inplanes, planes, groups=self.groups,
861 | base_width=self.base_width, dilation=self.dilation,
862 | norm_layer=norm_layer))
863 |
864 | return nn.Sequential(*layers)
865 |
866 | def forward(self, x):
867 | x = self.conv1(x)
868 | x = self.bn1(x)
869 | x = self.relu(x)
870 | x = self.maxpool(x)
871 |
872 | x = self.layer1(x)
873 | x = self.layer2(x)
874 | x = self.layer3(x)
875 | layer4 = self.layer4(x)
876 |
877 | x = self.avgpool(layer4)
878 | x = self.dropout(x)
879 | embedding = torch.flatten(x, 1)
880 | x = self.fc(embedding)
881 |
882 | return x
883 |
884 | def wide_resnet(arch, block, layers, pretrained, num_classes, progress, **kwargs):
885 | model = wide_ResNet(block, layers, num_classes, **kwargs)
886 | if pretrained:
887 | if arch == 'wide_resnet50_2':
888 | pretrained_dict = models.wide_resnet50_2(pretrained = pretrained)
889 | elif arch == 'wide_resnet101_2':
890 | pretrained_dict = models.wide_resnet101_2(pretrained = pretrained)
891 | num_ftrs = pretrained_dict.fc.in_features
892 | pretrained_dict.fc = nn.Linear(num_ftrs, num_classes)
893 | pretrained_dict = pretrained_dict.state_dict()
894 | model_dict = model.state_dict()
895 | pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}
896 | model_dict.update(pretrained_dict)
897 | model.load_state_dict(model_dict)
898 | return model
899 |
900 | def wide_resnet50_2(pretrained=False, num_classes=1000, progress=True, **kwargs):
901 | r"""Wide ResNet-50-2 model from
902 | `"Wide Residual Networks" `_
903 | The model is the same as ResNet except for the bottleneck number of channels
904 | which is twice larger in every block. The number of channels in outer 1x1
905 | convolutions is the same, e.g. last block in ResNet-50 has 2048-512-2048
906 | channels, and in Wide ResNet-50-2 has 2048-1024-2048.
907 | Args:
908 | pretrained (bool): If True, returns a model pre-trained on ImageNet
909 | progress (bool): If True, displays a progress bar of the download to stderr
910 | """
911 | kwargs['width_per_group'] = 64 * 2
912 | return wide_resnet('wide_resnet50_2', wide_Bottleneck, [3, 4, 6, 3], pretrained, num_classes, progress, **kwargs)
913 |
914 | def wide_resnet101_2(pretrained=False, num_classes=1000, progress=True, **kwargs):
915 | r"""Wide ResNet-101-2 model from
916 | `"Wide Residual Networks" `_
917 | The model is the same as ResNet except for the bottleneck number of channels
918 | which is twice larger in every block. The number of channels in outer 1x1
919 | convolutions is the same, e.g. last block in ResNet-50 has 2048-512-2048
920 | channels, and in Wide ResNet-50-2 has 2048-1024-2048.
921 | Args:
922 | pretrained (bool): If True, returns a model pre-trained on ImageNet
923 | progress (bool): If True, displays a progress bar of the download to stderr
924 | """
925 | kwargs['width_per_group'] = 64 * 2
926 | return wide_resnet('wide_resnet101_2', wide_Bottleneck, [3, 4, 23, 3],pretrained, progress, **kwargs)
927 | # ------------------------------------------------------------------------------
928 | def select_model(args):
929 | if args.model_name == 'resnet18':
930 | if args.isPretrain == False :
931 | model = resnet18(args = args, num_classes = args.num_classes, pretrained = args.pretrained_weight)
932 | else:
933 | model = resnet18(args = args, num_classes = args.num_classes, pretrained = args.pretrained_weight)
934 | model = torch.load(args.save_model + '/' + args.pretrain_model)
935 | elif args.model_name == 'resnet50':
936 | if args.isPretrain == False :
937 | model = resnet50(args = args, num_classes = args.num_classes, pretrained = args.pretrained_weight)
938 | else:
939 | model = resnet50(args = args, num_classes = args.num_classes, pretrained = args.pretrained_weight)
940 | model = torch.load(args.save_model + '/' + args.pretrain_model)
941 | elif args.model_name == 'resnet101':
942 | if args.isPretrain == False :
943 | model = resnet101(args = args, num_classes = args.num_classes, pretrained = args.pretrained_weight)
944 | else:
945 | model = resnet101(args = args, num_classes = args.num_classes, pretrained = args.pretrained_weight)
946 | model = torch.load(args.save_model + '/' + args.pretrain_model)
947 | elif args.model_name == 'se_resnet50':
948 | if args.isPretrain == False :
949 | model = se_resnet50(num_classes = args.num_classes, pretrained = args.pretrained_weight)
950 | else:
951 | model = se_resnet50(args = args, num_classes = args.num_classes, pretrained = args.pretrained_weight)
952 | model = torch.load(args.save_model + '/' + args.pretrain_model)
953 | elif args.model_name == 'se_resnet101':
954 | if args.isPretrain == False :
955 | model = se_resnet101(num_classes = args.num_classes)
956 | else:
957 | model = se_resnet101(num_classes = args.num_classes)
958 | model = torch.load(args.save_model + '/' + args.pretrain_model)
959 | elif args.model_name == 'se_resneXt50':
960 | if args.isPretrain == False :
961 | model = se_resnext50(num_classes = args.num_classes, pretrained = args.pretrained_weight)
962 | else:
963 | model = se_resnext50(num_classes = args.num_classes, pretrained = args.pretrained_weight)
964 | model = torch.load(args.save_model + '/' + args.pretrain_model)
965 | elif args.model_name == 'se_resneXt101':
966 | if args.isPretrain == False :
967 | model = se_resnext101(num_classes = args.num_classes, pretrained = args.pretrained_weight)
968 | else:
969 | model = se_resnext101(num_classes = args.num_classes, pretrained = args.pretrained_weight)
970 | model = torch.load(args.save_model + '/' + args.pretrain_model)
971 | elif args.model_name == 'wide_resnet50':
972 | if args.isPretrain == False :
973 | model = wide_resnet50_2(num_classes = args.num_classes, pretrained = args.pretrained_weight)
974 | else:
975 | model = wide_resnet50_2(num_classes = args.num_classes, pretrained = args.pretrained_weight)
976 | model = torch.load(args.save_model + '/' + args.pretrain_model)
977 | elif args.model_name == 'wide_resnet101':
978 | if args.isPretrain == False :
979 | model = wide_resnet101_2(num_classes = args.num_classes, pretrained = args.pretrained_weight)
980 | else:
981 | model = wide_resnet101_2(num_classes = args.num_classes, pretrained = args.pretrained_weight)
982 | model = torch.load(args.save_model + '/' + args.pretrain_model)
983 | model = model.cuda()
984 | if len(args.gpu_id.split(',')) > 1 :
985 | model = nn.DataParallel(model)
986 | return model
--------------------------------------------------------------------------------
/Qt_design.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'lie_GUI.ui'
4 | #
5 | # Created by: PyQt5 UI code generator 5.12.3
6 | #
7 | # WARNING! All changes made in this file will be lost!
8 |
9 |
10 | from PyQt5 import QtCore, QtGui, QtWidgets
11 |
12 |
13 | class Ui_Dialog(object):
14 | def setupUi(self, Dialog):
15 | Dialog.setObjectName("Dialog")
16 | Dialog.resize(1435, 695)
17 | self.Original = QtWidgets.QLabel(Dialog)
18 | self.Original.setGeometry(QtCore.QRect(30, 30, 640, 480))
19 | palette = QtGui.QPalette()
20 | brush = QtGui.QBrush(QtGui.QColor(0, 170, 255))
21 | brush.setStyle(QtCore.Qt.SolidPattern)
22 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
23 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
24 | brush.setStyle(QtCore.Qt.SolidPattern)
25 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
26 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
27 | brush.setStyle(QtCore.Qt.SolidPattern)
28 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
29 | brush = QtGui.QBrush(QtGui.QColor(255, 85, 0))
30 | brush.setStyle(QtCore.Qt.SolidPattern)
31 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
32 | brush = QtGui.QBrush(QtGui.QColor(255, 170, 0))
33 | brush.setStyle(QtCore.Qt.SolidPattern)
34 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Shadow, brush)
35 | brush = QtGui.QBrush(QtGui.QColor(0, 170, 255))
36 | brush.setStyle(QtCore.Qt.SolidPattern)
37 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
38 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
39 | brush.setStyle(QtCore.Qt.SolidPattern)
40 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
41 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
42 | brush.setStyle(QtCore.Qt.SolidPattern)
43 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
44 | brush = QtGui.QBrush(QtGui.QColor(255, 85, 0))
45 | brush.setStyle(QtCore.Qt.SolidPattern)
46 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
47 | brush = QtGui.QBrush(QtGui.QColor(255, 170, 0))
48 | brush.setStyle(QtCore.Qt.SolidPattern)
49 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Shadow, brush)
50 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
51 | brush.setStyle(QtCore.Qt.SolidPattern)
52 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
53 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
54 | brush.setStyle(QtCore.Qt.SolidPattern)
55 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
56 | brush = QtGui.QBrush(QtGui.QColor(255, 85, 0))
57 | brush.setStyle(QtCore.Qt.SolidPattern)
58 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
59 | brush = QtGui.QBrush(QtGui.QColor(255, 85, 0))
60 | brush.setStyle(QtCore.Qt.SolidPattern)
61 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
62 | brush = QtGui.QBrush(QtGui.QColor(255, 170, 0))
63 | brush.setStyle(QtCore.Qt.SolidPattern)
64 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Shadow, brush)
65 | self.Original.setPalette(palette)
66 | self.Original.setFrameShape(QtWidgets.QFrame.Box)
67 | self.Original.setFrameShadow(QtWidgets.QFrame.Sunken)
68 | self.Original.setLineWidth(1)
69 | self.Original.setMidLineWidth(0)
70 | self.Original.setText("")
71 | self.Original.setObjectName("Original")
72 | self.videoprogress = QtWidgets.QProgressBar(Dialog)
73 | self.videoprogress.setGeometry(QtCore.QRect(30, 520, 641, 21))
74 | self.videoprogress.setProperty("value", 0)
75 | self.videoprogress.setAlignment(QtCore.Qt.AlignCenter)
76 | self.videoprogress.setFormat("")
77 | self.videoprogress.setObjectName("videoprogress")
78 | self.Happly_label = QtWidgets.QLabel(Dialog)
79 | self.Happly_label.setGeometry(QtCore.QRect(690, 80, 71, 31))
80 | palette = QtGui.QPalette()
81 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
82 | brush.setStyle(QtCore.Qt.SolidPattern)
83 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
84 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
85 | brush.setStyle(QtCore.Qt.SolidPattern)
86 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
87 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
88 | brush.setStyle(QtCore.Qt.SolidPattern)
89 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
90 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
91 | brush.setStyle(QtCore.Qt.SolidPattern)
92 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
93 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
94 | brush.setStyle(QtCore.Qt.SolidPattern)
95 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
96 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
97 | brush.setStyle(QtCore.Qt.SolidPattern)
98 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
99 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
100 | brush.setStyle(QtCore.Qt.SolidPattern)
101 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
102 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
103 | brush.setStyle(QtCore.Qt.SolidPattern)
104 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
105 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
106 | brush.setStyle(QtCore.Qt.SolidPattern)
107 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
108 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
109 | brush.setStyle(QtCore.Qt.SolidPattern)
110 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
111 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
112 | brush.setStyle(QtCore.Qt.SolidPattern)
113 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
114 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
115 | brush.setStyle(QtCore.Qt.SolidPattern)
116 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
117 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
118 | brush.setStyle(QtCore.Qt.SolidPattern)
119 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
120 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
121 | brush.setStyle(QtCore.Qt.SolidPattern)
122 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
123 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
124 | brush.setStyle(QtCore.Qt.SolidPattern)
125 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
126 | self.Happly_label.setPalette(palette)
127 | font = QtGui.QFont()
128 | font.setFamily("Tw Cen MT")
129 | font.setPointSize(12)
130 | self.Happly_label.setFont(font)
131 | self.Happly_label.setObjectName("Happly_label")
132 | self.Angry_label = QtWidgets.QLabel(Dialog)
133 | self.Angry_label.setGeometry(QtCore.QRect(780, 80, 61, 31))
134 | palette = QtGui.QPalette()
135 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
136 | brush.setStyle(QtCore.Qt.SolidPattern)
137 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
138 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
139 | brush.setStyle(QtCore.Qt.SolidPattern)
140 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
141 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
142 | brush.setStyle(QtCore.Qt.SolidPattern)
143 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
144 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
145 | brush.setStyle(QtCore.Qt.SolidPattern)
146 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
147 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
148 | brush.setStyle(QtCore.Qt.SolidPattern)
149 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
150 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
151 | brush.setStyle(QtCore.Qt.SolidPattern)
152 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
153 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
154 | brush.setStyle(QtCore.Qt.SolidPattern)
155 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
156 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
157 | brush.setStyle(QtCore.Qt.SolidPattern)
158 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
159 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
160 | brush.setStyle(QtCore.Qt.SolidPattern)
161 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
162 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
163 | brush.setStyle(QtCore.Qt.SolidPattern)
164 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
165 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
166 | brush.setStyle(QtCore.Qt.SolidPattern)
167 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
168 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
169 | brush.setStyle(QtCore.Qt.SolidPattern)
170 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
171 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
172 | brush.setStyle(QtCore.Qt.SolidPattern)
173 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
174 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
175 | brush.setStyle(QtCore.Qt.SolidPattern)
176 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
177 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
178 | brush.setStyle(QtCore.Qt.SolidPattern)
179 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
180 | self.Angry_label.setPalette(palette)
181 | font = QtGui.QFont()
182 | font.setFamily("Tw Cen MT")
183 | font.setPointSize(12)
184 | self.Angry_label.setFont(font)
185 | self.Angry_label.setObjectName("Angry_label")
186 | self.DIsgust_label = QtWidgets.QLabel(Dialog)
187 | self.DIsgust_label.setGeometry(QtCore.QRect(860, 80, 81, 31))
188 | palette = QtGui.QPalette()
189 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
190 | brush.setStyle(QtCore.Qt.SolidPattern)
191 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
192 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
193 | brush.setStyle(QtCore.Qt.SolidPattern)
194 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
195 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
196 | brush.setStyle(QtCore.Qt.SolidPattern)
197 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
198 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
199 | brush.setStyle(QtCore.Qt.SolidPattern)
200 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
201 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
202 | brush.setStyle(QtCore.Qt.SolidPattern)
203 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
204 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
205 | brush.setStyle(QtCore.Qt.SolidPattern)
206 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
207 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
208 | brush.setStyle(QtCore.Qt.SolidPattern)
209 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
210 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
211 | brush.setStyle(QtCore.Qt.SolidPattern)
212 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
213 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
214 | brush.setStyle(QtCore.Qt.SolidPattern)
215 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
216 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
217 | brush.setStyle(QtCore.Qt.SolidPattern)
218 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
219 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
220 | brush.setStyle(QtCore.Qt.SolidPattern)
221 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
222 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
223 | brush.setStyle(QtCore.Qt.SolidPattern)
224 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
225 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
226 | brush.setStyle(QtCore.Qt.SolidPattern)
227 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
228 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
229 | brush.setStyle(QtCore.Qt.SolidPattern)
230 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
231 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
232 | brush.setStyle(QtCore.Qt.SolidPattern)
233 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
234 | self.DIsgust_label.setPalette(palette)
235 | font = QtGui.QFont()
236 | font.setFamily("Tw Cen MT")
237 | font.setPointSize(12)
238 | self.DIsgust_label.setFont(font)
239 | self.DIsgust_label.setObjectName("DIsgust_label")
240 | self.Fear_label = QtWidgets.QLabel(Dialog)
241 | self.Fear_label.setGeometry(QtCore.QRect(960, 80, 61, 31))
242 | palette = QtGui.QPalette()
243 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
244 | brush.setStyle(QtCore.Qt.SolidPattern)
245 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
246 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
247 | brush.setStyle(QtCore.Qt.SolidPattern)
248 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
249 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
250 | brush.setStyle(QtCore.Qt.SolidPattern)
251 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
252 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
253 | brush.setStyle(QtCore.Qt.SolidPattern)
254 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
255 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
256 | brush.setStyle(QtCore.Qt.SolidPattern)
257 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
258 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
259 | brush.setStyle(QtCore.Qt.SolidPattern)
260 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
261 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
262 | brush.setStyle(QtCore.Qt.SolidPattern)
263 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
264 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
265 | brush.setStyle(QtCore.Qt.SolidPattern)
266 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
267 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
268 | brush.setStyle(QtCore.Qt.SolidPattern)
269 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
270 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
271 | brush.setStyle(QtCore.Qt.SolidPattern)
272 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
273 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
274 | brush.setStyle(QtCore.Qt.SolidPattern)
275 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
276 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
277 | brush.setStyle(QtCore.Qt.SolidPattern)
278 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
279 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
280 | brush.setStyle(QtCore.Qt.SolidPattern)
281 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
282 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
283 | brush.setStyle(QtCore.Qt.SolidPattern)
284 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
285 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
286 | brush.setStyle(QtCore.Qt.SolidPattern)
287 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
288 | self.Fear_label.setPalette(palette)
289 | font = QtGui.QFont()
290 | font.setFamily("Tw Cen MT")
291 | font.setPointSize(12)
292 | self.Fear_label.setFont(font)
293 | self.Fear_label.setObjectName("Fear_label")
294 | self.Sad_label = QtWidgets.QLabel(Dialog)
295 | self.Sad_label.setGeometry(QtCore.QRect(745, 140, 51, 31))
296 | palette = QtGui.QPalette()
297 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
298 | brush.setStyle(QtCore.Qt.SolidPattern)
299 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
300 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
301 | brush.setStyle(QtCore.Qt.SolidPattern)
302 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
303 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
304 | brush.setStyle(QtCore.Qt.SolidPattern)
305 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
306 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
307 | brush.setStyle(QtCore.Qt.SolidPattern)
308 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
309 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
310 | brush.setStyle(QtCore.Qt.SolidPattern)
311 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
312 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
313 | brush.setStyle(QtCore.Qt.SolidPattern)
314 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
315 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
316 | brush.setStyle(QtCore.Qt.SolidPattern)
317 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
318 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
319 | brush.setStyle(QtCore.Qt.SolidPattern)
320 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
321 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
322 | brush.setStyle(QtCore.Qt.SolidPattern)
323 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
324 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
325 | brush.setStyle(QtCore.Qt.SolidPattern)
326 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
327 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
328 | brush.setStyle(QtCore.Qt.SolidPattern)
329 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
330 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
331 | brush.setStyle(QtCore.Qt.SolidPattern)
332 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
333 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
334 | brush.setStyle(QtCore.Qt.SolidPattern)
335 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
336 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
337 | brush.setStyle(QtCore.Qt.SolidPattern)
338 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
339 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
340 | brush.setStyle(QtCore.Qt.SolidPattern)
341 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
342 | self.Sad_label.setPalette(palette)
343 | font = QtGui.QFont()
344 | font.setFamily("Tw Cen MT")
345 | font.setPointSize(12)
346 | self.Sad_label.setFont(font)
347 | self.Sad_label.setObjectName("Sad_label")
348 | self.Neutral_label = QtWidgets.QLabel(Dialog)
349 | self.Neutral_label.setGeometry(QtCore.QRect(820, 140, 81, 31))
350 | palette = QtGui.QPalette()
351 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
352 | brush.setStyle(QtCore.Qt.SolidPattern)
353 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
354 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
355 | brush.setStyle(QtCore.Qt.SolidPattern)
356 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
357 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
358 | brush.setStyle(QtCore.Qt.SolidPattern)
359 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
360 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
361 | brush.setStyle(QtCore.Qt.SolidPattern)
362 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
363 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
364 | brush.setStyle(QtCore.Qt.SolidPattern)
365 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
366 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
367 | brush.setStyle(QtCore.Qt.SolidPattern)
368 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
369 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
370 | brush.setStyle(QtCore.Qt.SolidPattern)
371 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
372 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
373 | brush.setStyle(QtCore.Qt.SolidPattern)
374 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
375 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
376 | brush.setStyle(QtCore.Qt.SolidPattern)
377 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
378 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
379 | brush.setStyle(QtCore.Qt.SolidPattern)
380 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
381 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
382 | brush.setStyle(QtCore.Qt.SolidPattern)
383 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
384 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
385 | brush.setStyle(QtCore.Qt.SolidPattern)
386 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
387 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
388 | brush.setStyle(QtCore.Qt.SolidPattern)
389 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
390 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
391 | brush.setStyle(QtCore.Qt.SolidPattern)
392 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
393 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
394 | brush.setStyle(QtCore.Qt.SolidPattern)
395 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
396 | self.Neutral_label.setPalette(palette)
397 | font = QtGui.QFont()
398 | font.setFamily("Tw Cen MT")
399 | font.setPointSize(12)
400 | self.Neutral_label.setFont(font)
401 | self.Neutral_label.setObjectName("Neutral_label")
402 | self.Surprise_label = QtWidgets.QLabel(Dialog)
403 | self.Surprise_label.setGeometry(QtCore.QRect(915, 140, 81, 31))
404 | palette = QtGui.QPalette()
405 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
406 | brush.setStyle(QtCore.Qt.SolidPattern)
407 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
408 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
409 | brush.setStyle(QtCore.Qt.SolidPattern)
410 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
411 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
412 | brush.setStyle(QtCore.Qt.SolidPattern)
413 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
414 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
415 | brush.setStyle(QtCore.Qt.SolidPattern)
416 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
417 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
418 | brush.setStyle(QtCore.Qt.SolidPattern)
419 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
420 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
421 | brush.setStyle(QtCore.Qt.SolidPattern)
422 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
423 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
424 | brush.setStyle(QtCore.Qt.SolidPattern)
425 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
426 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
427 | brush.setStyle(QtCore.Qt.SolidPattern)
428 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
429 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
430 | brush.setStyle(QtCore.Qt.SolidPattern)
431 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
432 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
433 | brush.setStyle(QtCore.Qt.SolidPattern)
434 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
435 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
436 | brush.setStyle(QtCore.Qt.SolidPattern)
437 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
438 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
439 | brush.setStyle(QtCore.Qt.SolidPattern)
440 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
441 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
442 | brush.setStyle(QtCore.Qt.SolidPattern)
443 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
444 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
445 | brush.setStyle(QtCore.Qt.SolidPattern)
446 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
447 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
448 | brush.setStyle(QtCore.Qt.SolidPattern)
449 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
450 | self.Surprise_label.setPalette(palette)
451 | font = QtGui.QFont()
452 | font.setFamily("Tw Cen MT")
453 | font.setPointSize(12)
454 | self.Surprise_label.setFont(font)
455 | self.Surprise_label.setObjectName("Surprise_label")
456 | self.A01 = QtWidgets.QLabel(Dialog)
457 | self.A01.setGeometry(QtCore.QRect(690, 236, 161, 21))
458 | palette = QtGui.QPalette()
459 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
460 | brush.setStyle(QtCore.Qt.SolidPattern)
461 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
462 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
463 | brush.setStyle(QtCore.Qt.SolidPattern)
464 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
465 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
466 | brush.setStyle(QtCore.Qt.SolidPattern)
467 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
468 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
469 | brush.setStyle(QtCore.Qt.SolidPattern)
470 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
471 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
472 | brush.setStyle(QtCore.Qt.SolidPattern)
473 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
474 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
475 | brush.setStyle(QtCore.Qt.SolidPattern)
476 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
477 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
478 | brush.setStyle(QtCore.Qt.SolidPattern)
479 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
480 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
481 | brush.setStyle(QtCore.Qt.SolidPattern)
482 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
483 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
484 | brush.setStyle(QtCore.Qt.SolidPattern)
485 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
486 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
487 | brush.setStyle(QtCore.Qt.SolidPattern)
488 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
489 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
490 | brush.setStyle(QtCore.Qt.SolidPattern)
491 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
492 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
493 | brush.setStyle(QtCore.Qt.SolidPattern)
494 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
495 | self.A01.setPalette(palette)
496 | font = QtGui.QFont()
497 | font.setFamily("Tw Cen MT")
498 | font.setPointSize(12)
499 | self.A01.setFont(font)
500 | self.A01.setObjectName("A01")
501 | self.A02 = QtWidgets.QLabel(Dialog)
502 | self.A02.setGeometry(QtCore.QRect(690, 279, 171, 21))
503 | palette = QtGui.QPalette()
504 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
505 | brush.setStyle(QtCore.Qt.SolidPattern)
506 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
507 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
508 | brush.setStyle(QtCore.Qt.SolidPattern)
509 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
510 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
511 | brush.setStyle(QtCore.Qt.SolidPattern)
512 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
513 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
514 | brush.setStyle(QtCore.Qt.SolidPattern)
515 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
516 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
517 | brush.setStyle(QtCore.Qt.SolidPattern)
518 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
519 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
520 | brush.setStyle(QtCore.Qt.SolidPattern)
521 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
522 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
523 | brush.setStyle(QtCore.Qt.SolidPattern)
524 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
525 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
526 | brush.setStyle(QtCore.Qt.SolidPattern)
527 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
528 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
529 | brush.setStyle(QtCore.Qt.SolidPattern)
530 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
531 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
532 | brush.setStyle(QtCore.Qt.SolidPattern)
533 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
534 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
535 | brush.setStyle(QtCore.Qt.SolidPattern)
536 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
537 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
538 | brush.setStyle(QtCore.Qt.SolidPattern)
539 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
540 | self.A02.setPalette(palette)
541 | font = QtGui.QFont()
542 | font.setFamily("Tw Cen MT")
543 | font.setPointSize(12)
544 | self.A02.setFont(font)
545 | self.A02.setObjectName("A02")
546 | self.A04 = QtWidgets.QLabel(Dialog)
547 | self.A04.setGeometry(QtCore.QRect(690, 322, 151, 21))
548 | palette = QtGui.QPalette()
549 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
550 | brush.setStyle(QtCore.Qt.SolidPattern)
551 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
552 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
553 | brush.setStyle(QtCore.Qt.SolidPattern)
554 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
555 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
556 | brush.setStyle(QtCore.Qt.SolidPattern)
557 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
558 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
559 | brush.setStyle(QtCore.Qt.SolidPattern)
560 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
561 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
562 | brush.setStyle(QtCore.Qt.SolidPattern)
563 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
564 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
565 | brush.setStyle(QtCore.Qt.SolidPattern)
566 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
567 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
568 | brush.setStyle(QtCore.Qt.SolidPattern)
569 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
570 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
571 | brush.setStyle(QtCore.Qt.SolidPattern)
572 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
573 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
574 | brush.setStyle(QtCore.Qt.SolidPattern)
575 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
576 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
577 | brush.setStyle(QtCore.Qt.SolidPattern)
578 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
579 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
580 | brush.setStyle(QtCore.Qt.SolidPattern)
581 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
582 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
583 | brush.setStyle(QtCore.Qt.SolidPattern)
584 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
585 | self.A04.setPalette(palette)
586 | font = QtGui.QFont()
587 | font.setFamily("Tw Cen MT")
588 | font.setPointSize(12)
589 | self.A04.setFont(font)
590 | self.A04.setObjectName("A04")
591 | self.A06 = QtWidgets.QLabel(Dialog)
592 | self.A06.setGeometry(QtCore.QRect(690, 408, 151, 21))
593 | palette = QtGui.QPalette()
594 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
595 | brush.setStyle(QtCore.Qt.SolidPattern)
596 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
597 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
598 | brush.setStyle(QtCore.Qt.SolidPattern)
599 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
600 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
601 | brush.setStyle(QtCore.Qt.SolidPattern)
602 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
603 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
604 | brush.setStyle(QtCore.Qt.SolidPattern)
605 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
606 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
607 | brush.setStyle(QtCore.Qt.SolidPattern)
608 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
609 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
610 | brush.setStyle(QtCore.Qt.SolidPattern)
611 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
612 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
613 | brush.setStyle(QtCore.Qt.SolidPattern)
614 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
615 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
616 | brush.setStyle(QtCore.Qt.SolidPattern)
617 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
618 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
619 | brush.setStyle(QtCore.Qt.SolidPattern)
620 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
621 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
622 | brush.setStyle(QtCore.Qt.SolidPattern)
623 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
624 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
625 | brush.setStyle(QtCore.Qt.SolidPattern)
626 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
627 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
628 | brush.setStyle(QtCore.Qt.SolidPattern)
629 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
630 | self.A06.setPalette(palette)
631 | font = QtGui.QFont()
632 | font.setFamily("Tw Cen MT")
633 | font.setPointSize(12)
634 | self.A06.setFont(font)
635 | self.A06.setObjectName("A06")
636 | self.A12 = QtWidgets.QLabel(Dialog)
637 | self.A12.setGeometry(QtCore.QRect(865, 231, 151, 31))
638 | palette = QtGui.QPalette()
639 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
640 | brush.setStyle(QtCore.Qt.SolidPattern)
641 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
642 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
643 | brush.setStyle(QtCore.Qt.SolidPattern)
644 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
645 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
646 | brush.setStyle(QtCore.Qt.SolidPattern)
647 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
648 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
649 | brush.setStyle(QtCore.Qt.SolidPattern)
650 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
651 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
652 | brush.setStyle(QtCore.Qt.SolidPattern)
653 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
654 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
655 | brush.setStyle(QtCore.Qt.SolidPattern)
656 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
657 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
658 | brush.setStyle(QtCore.Qt.SolidPattern)
659 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
660 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
661 | brush.setStyle(QtCore.Qt.SolidPattern)
662 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
663 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
664 | brush.setStyle(QtCore.Qt.SolidPattern)
665 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
666 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
667 | brush.setStyle(QtCore.Qt.SolidPattern)
668 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
669 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
670 | brush.setStyle(QtCore.Qt.SolidPattern)
671 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
672 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
673 | brush.setStyle(QtCore.Qt.SolidPattern)
674 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
675 | self.A12.setPalette(palette)
676 | font = QtGui.QFont()
677 | font.setFamily("Tw Cen MT")
678 | font.setPointSize(12)
679 | self.A12.setFont(font)
680 | self.A12.setObjectName("A12")
681 | self.A25 = QtWidgets.QLabel(Dialog)
682 | self.A25.setGeometry(QtCore.QRect(865, 403, 91, 31))
683 | palette = QtGui.QPalette()
684 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
685 | brush.setStyle(QtCore.Qt.SolidPattern)
686 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
687 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
688 | brush.setStyle(QtCore.Qt.SolidPattern)
689 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
690 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
691 | brush.setStyle(QtCore.Qt.SolidPattern)
692 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
693 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
694 | brush.setStyle(QtCore.Qt.SolidPattern)
695 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
696 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
697 | brush.setStyle(QtCore.Qt.SolidPattern)
698 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
699 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
700 | brush.setStyle(QtCore.Qt.SolidPattern)
701 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
702 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
703 | brush.setStyle(QtCore.Qt.SolidPattern)
704 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
705 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
706 | brush.setStyle(QtCore.Qt.SolidPattern)
707 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
708 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
709 | brush.setStyle(QtCore.Qt.SolidPattern)
710 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
711 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
712 | brush.setStyle(QtCore.Qt.SolidPattern)
713 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
714 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
715 | brush.setStyle(QtCore.Qt.SolidPattern)
716 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
717 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
718 | brush.setStyle(QtCore.Qt.SolidPattern)
719 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
720 | self.A25.setPalette(palette)
721 | font = QtGui.QFont()
722 | font.setFamily("Tw Cen MT")
723 | font.setPointSize(12)
724 | self.A25.setFont(font)
725 | self.A25.setObjectName("A25")
726 | self.A26 = QtWidgets.QLabel(Dialog)
727 | self.A26.setGeometry(QtCore.QRect(865, 448, 101, 31))
728 | palette = QtGui.QPalette()
729 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
730 | brush.setStyle(QtCore.Qt.SolidPattern)
731 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
732 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
733 | brush.setStyle(QtCore.Qt.SolidPattern)
734 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
735 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
736 | brush.setStyle(QtCore.Qt.SolidPattern)
737 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
738 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
739 | brush.setStyle(QtCore.Qt.SolidPattern)
740 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
741 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
742 | brush.setStyle(QtCore.Qt.SolidPattern)
743 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
744 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
745 | brush.setStyle(QtCore.Qt.SolidPattern)
746 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
747 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
748 | brush.setStyle(QtCore.Qt.SolidPattern)
749 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
750 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
751 | brush.setStyle(QtCore.Qt.SolidPattern)
752 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
753 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
754 | brush.setStyle(QtCore.Qt.SolidPattern)
755 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
756 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
757 | brush.setStyle(QtCore.Qt.SolidPattern)
758 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
759 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
760 | brush.setStyle(QtCore.Qt.SolidPattern)
761 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
762 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
763 | brush.setStyle(QtCore.Qt.SolidPattern)
764 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
765 | self.A26.setPalette(palette)
766 | font = QtGui.QFont()
767 | font.setFamily("Tw Cen MT")
768 | font.setPointSize(12)
769 | self.A26.setFont(font)
770 | self.A26.setObjectName("A26")
771 | self.A09 = QtWidgets.QLabel(Dialog)
772 | self.A09.setGeometry(QtCore.QRect(690, 453, 151, 21))
773 | palette = QtGui.QPalette()
774 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
775 | brush.setStyle(QtCore.Qt.SolidPattern)
776 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
777 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
778 | brush.setStyle(QtCore.Qt.SolidPattern)
779 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
780 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
781 | brush.setStyle(QtCore.Qt.SolidPattern)
782 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
783 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
784 | brush.setStyle(QtCore.Qt.SolidPattern)
785 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
786 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
787 | brush.setStyle(QtCore.Qt.SolidPattern)
788 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
789 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
790 | brush.setStyle(QtCore.Qt.SolidPattern)
791 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
792 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
793 | brush.setStyle(QtCore.Qt.SolidPattern)
794 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
795 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
796 | brush.setStyle(QtCore.Qt.SolidPattern)
797 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
798 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
799 | brush.setStyle(QtCore.Qt.SolidPattern)
800 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
801 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
802 | brush.setStyle(QtCore.Qt.SolidPattern)
803 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
804 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
805 | brush.setStyle(QtCore.Qt.SolidPattern)
806 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
807 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
808 | brush.setStyle(QtCore.Qt.SolidPattern)
809 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
810 | self.A09.setPalette(palette)
811 | font = QtGui.QFont()
812 | font.setFamily("Tw Cen MT")
813 | font.setPointSize(12)
814 | self.A09.setFont(font)
815 | self.A09.setObjectName("A09")
816 | self.loadvideo = QtWidgets.QPushButton(Dialog)
817 | self.loadvideo.setGeometry(QtCore.QRect(30, 560, 200, 90))
818 | font = QtGui.QFont()
819 | font.setFamily("Tw Cen MT")
820 | font.setPointSize(20)
821 | font.setBold(True)
822 | font.setItalic(True)
823 | font.setWeight(75)
824 | self.loadvideo.setFont(font)
825 | self.loadvideo.setIconSize(QtCore.QSize(15, 15))
826 | self.loadvideo.setObjectName("loadvideo")
827 | self.loadcamera = QtWidgets.QPushButton(Dialog)
828 | self.loadcamera.setGeometry(QtCore.QRect(250, 560, 200, 90))
829 | font = QtGui.QFont()
830 | font.setFamily("Tw Cen MT")
831 | font.setPointSize(20)
832 | self.loadcamera.setFont(font)
833 | self.loadcamera.setObjectName("loadcamera")
834 | self.Start = QtWidgets.QPushButton(Dialog)
835 | self.Start.setGeometry(QtCore.QRect(250, 560, 201, 91))
836 | font = QtGui.QFont()
837 | font.setFamily("Tw Cen MT")
838 | font.setPointSize(20)
839 | font.setBold(True)
840 | font.setItalic(True)
841 | font.setWeight(75)
842 | self.Start.setFont(font)
843 | self.Start.setObjectName("Start")
844 | self.EU = QtWidgets.QPushButton(Dialog)
845 | self.EU.setGeometry(QtCore.QRect(690, 30, 131, 28))
846 | font = QtGui.QFont()
847 | font.setFamily("Tw Cen MT")
848 | font.setPointSize(12)
849 | font.setBold(False)
850 | font.setItalic(True)
851 | font.setWeight(50)
852 | self.EU.setFont(font)
853 | self.EU.setObjectName("EU")
854 | self.AU = QtWidgets.QPushButton(Dialog)
855 | self.AU.setGeometry(QtCore.QRect(690, 193, 111, 28))
856 | font = QtGui.QFont()
857 | font.setFamily("Tw Cen MT")
858 | font.setPointSize(12)
859 | font.setBold(False)
860 | font.setItalic(True)
861 | font.setWeight(50)
862 | self.AU.setFont(font)
863 | self.AU.setObjectName("AU")
864 | self.Reset = QtWidgets.QPushButton(Dialog)
865 | self.Reset.setGeometry(QtCore.QRect(471, 560, 200, 90))
866 | font = QtGui.QFont()
867 | font.setFamily("Tw Cen MT")
868 | font.setPointSize(20)
869 | font.setBold(True)
870 | font.setItalic(True)
871 | font.setWeight(75)
872 | self.Reset.setFont(font)
873 | self.Reset.setObjectName("Reset")
874 | self.RecordStop = QtWidgets.QPushButton(Dialog)
875 | self.RecordStop.setGeometry(QtCore.QRect(250, 560, 200, 90))
876 | font = QtGui.QFont()
877 | font.setFamily("Tw Cen MT")
878 | font.setPointSize(20)
879 | font.setBold(True)
880 | font.setItalic(True)
881 | font.setWeight(75)
882 | self.RecordStop.setFont(font)
883 | self.RecordStop.setObjectName("RecordStop")
884 | self.prob_label = QtWidgets.QLabel(Dialog)
885 | self.prob_label.setGeometry(QtCore.QRect(690, 493, 341, 31))
886 | font = QtGui.QFont()
887 | font.setFamily("Tw Cen MT")
888 | font.setPointSize(12)
889 | self.prob_label.setFont(font)
890 | self.prob_label.setObjectName("prob_label")
891 | self.filename = QtWidgets.QLabel(Dialog)
892 | self.filename.setGeometry(QtCore.QRect(10, 560, 241, 81))
893 | font = QtGui.QFont()
894 | font.setFamily("Tw Cen MT")
895 | font.setPointSize(12)
896 | self.filename.setFont(font)
897 | self.filename.setText("")
898 | self.filename.setObjectName("filename")
899 | self.truth_lie = QtWidgets.QPushButton(Dialog)
900 | self.truth_lie.setGeometry(QtCore.QRect(502, 40, 161, 51))
901 | font = QtGui.QFont()
902 | font.setFamily("Tw Cen MT")
903 | font.setPointSize(16)
904 | font.setBold(True)
905 | font.setItalic(True)
906 | font.setWeight(75)
907 | self.truth_lie.setFont(font)
908 | self.truth_lie.setText("")
909 | self.truth_lie.setObjectName("truth_lie")
910 | self.Startlabel = QtWidgets.QLabel(Dialog)
911 | self.Startlabel.setGeometry(QtCore.QRect(40, 650, 671, 51))
912 | font = QtGui.QFont()
913 | font.setFamily("Tw Cen MT")
914 | font.setPointSize(14)
915 | font.setBold(False)
916 | font.setWeight(50)
917 | self.Startlabel.setFont(font)
918 | self.Startlabel.setText("")
919 | self.Startlabel.setObjectName("Startlabel")
920 | self.A05 = QtWidgets.QLabel(Dialog)
921 | self.A05.setGeometry(QtCore.QRect(690, 365, 161, 21))
922 | palette = QtGui.QPalette()
923 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
924 | brush.setStyle(QtCore.Qt.SolidPattern)
925 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
926 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
927 | brush.setStyle(QtCore.Qt.SolidPattern)
928 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
929 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
930 | brush.setStyle(QtCore.Qt.SolidPattern)
931 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
932 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
933 | brush.setStyle(QtCore.Qt.SolidPattern)
934 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
935 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
936 | brush.setStyle(QtCore.Qt.SolidPattern)
937 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
938 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
939 | brush.setStyle(QtCore.Qt.SolidPattern)
940 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
941 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
942 | brush.setStyle(QtCore.Qt.SolidPattern)
943 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
944 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
945 | brush.setStyle(QtCore.Qt.SolidPattern)
946 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
947 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
948 | brush.setStyle(QtCore.Qt.SolidPattern)
949 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
950 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
951 | brush.setStyle(QtCore.Qt.SolidPattern)
952 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
953 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
954 | brush.setStyle(QtCore.Qt.SolidPattern)
955 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
956 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
957 | brush.setStyle(QtCore.Qt.SolidPattern)
958 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
959 | self.A05.setPalette(palette)
960 | font = QtGui.QFont()
961 | font.setFamily("Tw Cen MT")
962 | font.setPointSize(12)
963 | self.A05.setFont(font)
964 | self.A05.setObjectName("A05")
965 | self.A15 = QtWidgets.QLabel(Dialog)
966 | self.A15.setGeometry(QtCore.QRect(865, 274, 191, 31))
967 | palette = QtGui.QPalette()
968 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
969 | brush.setStyle(QtCore.Qt.SolidPattern)
970 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
971 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
972 | brush.setStyle(QtCore.Qt.SolidPattern)
973 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
974 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
975 | brush.setStyle(QtCore.Qt.SolidPattern)
976 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
977 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
978 | brush.setStyle(QtCore.Qt.SolidPattern)
979 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
980 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
981 | brush.setStyle(QtCore.Qt.SolidPattern)
982 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
983 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
984 | brush.setStyle(QtCore.Qt.SolidPattern)
985 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
986 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
987 | brush.setStyle(QtCore.Qt.SolidPattern)
988 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
989 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
990 | brush.setStyle(QtCore.Qt.SolidPattern)
991 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
992 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
993 | brush.setStyle(QtCore.Qt.SolidPattern)
994 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
995 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
996 | brush.setStyle(QtCore.Qt.SolidPattern)
997 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
998 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
999 | brush.setStyle(QtCore.Qt.SolidPattern)
1000 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
1001 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
1002 | brush.setStyle(QtCore.Qt.SolidPattern)
1003 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
1004 | self.A15.setPalette(palette)
1005 | font = QtGui.QFont()
1006 | font.setFamily("Tw Cen MT")
1007 | font.setPointSize(12)
1008 | self.A15.setFont(font)
1009 | self.A15.setObjectName("A15")
1010 | self.A17 = QtWidgets.QLabel(Dialog)
1011 | self.A17.setGeometry(QtCore.QRect(865, 322, 101, 21))
1012 | palette = QtGui.QPalette()
1013 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
1014 | brush.setStyle(QtCore.Qt.SolidPattern)
1015 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
1016 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
1017 | brush.setStyle(QtCore.Qt.SolidPattern)
1018 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
1019 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
1020 | brush.setStyle(QtCore.Qt.SolidPattern)
1021 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
1022 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
1023 | brush.setStyle(QtCore.Qt.SolidPattern)
1024 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
1025 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
1026 | brush.setStyle(QtCore.Qt.SolidPattern)
1027 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
1028 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
1029 | brush.setStyle(QtCore.Qt.SolidPattern)
1030 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
1031 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
1032 | brush.setStyle(QtCore.Qt.SolidPattern)
1033 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
1034 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
1035 | brush.setStyle(QtCore.Qt.SolidPattern)
1036 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
1037 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
1038 | brush.setStyle(QtCore.Qt.SolidPattern)
1039 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
1040 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
1041 | brush.setStyle(QtCore.Qt.SolidPattern)
1042 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
1043 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
1044 | brush.setStyle(QtCore.Qt.SolidPattern)
1045 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
1046 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
1047 | brush.setStyle(QtCore.Qt.SolidPattern)
1048 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
1049 | self.A17.setPalette(palette)
1050 | font = QtGui.QFont()
1051 | font.setFamily("Tw Cen MT")
1052 | font.setPointSize(12)
1053 | self.A17.setFont(font)
1054 | self.A17.setObjectName("A17")
1055 | self.A20 = QtWidgets.QLabel(Dialog)
1056 | self.A20.setGeometry(QtCore.QRect(865, 360, 121, 31))
1057 | palette = QtGui.QPalette()
1058 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
1059 | brush.setStyle(QtCore.Qt.SolidPattern)
1060 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
1061 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
1062 | brush.setStyle(QtCore.Qt.SolidPattern)
1063 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
1064 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
1065 | brush.setStyle(QtCore.Qt.SolidPattern)
1066 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush)
1067 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
1068 | brush.setStyle(QtCore.Qt.SolidPattern)
1069 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
1070 | brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
1071 | brush.setStyle(QtCore.Qt.SolidPattern)
1072 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
1073 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
1074 | brush.setStyle(QtCore.Qt.SolidPattern)
1075 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
1076 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
1077 | brush.setStyle(QtCore.Qt.SolidPattern)
1078 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush)
1079 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
1080 | brush.setStyle(QtCore.Qt.SolidPattern)
1081 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
1082 | brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
1083 | brush.setStyle(QtCore.Qt.SolidPattern)
1084 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
1085 | brush = QtGui.QBrush(QtGui.QColor(8, 8, 8))
1086 | brush.setStyle(QtCore.Qt.SolidPattern)
1087 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
1088 | brush = QtGui.QBrush(QtGui.QColor(2, 2, 2))
1089 | brush.setStyle(QtCore.Qt.SolidPattern)
1090 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush)
1091 | brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
1092 | brush.setStyle(QtCore.Qt.SolidPattern)
1093 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
1094 | self.A20.setPalette(palette)
1095 | font = QtGui.QFont()
1096 | font.setFamily("Tw Cen MT")
1097 | font.setPointSize(12)
1098 | self.A20.setFont(font)
1099 | self.A20.setObjectName("A20")
1100 | self.Record = QtWidgets.QTextEdit(Dialog)
1101 | self.Record.setGeometry(QtCore.QRect(1080, 180, 321, 391))
1102 | self.Record.setObjectName("Record")
1103 | self.camera_start = QtWidgets.QPushButton(Dialog)
1104 | self.camera_start.setGeometry(QtCore.QRect(1210, 590, 81, 41))
1105 | font = QtGui.QFont()
1106 | font.setFamily("Tw Cen MT")
1107 | font.setPointSize(14)
1108 | self.camera_start.setFont(font)
1109 | self.camera_start.setIconSize(QtCore.QSize(0, 20))
1110 | self.camera_start.setObjectName("camera_start")
1111 | self.Clear = QtWidgets.QPushButton(Dialog)
1112 | self.Clear.setGeometry(QtCore.QRect(1110, 590, 81, 41))
1113 | font = QtGui.QFont()
1114 | font.setFamily("Tw Cen MT")
1115 | font.setPointSize(14)
1116 | self.Clear.setFont(font)
1117 | self.Clear.setIconSize(QtCore.QSize(0, 20))
1118 | self.Clear.setObjectName("Clear")
1119 | self.Finish = QtWidgets.QPushButton(Dialog)
1120 | self.Finish.setGeometry(QtCore.QRect(471, 560, 200, 90))
1121 | font = QtGui.QFont()
1122 | font.setFamily("Tw Cen MT")
1123 | font.setPointSize(20)
1124 | font.setBold(True)
1125 | font.setItalic(True)
1126 | font.setWeight(75)
1127 | self.Finish.setFont(font)
1128 | self.Finish.setObjectName("Finish")
1129 | self.camera_finish = QtWidgets.QPushButton(Dialog)
1130 | self.camera_finish.setGeometry(QtCore.QRect(1310, 590, 81, 41))
1131 | font = QtGui.QFont()
1132 | font.setFamily("Tw Cen MT")
1133 | font.setPointSize(14)
1134 | self.camera_finish.setFont(font)
1135 | self.camera_finish.setObjectName("camera_finish")
1136 | self.Problem = QtWidgets.QTextEdit(Dialog)
1137 | self.Problem.setGeometry(QtCore.QRect(1080, 80, 321, 91))
1138 | self.Problem.setObjectName("Problem")
1139 | self.Record_area = QtWidgets.QPushButton(Dialog)
1140 | self.Record_area.setGeometry(QtCore.QRect(1080, 30, 131, 28))
1141 | font = QtGui.QFont()
1142 | font.setFamily("Tw Cen MT")
1143 | font.setPointSize(12)
1144 | font.setBold(False)
1145 | font.setItalic(True)
1146 | font.setWeight(50)
1147 | self.Record_area.setFont(font)
1148 | self.Record_area.setObjectName("Record_area")
1149 | self.User0 = QtWidgets.QPushButton(Dialog)
1150 | self.User0.setGeometry(QtCore.QRect(410, 280, 251, 71))
1151 | font = QtGui.QFont()
1152 | font.setFamily("Tw Cen MT")
1153 | font.setPointSize(20)
1154 | self.User0.setFont(font)
1155 | self.User0.setIconSize(QtCore.QSize(0, 20))
1156 | self.User0.setObjectName("User0")
1157 | self.User2 = QtWidgets.QPushButton(Dialog)
1158 | self.User2.setGeometry(QtCore.QRect(410, 110, 251, 81))
1159 | font = QtGui.QFont()
1160 | font.setFamily("Tw Cen MT")
1161 | font.setPointSize(20)
1162 | self.User2.setFont(font)
1163 | self.User2.setIconSize(QtCore.QSize(0, 20))
1164 | self.User2.setObjectName("User2")
1165 | self.User1 = QtWidgets.QPushButton(Dialog)
1166 | self.User1.setGeometry(QtCore.QRect(410, 190, 251, 91))
1167 | font = QtGui.QFont()
1168 | font.setFamily("Tw Cen MT")
1169 | font.setPointSize(20)
1170 | self.User1.setFont(font)
1171 | self.User1.setIconSize(QtCore.QSize(0, 20))
1172 | self.User1.setObjectName("User1")
1173 |
1174 | self.retranslateUi(Dialog)
1175 | QtCore.QMetaObject.connectSlotsByName(Dialog)
1176 |
1177 | def retranslateUi(self, Dialog):
1178 | _translate = QtCore.QCoreApplication.translate
1179 | Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
1180 | self.Happly_label.setText(_translate("Dialog", "Happy"))
1181 | self.Angry_label.setText(_translate("Dialog", "Angry"))
1182 | self.DIsgust_label.setText(_translate("Dialog", "Disgust"))
1183 | self.Fear_label.setText(_translate("Dialog", "Fear"))
1184 | self.Sad_label.setText(_translate("Dialog", "Sad"))
1185 | self.Neutral_label.setText(_translate("Dialog", "Neutral"))
1186 | self.Surprise_label.setText(_translate("Dialog", "Surprise"))
1187 | self.A01.setText(_translate("Dialog", "Inner brow raiser"))
1188 | self.A02.setText(_translate("Dialog", "Outer brow raiser"))
1189 | self.A04.setText(_translate("Dialog", "Brow lower"))
1190 | self.A06.setText(_translate("Dialog", "Cheek raiser"))
1191 | self.A12.setText(_translate("Dialog", "Lip corner puller"))
1192 | self.A25.setText(_translate("Dialog", "Lips part"))
1193 | self.A26.setText(_translate("Dialog", "Jaw drop"))
1194 | self.A09.setText(_translate("Dialog", "Nose wrinkle"))
1195 | self.loadvideo.setText(_translate("Dialog", "Video"))
1196 | self.loadcamera.setText(_translate("Dialog", "Camera"))
1197 | self.Start.setText(_translate("Dialog", "Start"))
1198 | self.EU.setText(_translate("Dialog", "Emotion Unit"))
1199 | self.AU.setText(_translate("Dialog", "Action Unit"))
1200 | self.Reset.setText(_translate("Dialog", "Reset"))
1201 | self.RecordStop.setText(_translate("Dialog", "RecordStop"))
1202 | self.prob_label.setText(_translate("Dialog", "The probability of deception:"))
1203 | self.A05.setText(_translate("Dialog", "Upper Lid Raiser"))
1204 | self.A15.setText(_translate("Dialog", "Lip corner depressor"))
1205 | self.A17.setText(_translate("Dialog", "Chin raiser"))
1206 | self.A20.setText(_translate("Dialog", "Lip Stretcher"))
1207 | self.camera_start.setText(_translate("Dialog", "Start"))
1208 | self.Clear.setText(_translate("Dialog", "Clear"))
1209 | self.Finish.setText(_translate("Dialog", "Finish"))
1210 | self.camera_finish.setText(_translate("Dialog", "Finish"))
1211 | self.Record_area.setText(_translate("Dialog", "Record area"))
1212 | self.User0.setText(_translate("Dialog", "User_0"))
1213 | self.User2.setText(_translate("Dialog", "User_2"))
1214 | self.User1.setText(_translate("Dialog", "User_1"))
1215 |
1216 |
1217 | if __name__ == "__main__":
1218 | import sys
1219 | app = QtWidgets.QApplication(sys.argv)
1220 | Dialog = QtWidgets.QDialog()
1221 | ui = Ui_Dialog()
1222 | ui.setupUi(Dialog)
1223 | Dialog.show()
1224 | sys.exit(app.exec_())
1225 |
--------------------------------------------------------------------------------