├── 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 | ![image](https://github.com/come880412/Deception_detection/blob/main/img/Demo.png) 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 | --------------------------------------------------------------------------------