├── .gitignore ├── 1.original-system ├── fnc │ └── matching.py ├── registration.py └── verification.py ├── 2.parallelized-system ├── fnc │ ├── matching.py │ └── parallelPool.py ├── registration.py └── verification.py ├── 3.GUI-integrated-system ├── application.py ├── backend │ ├── captureVideo.py │ ├── faceDetection.py │ ├── faceEncode.py │ ├── faceMatch.py │ ├── faceRecognition.py │ ├── faceRegistration.py │ └── logfile.py ├── build.sh ├── frontend │ ├── design.py │ └── design.ui ├── haarcascade_frontalface_default.xml ├── implement.sh ├── logfile │ ├── 1.log │ ├── 10.log │ ├── 2.log │ ├── 3.log │ ├── 4.log │ ├── 5.log │ ├── 6.log │ ├── 7.log │ ├── 8.log │ └── 9.log ├── main.py └── run.sh ├── README.md ├── before-registration.png ├── compare.png ├── multi-core.png ├── pros-and-cons.png ├── register-successfully.png ├── single-core.png └── verification.png /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | MANIFEST 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | .pytest_cache/ 49 | 50 | # Translations 51 | *.mo 52 | *.pot 53 | 54 | # Django stuff: 55 | *.log 56 | local_settings.py 57 | db.sqlite3 58 | 59 | # Flask stuff: 60 | instance/ 61 | .webassets-cache 62 | 63 | # Scrapy stuff: 64 | .scrapy 65 | 66 | # Sphinx documentation 67 | docs/_build/ 68 | 69 | # PyBuilder 70 | target/ 71 | 72 | # Jupyter Notebook 73 | .ipynb_checkpoints 74 | 75 | # pyenv 76 | .python-version 77 | 78 | # celery beat schedule file 79 | celerybeat-schedule 80 | 81 | # SageMath parsed files 82 | *.sage.py 83 | 84 | # Environments 85 | .env 86 | .venv 87 | env/ 88 | venv/ 89 | ENV/ 90 | env.bak/ 91 | venv.bak/ 92 | 93 | # Spyder project settings 94 | .spyderproject 95 | .spyproject 96 | 97 | # Rope project settings 98 | .ropeproject 99 | 100 | # mkdocs documentation 101 | /site 102 | 103 | # mypy 104 | .mypy_cache/ 105 | -------------------------------------------------------------------------------- /1.original-system/fnc/matching.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | from os import listdir 5 | from fnmatch import filter 6 | from scipy.io import loadmat 7 | from face_recognition import compare_faces 8 | 9 | 10 | #------------------------------------------------------------------------------ 11 | # Verify whether a template exists in database 12 | #------------------------------------------------------------------------------ 13 | def isTempExisted(test_temp, ft_path, threshold): 14 | files = listdir(ft_path) 15 | numfile = len(filter(files, '*.mat')) 16 | if numfile == 0: 17 | return False 18 | else: 19 | for file in files: 20 | db_temp = loadmat("%s%s" % (ft_path, file))['temp_code'] 21 | if compare_faces(test_temp, db_temp, threshold)[0]: 22 | return True 23 | return False 24 | 25 | 26 | #------------------------------------------------------------------------------ 27 | # Verify whether a template is in database, return (bool, name, face image) 28 | #------------------------------------------------------------------------------ 29 | def matching(test_temp, ft_path, threshold): 30 | if not len(test_temp): 31 | return False, '', [] 32 | 33 | files = listdir(ft_path) 34 | numfile = len(filter(files, '*.mat')) 35 | if numfile == 0: 36 | return False, '', [] 37 | else: 38 | for file in files: 39 | db_data = loadmat("%s%s" % (ft_path, file)) 40 | db_temp = db_data['temp_code'] 41 | db_face = db_data['face'] 42 | if compare_faces(test_temp, db_temp, threshold)[0]: 43 | return True, file[:-4], db_face 44 | return False, '', [] 45 | 46 | -------------------------------------------------------------------------------- /1.original-system/registration.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | import cv2 5 | import numpy as np 6 | from face_recognition import face_locations, face_encodings 7 | from fnc.matching import isTempExisted 8 | from scipy.io import savemat 9 | 10 | 11 | #------------------------------------------------------------------------------ 12 | # Draw face localtions on an image 13 | #------------------------------------------------------------------------------ 14 | def draw_face_locations(img, face_locs): 15 | corner1 = None 16 | corner2 = None 17 | len_locs = len(face_locs) 18 | if len_locs: 19 | corner1 = np.zeros([len_locs, 2], dtype=int) 20 | corner2 = np.zeros([len_locs, 2], dtype=int) 21 | cl_blue = (255, 0, 0) 22 | i = 0 23 | for (x,y,w,h) in face_locs: 24 | c1 = (h, x) 25 | c2 = (y, w) 26 | corner1[i,:] = c1 27 | corner2[i,:] = c2 28 | cv2.rectangle(img, c1, c2, cl_blue, 3) 29 | i += 1 30 | return img, corner1, corner2 31 | 32 | 33 | #------------------------------------------------------------------------------ 34 | # Main 35 | #------------------------------------------------------------------------------ 36 | ft_path = "./template/" 37 | name = input(">>> Please type name of the registration person: ") 38 | threshold = 0.4 39 | cap = cv2.VideoCapture(0) 40 | 41 | while True: 42 | # Detect face 43 | ret, img = cap.read() 44 | face_locs = face_locations(img) 45 | img_loc, corner1, corner2 = draw_face_locations(img, face_locs) 46 | cv2.imshow("Facial Recognition System", img_loc) 47 | 48 | # Encode face 49 | if corner1 is not None: 50 | len_locs = len(face_locs) 51 | if len_locs!=1: 52 | print("In registration mode, there must be one person in the front of camera") 53 | else: 54 | x = face_locs[0][0]; y = face_locs[0][1] 55 | w = face_locs[0][2]; h = face_locs[0][3] 56 | face = img[x:w+1, h:y+1] 57 | face_code = face_encodings(face) 58 | if len(face_code): 59 | if isTempExisted(face_code, ft_path, threshold): 60 | print("Your template is registered before") 61 | else: 62 | save_dict = {"temp_code": face_code, "face":face} 63 | savemat("%s%s.mat" % (ft_path, name), save_dict) 64 | print("%s, your registration is succesful" % name) 65 | break 66 | 67 | # Exit 68 | k = cv2.waitKey(5) & 0xff 69 | if k == 27: 70 | break 71 | 72 | cap.release() 73 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /1.original-system/verification.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | import cv2 5 | import numpy as np 6 | from face_recognition import face_locations, face_encodings 7 | from fnc.matching import matching 8 | 9 | 10 | #------------------------------------------------------------------------------ 11 | # Draw face localtions on an image 12 | #------------------------------------------------------------------------------ 13 | def draw_face_locations(img, face_locs): 14 | corner1 = None 15 | corner2 = None 16 | len_locs = len(face_locs) 17 | if len_locs: 18 | corner1 = np.zeros([len_locs, 2], dtype=int) 19 | corner2 = np.zeros([len_locs, 2], dtype=int) 20 | cl_blue = (255, 0, 0) 21 | i = 0 22 | for (x,y,w,h) in face_locs: 23 | c1 = (h, x) 24 | c2 = (y, w) 25 | corner1[i,:] = c1 26 | corner2[i,:] = c2 27 | cv2.rectangle(img, c1, c2, cl_blue, 3) 28 | i += 1 29 | return img, corner1, corner2 30 | 31 | 32 | #------------------------------------------------------------------------------ 33 | # Main 34 | #------------------------------------------------------------------------------ 35 | ft_path = "template/" 36 | threshold = 0.4 37 | cap = cv2.VideoCapture(0) 38 | 39 | while True: 40 | # Detect face 41 | ret, img = cap.read() 42 | face_locs = face_locations(img) 43 | img_loc, corner1, corner2 = draw_face_locations(img, face_locs) 44 | cv2.imshow("Facial Recognition System", img_loc) 45 | 46 | # Encode face 47 | if corner1 is not None: 48 | for face_loc in face_locs: 49 | x = face_loc[0]; y = face_loc[1] 50 | w = face_loc[2]; h = face_loc[3] 51 | face = img[x:w+1, h:y+1] 52 | face_code = face_encodings(face) 53 | flg, name, _ = matching(face_code, ft_path, threshold) 54 | if flg: 55 | print(name, "is recognized") 56 | 57 | # Exit 58 | k = cv2.waitKey(5) & 0xff 59 | if k == 27: 60 | break 61 | 62 | cap.release() 63 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /2.parallelized-system/fnc/matching.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | from os import listdir 5 | from fnmatch import filter 6 | from scipy.io import loadmat 7 | from face_recognition import compare_faces 8 | 9 | 10 | #------------------------------------------------------------------------------ 11 | # Verify whether a template exists in database 12 | #------------------------------------------------------------------------------ 13 | def isTempExisted(test_temp, ft_path, threshold): 14 | files = listdir(ft_path) 15 | numfile = len(filter(files, '*.mat')) 16 | if numfile == 0: 17 | return False 18 | else: 19 | for file in files: 20 | db_temp = loadmat("%s%s" % (ft_path, file))['temp_code'] 21 | if compare_faces(test_temp, db_temp, threshold)[0]: 22 | return True 23 | return False 24 | 25 | 26 | #------------------------------------------------------------------------------ 27 | # Verify whether a template is in database, return (bool, name, face image) 28 | #------------------------------------------------------------------------------ 29 | def matching(test_temp, ft_path, threshold): 30 | files = listdir(ft_path) 31 | numfile = len(filter(files, '*.mat')) 32 | if numfile == 0: 33 | return False, '', [] 34 | else: 35 | for file in files: 36 | db_data = loadmat("%s%s" % (ft_path, file)) 37 | db_temp = db_data['temp_code'] 38 | db_face = db_data['face'] 39 | if compare_faces(test_temp, db_temp, threshold)[0]: 40 | return True, file[:-4], db_face 41 | return False, '', [] 42 | 43 | -------------------------------------------------------------------------------- /2.parallelized-system/fnc/parallelPool.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | import cv2 5 | import numpy as np 6 | from face_recognition import face_locations, face_encodings 7 | from scipy.io import savemat 8 | from fnc.matching import isTempExisted, matching 9 | 10 | 11 | #------------------------------------------------------------------------------ 12 | # Draw face localtions on an image 13 | #------------------------------------------------------------------------------ 14 | def draw_face_locations(img, face_locs): 15 | corner1 = [] 16 | corner2 = [] 17 | len_locs = len(face_locs) 18 | if len_locs: 19 | corner1 = np.zeros([len_locs, 2], dtype=int) 20 | corner2 = np.zeros([len_locs, 2], dtype=int) 21 | cl_blue = (255, 0, 0) 22 | i = 0 23 | for (x,y,w,h) in face_locs: 24 | c1 = (h, x) 25 | c2 = (y, w) 26 | corner1[i,:] = c1 27 | corner2[i,:] = c2 28 | cv2.rectangle(img, c1, c2, cl_blue, 3) 29 | i += 1 30 | return img, corner1, corner2 31 | 32 | 33 | #------------------------------------------------------------------------------ 34 | # Pool of displaying video 35 | #------------------------------------------------------------------------------ 36 | def pool_display_video(cap, conn_loc, conn_encd): 37 | ret, img = cap.read() 38 | conn_loc.send(img) 39 | while 1: 40 | # Read image from video 41 | ret, img = cap.read() 42 | 43 | # Communicate with Location pool, send data to Encode pool 44 | face_locs = [] 45 | if conn_loc.poll(): 46 | face_locs = conn_loc.recv() 47 | conn_encd.send(img) 48 | conn_loc.send(img) 49 | 50 | # Get data from Encode pool (implicitly Registration or Verification) 51 | if conn_encd.poll(): 52 | read = conn_encd.recv() 53 | if isinstance(read, str) and read=="break": # Registration 54 | return 55 | if isinstance(read, list) and len(read): # Verification 56 | print(">>> Recognized people:") 57 | for name in read: 58 | print(" %s" % name) 59 | 60 | # Display image 61 | img_loc, corner1, corner2 = draw_face_locations(img, face_locs) 62 | cv2.imshow("Facial Recognition System", img_loc) 63 | 64 | # Wait for break signal from keyboard and send to another pools 65 | k = cv2.waitKey(5) & 0xff 66 | if k == 27: 67 | conn_loc.send("break") 68 | conn_encd.send("break") 69 | return 70 | 71 | 72 | #------------------------------------------------------------------------------ 73 | # Pool of localizing face 74 | #------------------------------------------------------------------------------ 75 | def pool_face_localize(conn_disp, conn_encd): 76 | while 1: 77 | if conn_disp.poll(): 78 | img = conn_disp.recv() 79 | if isinstance(img, str) and img=="break": 80 | return 81 | face_locs = face_locations(img) 82 | conn_disp.send(face_locs) 83 | conn_encd.send(face_locs) 84 | 85 | if conn_encd.poll(): 86 | read = conn_encd.recv() 87 | if isinstance(read, str) and read=="break": 88 | return 89 | 90 | 91 | #------------------------------------------------------------------------------ 92 | # Pool of registration 93 | #------------------------------------------------------------------------------ 94 | def pool_registration(conn_disp, conn_loc, ft_path, name, threshold): 95 | while True: 96 | # Get data 97 | img = [] 98 | face_locs = [] 99 | if conn_loc.poll(): 100 | face_locs = conn_loc.recv() 101 | img = conn_disp.recv() 102 | 103 | # Break signal 104 | if conn_disp.poll(): 105 | read = conn_disp.recv() 106 | if isinstance(read, str) and read=="break": 107 | return 108 | 109 | # Encode face 110 | face_code = [] 111 | face = [] 112 | len_locs = len(face_locs) 113 | if len_locs and len(img): 114 | if len_locs!=1: 115 | print(">>> In registration mode, there must be one person in the front of camera!!!") 116 | else: 117 | x = face_locs[0][0]; y = face_locs[0][1] 118 | w = face_locs[0][2]; h = face_locs[0][3] 119 | face = img[x:w+1, h:y+1] 120 | face_code = face_encodings(face) 121 | 122 | # Verify whether the face template existed 123 | if len(face_code): 124 | if isTempExisted(face_code, ft_path, threshold): 125 | print(">>> Your template is registered before!") 126 | else: 127 | savemat("%s%s.mat" % (ft_path, name), \ 128 | {"temp_code": face_code, "face":face}) 129 | print(">>> %s, your registration is succesful." % name) 130 | 131 | # Send break signal to Display and Location pool 132 | if conn_disp.poll(): 133 | conn_disp.recv() 134 | if conn_loc.poll(): 135 | conn_loc.recv() 136 | conn_disp.send("break") 137 | conn_loc.send("break") 138 | return 139 | 140 | 141 | #------------------------------------------------------------------------------ 142 | # Pool of verification 143 | #------------------------------------------------------------------------------ 144 | def pool_verification(conn_disp, conn_loc, ft_path, threshold): 145 | while True: 146 | # Get data from Location pool 147 | img = [] 148 | face_locs = [] 149 | if conn_loc.poll(): 150 | face_locs = conn_loc.recv() 151 | img = conn_disp.recv() 152 | 153 | # Break signal from Display pool 154 | if conn_disp.poll(): 155 | read = conn_disp.recv() 156 | if isinstance(read, str) and read=="break": 157 | return 158 | 159 | # Encode faces 160 | len_locs = len(face_locs) 161 | face_codes = []; face = [] 162 | if len_locs and len(img): 163 | for i in range(len_locs): 164 | x = face_locs[i][0]; y = face_locs[i][1] 165 | w = face_locs[i][2]; h = face_locs[i][3] 166 | face = img[x:w+1, h:y+1] 167 | face_code = face_encodings(face) 168 | if len(face_code): 169 | face_codes.append(face_code) 170 | 171 | # Compare faces to templates in database 172 | names = []; faces = [] 173 | for i in range(len(face_codes)): 174 | face_code = face_codes[i] 175 | res, name, face = matching(face_code, ft_path, threshold) 176 | if res: 177 | names.append(name) 178 | faces.append(face) 179 | 180 | # Send result to Display pool 181 | if len(names): 182 | if conn_disp.poll(): 183 | conn_disp.recv() 184 | conn_disp.send(names) 185 | 186 | -------------------------------------------------------------------------------- /2.parallelized-system/registration.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | import cv2 5 | from multiprocessing import Process, Pipe 6 | from fnc.parallelPool import pool_display_video, pool_face_localize, pool_registration 7 | 8 | 9 | #------------------------------------------------------------------------------ 10 | # Main 11 | #------------------------------------------------------------------------------ 12 | ft_path = "./template/" 13 | name = input(">>> Please type name of the registration person: ") 14 | threshold = 0.4 15 | cap = cv2.VideoCapture(0) 16 | 17 | conn_12, conn_21 = Pipe() 18 | conn_23, conn_32 = Pipe() 19 | conn_31, conn_13 = Pipe() 20 | p1 = Process(target=pool_display_video, args=(cap, conn_12, conn_13)) 21 | p2 = Process(target=pool_face_localize, args=(conn_21, conn_23)) 22 | p3 = Process(target=pool_registration, args=(conn_31, conn_32, ft_path, name, threshold)) 23 | p1.start(); p2.start(); p3.start() 24 | p1.join() ; p2.join() ; p3.join() 25 | 26 | cap.release() 27 | cv2.destroyAllWindows() 28 | 29 | -------------------------------------------------------------------------------- /2.parallelized-system/verification.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | import cv2 5 | from multiprocessing import Process, Pipe 6 | from fnc.parallelPool import pool_display_video, pool_face_localize, pool_verification 7 | 8 | 9 | #------------------------------------------------------------------------------ 10 | # Main 11 | #------------------------------------------------------------------------------ 12 | ft_path = "./template/" 13 | threshold = 0.4 14 | cap = cv2.VideoCapture(0) 15 | 16 | conn_12, conn_21 = Pipe() 17 | conn_23, conn_32 = Pipe() 18 | conn_31, conn_13 = Pipe() 19 | p1 = Process(target=pool_display_video, args=(cap, conn_12, conn_13)) 20 | p2 = Process(target=pool_face_localize, args=(conn_21, conn_23)) 21 | p3 = Process(target=pool_verification, args=(conn_31, conn_32, ft_path, threshold)) 22 | p1.start(); p2.start(); p3.start() 23 | p1.join() ; p2.join() ; p3.join() 24 | 25 | cap.release() 26 | cv2.destroyAllWindows() 27 | 28 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/application.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | from os.path import exists 5 | from os import remove 6 | 7 | from PyQt5.QtWidgets import QVBoxLayout, QMainWindow 8 | from PyQt5.QtGui import QFont, QImage 9 | 10 | from frontend import design 11 | from backend.captureVideo import CaptureVideo 12 | from backend.faceDetection import FaceDetection 13 | from backend.faceRecognition import FaceRecognition 14 | from backend.faceRegistration import FaceRegistration 15 | from backend.faceRegistration import FaceRegistration 16 | from backend.logfile import LogFile 17 | 18 | 19 | #------------------------------------------------------------------------------ 20 | # Class of Application 21 | #------------------------------------------------------------------------------ 22 | class Application(QMainWindow, design.Ui_MainWindow): 23 | def __init__(self): 24 | super(Application, self).__init__() 25 | self.setupUi(self) 26 | self.setup_logfile() 27 | self.setup_wgVideo() 28 | self.setup_wgFaceCrop() 29 | self.setup_registration() 30 | 31 | def setup_wgVideo(self): 32 | # Functions 33 | self.wgVideo.capture_video = CaptureVideo(camera_port=0) 34 | self.wgVideo.face_detection = FaceDetection( 35 | haarcascade_fp="haarcascade_frontalface_default.xml") 36 | 37 | # Connect the [image_data] to [draw_bounding_boxes] 38 | draw_bounding_boxes = self.wgVideo.face_detection.draw_bounding_boxes 39 | self.wgVideo.capture_video.image_data.connect(draw_bounding_boxes) 40 | 41 | # Layout 42 | layout = QVBoxLayout() 43 | layout.addWidget(self.wgVideo.face_detection) 44 | self.wgVideo.setLayout(layout) 45 | 46 | 47 | def setup_wgFaceCrop(self): 48 | # Functions 49 | self.wgFaceCrop.face_recognition = FaceRecognition( 50 | self.logfile, \ 51 | sc_thres=0.4, \ 52 | sq_thres=18000, \ 53 | scale=(150, 150), \ 54 | fp_db="template/", \ 55 | pipe_file="pipe.mat", \ 56 | time_idle=5000) 57 | 58 | # Remove [pipe_file] 59 | if exists(self.wgFaceCrop.face_recognition.pipe_file): 60 | remove(self.wgFaceCrop.face_recognition.pipe_file) 61 | 62 | # Connect the [Name] to [update_lbInfo] 63 | self.wgFaceCrop.face_recognition.Name.connect(self.update_lbInfo) 64 | 65 | # Connect the [frame_locations] to [draw_cropped_face] 66 | recognize = self.wgFaceCrop.face_recognition.recognize 67 | self.wgVideo.face_detection.frame_locations.connect(recognize) 68 | 69 | # Layout 70 | layout = QVBoxLayout() 71 | layout.addWidget(self.wgFaceCrop.face_recognition) 72 | self.wgFaceCrop.setLayout(layout) 73 | 74 | 75 | def setup_registration(self): 76 | # Functions 77 | self.registration = FaceRegistration(sc_thres=0.4, \ 78 | fp_db="template/", \ 79 | pipe_file="pipe.mat") 80 | 81 | # Connect textChanged event in [txtName] to [txtNameEnterPressEvent] 82 | self.txtName.textChanged.connect(self.txtNameEnterPressEvent) 83 | 84 | # Connect clicked event in [btnCancel] to [cancelClickEvent] 85 | self.btnCancel.clicked.connect(self.cancelClickEvent) 86 | 87 | 88 | def setup_logfile(self): 89 | # Functions 90 | self.logfile = LogFile(fp_logfile="logfile/", \ 91 | num_file=10, \ 92 | file_len=5120) 93 | 94 | 95 | def update_lbInfo(self, text_info): 96 | self.lbInfo.setText(text_info) 97 | 98 | 99 | def txtNameEnterPressEvent(self): 100 | name = self.txtName.toPlainText() 101 | if len(name)>=1 and name[-1] == "\n": 102 | self.registration.register(name[0:-1]) 103 | self.txtName.clear() 104 | 105 | 106 | def cancelClickEvent(self): 107 | self.txtName.clear() 108 | self.wgFaceCrop.face_recognition.image = QImage() 109 | self.update() 110 | self.lbInfo.setText("No face detected") 111 | if exists(self.registration.pipe_file): 112 | remove(self.registration.pipe_file) 113 | 114 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/backend/captureVideo.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | import cv2 5 | from numpy import ndarray 6 | from PyQt5.QtCore import QObject, pyqtSignal, QBasicTimer 7 | 8 | 9 | #------------------------------------------------------------------------------ 10 | # Class to capture and display video from webcam 11 | #------------------------------------------------------------------------------ 12 | class CaptureVideo(QObject): 13 | # Signals 14 | image_data = pyqtSignal(ndarray) 15 | 16 | # Initialize class 17 | def __init__(self, camera_port=0): 18 | super().__init__() 19 | self.camera = cv2.VideoCapture(camera_port) 20 | self.timer = QBasicTimer() 21 | self.timer.start(1, self) # Period in miliseconds 22 | 23 | 24 | # Update video frame 25 | def timerEvent(self, event): 26 | if (event.timerId() != self.timer.timerId()): 27 | return 28 | read, frame = self.camera.read() 29 | if read: 30 | self.image_data.emit(frame) 31 | 32 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/backend/faceDetection.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | import cv2 5 | from numpy import ndarray, array 6 | from PyQt5.QtWidgets import QWidget 7 | from PyQt5 import QtGui 8 | from PyQt5.QtCore import pyqtSignal 9 | 10 | 11 | #------------------------------------------------------------------------------ 12 | # Class to detect faces' locations 13 | #------------------------------------------------------------------------------ 14 | class FaceDetection(QWidget): 15 | # Signals 16 | frame_locations = pyqtSignal(tuple) 17 | 18 | # Initialize class 19 | def __init__(self, haarcascade_fp): 20 | super().__init__() 21 | self.classifier = cv2.CascadeClassifier(haarcascade_fp) 22 | self.image = QtGui.QImage() 23 | self.black = (0, 0, 0) 24 | self.green = (0, 255, 0) 25 | self.width = 2 26 | self.min_size = (30, 30) 27 | 28 | 29 | # Detect locations that contain faces 30 | def detect_faces(self, image: ndarray): 31 | gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 32 | gray_image = cv2.equalizeHist(gray_image) 33 | face_locs = self.classifier.detectMultiScale(gray_image, \ 34 | scaleFactor=1.3, \ 35 | minNeighbors=4, \ 36 | flags=cv2.CASCADE_SCALE_IMAGE, \ 37 | minSize=self.min_size) 38 | return array(face_locs) 39 | 40 | 41 | # Draw bounding boxes of faces 42 | def draw_bounding_boxes(self, image_data): 43 | # Prepare 44 | image = array(image_data) 45 | 46 | # Indicate bounding boxes 47 | face_locs = self.detect_faces(image_data) 48 | for (x, y, w, h) in face_locs: 49 | corner1 = (x, y); corner2 = (x+w, y+h) 50 | cv2.rectangle(image, corner1, corner2, self.green, self.width) 51 | 52 | # Border of the image 53 | corner1 = (0, 0) 54 | corner2 = (image_data.shape[1], image_data.shape[0]) 55 | cv2.rectangle(image, corner1, corner2, self.black, self.width) 56 | 57 | # Draw bounding boxes 58 | self.image = self.get_qimage(image) 59 | if self.image.size() != self.size(): 60 | self.setFixedSize(self.image.size()) 61 | self.update() 62 | 63 | # Wrap and send signals to [draw_cropped_face] 64 | if len(face_locs): 65 | self.frame_locations.emit((image_data, face_locs)) 66 | 67 | 68 | # Convert np.ndarray to qimage 69 | def get_qimage(self, image: ndarray): 70 | height, width, colors = image.shape 71 | bytesPerLine = 3 * width 72 | QImage = QtGui.QImage 73 | image = QImage(image.data, width, height, bytesPerLine, \ 74 | QImage.Format_RGB888) 75 | image = image.rgbSwapped() 76 | return image 77 | 78 | 79 | # Paint image into the window of the application 80 | def paintEvent(self, event): 81 | painter = QtGui.QPainter(self) 82 | painter.drawImage(0, 0, self.image) 83 | 84 | 85 | #------------------------------------------------------------------------------ 86 | # Class to crop face 87 | #------------------------------------------------------------------------------ 88 | class FaceCrop(QWidget): 89 | # Initialize class 90 | def __init__(self): 91 | super().__init__() 92 | self.image = QtGui.QImage() 93 | 94 | 95 | # Crop face from frame image and draw it 96 | def draw_cropped_face(self, frame_locations): 97 | # Unroll arguments 98 | frame_image = frame_locations[0] 99 | face_locations = frame_locations[1] 100 | 101 | # Crop face from frame image 102 | if len(face_locations) != 1: 103 | return 104 | else: 105 | (x, y, w, h) = face_locations[0] 106 | square = w*h 107 | if square < 18000: 108 | return 109 | else: 110 | face = frame_image[y: y+h+1, x: x+w+1] 111 | 112 | # Draw face 113 | face_image = cv2.resize(face, (150, 150)) 114 | self.image = self.get_qimage(face_image) 115 | self.update() 116 | 117 | 118 | # Convert np.ndarray to qimage 119 | def get_qimage(self, image: ndarray): 120 | height, width, colors = image.shape 121 | bytesPerLine = 3 * width 122 | QImage = QtGui.QImage 123 | image = QImage(image.data, width, height, bytesPerLine, \ 124 | QImage.Format_RGB888) 125 | image = image.rgbSwapped() 126 | return image 127 | 128 | 129 | # Paint image into the window of the application 130 | def paintEvent(self, event): 131 | painter = QtGui.QPainter(self) 132 | painter.drawImage(0, 0, self.image) 133 | 134 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/backend/faceEncode.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | from numpy import array, argmax 5 | from face_recognition import face_encodings 6 | 7 | 8 | #------------------------------------------------------------------------------ 9 | # Function to crop face from frame image. 10 | # 11 | # [Input] 12 | # frame_image : Image of a frame from the captured video 13 | # face_locations : Locations of detected face 14 | # sq_thres : The cadidate threshold square 15 | # 16 | # [Output] 17 | # face : Cropped face 18 | # 19 | #------------------------------------------------------------------------------ 20 | def crop_face(frame_image, face_locations, sq_thres): 21 | """ 22 | * No need to examine whether [face_locations] is emplty because it is 23 | verified in the previous stage. 24 | 25 | * [sq_thres] is used to eliminate locations that are too small. 26 | 27 | * In the case that there are more than one face detected, the largest 28 | face will be accepted and the remainings will be rejected. 29 | """ 30 | # Get the accepted face 31 | sq_vect = face_locations[:, 2] * face_locations[:, 3] 32 | idx_max = argmax(sq_vect) 33 | sq = sq_vect[idx_max] 34 | if sq < sq_thres: 35 | return [] 36 | else: 37 | (x, y, w, h) = face_locations[idx_max] 38 | 39 | # Crop the accepted face 40 | face = frame_image[y: y+h+1, x: x+w+1, :] 41 | return array(face) 42 | 43 | 44 | #------------------------------------------------------------------------------ 45 | # Function to encode face. 46 | # 47 | # [Input] 48 | # frame_image : Image of a frame from the captured video 49 | # face_locations : Locations of detected face 50 | # sq_thres : The cadidate threshold square 51 | # 52 | # [Output] 53 | # face_code : Feature code of the accepted face 54 | # face_cropped : Cropped face of the accepted face 55 | # 56 | #------------------------------------------------------------------------------ 57 | def encode_face(frame_image, face_locations, sq_thres): 58 | """ 59 | * Just one face is chosen and encoded. The largest face is accepted. 60 | """ 61 | # Crop face 62 | face_cropped = crop_face(frame_image, face_locations, sq_thres) 63 | if len(face_cropped)==0: 64 | return ([], []) 65 | 66 | # Encode face 67 | face_code = face_encodings(face_cropped) 68 | if len(face_code): 69 | return (face_code, face_cropped) 70 | else: 71 | return ([], []) 72 | 73 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/backend/faceMatch.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | from os import listdir 5 | from fnmatch import filter 6 | from scipy.io import loadmat 7 | from face_recognition import compare_faces 8 | 9 | 10 | #------------------------------------------------------------------------------ 11 | # Verify whether a template exists in database 12 | #------------------------------------------------------------------------------ 13 | def isTempExisted(test_temp, ft_path, threshold): 14 | files = listdir(ft_path) 15 | numfile = len(filter(files, '*.mat')) 16 | if numfile == 0: 17 | return False 18 | else: 19 | for file in files: 20 | db_temp = loadmat("%s%s" % (ft_path, file))['temp_code'] 21 | if compare_faces(test_temp, db_temp, threshold)[0]: 22 | return True 23 | return False 24 | 25 | 26 | #------------------------------------------------------------------------------ 27 | # Verify whether a template is in database, return (bool, name, face image) 28 | #------------------------------------------------------------------------------ 29 | def matching(test_temp, ft_path, threshold): 30 | files = listdir(ft_path) 31 | numfile = len(filter(files, '*.mat')) 32 | if numfile == 0: 33 | return False, '', [] 34 | else: 35 | for file in files: 36 | db_data = loadmat("%s%s" % (ft_path, file)) 37 | db_temp = db_data['temp_code'] 38 | db_face = db_data['face'] 39 | res = compare_faces(test_temp, db_temp, threshold) 40 | if len(res) and res[0]: 41 | return True, file[:-4], db_face 42 | return False, '', [] 43 | 44 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/backend/faceRecognition.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | import cv2 5 | from numpy import ndarray 6 | from PyQt5.QtWidgets import QWidget 7 | from PyQt5 import QtGui 8 | from PyQt5.QtCore import pyqtSignal, QBasicTimer 9 | from backend.faceEncode import encode_face 10 | from backend.faceMatch import matching 11 | from os.path import exists 12 | from scipy.io import savemat 13 | 14 | 15 | #------------------------------------------------------------------------------ 16 | # Class to crop face 17 | #------------------------------------------------------------------------------ 18 | class FaceRecognition(QWidget): 19 | # Signals 20 | Name = pyqtSignal(str) 21 | 22 | # Initialize class 23 | def __init__(self, log_file, sc_thres=0.4, sq_thres=18000, scale=(150, 150),\ 24 | fp_db="template/", pipe_file="pipe.mat", time_idle=5000): 25 | super().__init__() 26 | self.log_file = log_file 27 | self.sc_thres = sc_thres 28 | self.sq_thres = sq_thres 29 | self.scale = scale 30 | self.fp_db = fp_db 31 | self.pipe_file = pipe_file 32 | self.time_idle = time_idle 33 | 34 | self.image = QtGui.QImage() 35 | self.timer = QBasicTimer() 36 | 37 | 38 | # Recognize face from the frame image 39 | def recognize(self, frame_locations): 40 | # Unroll arguments 41 | frame_image = frame_locations[0] 42 | face_locations = frame_locations[1] 43 | 44 | # Encode and match face 45 | face_code, face_cropped = encode_face(frame_image, \ 46 | face_locations, self.sq_thres) 47 | if len(face_code)==0: 48 | self.timer.start(self.time_idle, self) 49 | return 50 | else: 51 | self.timer.stop() 52 | res, name, face = matching(face_code, self.fp_db, self.sc_thres) 53 | 54 | # Draw face and print name 55 | existed_flg = exists(self.pipe_file) 56 | if res: # The person has registered before 57 | if not existed_flg: 58 | face_image = cv2.resize(face, self.scale) 59 | self.image = self.get_qimage(face_image) 60 | self.update() 61 | self.log_file.write_logfile(name) 62 | self.Name.emit(name) 63 | else: # The person has not registered before 64 | self.Name.emit("Person unknown") 65 | if not existed_flg: 66 | savemat(self.pipe_file, {"temp_code": face_code, 67 | "face": face_cropped}) 68 | face_image = cv2.resize(face_cropped, self.scale) 69 | self.image = self.get_qimage(face_image) 70 | self.update() 71 | 72 | 73 | # Convert np.ndarray to qimage 74 | def get_qimage(self, image: ndarray): 75 | height, width, colors = image.shape 76 | bytesPerLine = 3*width 77 | QImage = QtGui.QImage 78 | image = QImage(image.data, width, height, bytesPerLine, \ 79 | QImage.Format_RGB888) 80 | image = image.rgbSwapped() 81 | return image 82 | 83 | 84 | # Paint image into the window of the application 85 | def paintEvent(self, event): 86 | painter = QtGui.QPainter(self) 87 | painter.drawImage(0, 0, self.image) 88 | 89 | 90 | # Update Recognition frame 91 | def timerEvent(self, event): 92 | if (event.timerId() != self.timer.timerId()): 93 | return 94 | else: 95 | self.image = QtGui.QImage() 96 | self.update() 97 | self.Name.emit("No face detected") 98 | 99 | 100 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/backend/faceRegistration.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | from PyQt5.QtWidgets import QWidget, QMessageBox 5 | from backend.faceEncode import encode_face 6 | from backend.faceMatch import isTempExisted 7 | from os.path import exists 8 | from os import rename 9 | 10 | 11 | #------------------------------------------------------------------------------ 12 | # Class to crop face 13 | #------------------------------------------------------------------------------ 14 | class FaceRegistration(QWidget): 15 | # Initialize class 16 | def __init__(self, sc_thres=0.4, fp_db="template/", pipe_file="pipe.mat"): 17 | super().__init__() 18 | self.sc_thres = sc_thres 19 | self.fp_db = fp_db 20 | self.pipe_file = pipe_file 21 | 22 | 23 | # Register a face account 24 | def register(self, name): 25 | # There is no Registration queue 26 | if not exists(self.pipe_file): 27 | return 28 | 29 | # There is a Registration queue 30 | else: 31 | if self.is_name_existed(name): 32 | QMessageBox.warning(self, \ 33 | 'Warning', "The name has existed!", \ 34 | QMessageBox.Ok, QMessageBox.Ok) 35 | else: 36 | rename(self.pipe_file, "%s%s.mat" % (self.fp_db, name)) 37 | QMessageBox.information(self, \ 38 | 'Notification', "Register successfully!", \ 39 | QMessageBox.Ok, QMessageBox.Ok) 40 | 41 | 42 | # Verify whether a name has existed in the database 43 | def is_name_existed(self, name): 44 | if exists("%s%s.mat" % (self.fp_db, name)): 45 | return True 46 | else: 47 | return False 48 | 49 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/backend/logfile.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | from time import gmtime, strftime 5 | from os import listdir 6 | from os.path import getsize, exists 7 | 8 | 9 | #------------------------------------------------------------------------------ 10 | # Class of Logfile system. 11 | #------------------------------------------------------------------------------ 12 | class LogFile(): 13 | def __init__(self, fp_logfile="logfile/", num_file=10, file_len=5120): 14 | super(LogFile, self).__init__() 15 | self.fp_logfile = fp_logfile 16 | self.num_file = num_file 17 | self.file_len = file_len 18 | 19 | 20 | def get_logfile_id(self): 21 | files = listdir(self.fp_logfile) 22 | numfile = len(files) 23 | if numfile == 0: 24 | return 1 25 | else: 26 | if getsize("%s%d.log" % (self.fp_logfile, numfile)) < self.file_len: 27 | return numfile 28 | else: 29 | if numfile==self.num_file: 30 | return 0 31 | else: 32 | return numfile+1 33 | 34 | 35 | def write_logfile(self, content): 36 | # Get file ID 37 | file_id = self.get_logfile_id() 38 | str_time = strftime("%Y-%m-%d %H:%M:%S-------------------\n", gmtime()) 39 | 40 | # Full 41 | if file_id==0: 42 | pass 43 | 44 | # Available 45 | else: 46 | filepath = "%s%d.log" % (self.fp_logfile, file_id) 47 | if exists(filepath): 48 | fp = open(filepath, "a") 49 | else: 50 | fp = open(filepath, "w") 51 | fp.write(str_time) 52 | fp.write(content) 53 | fp.write("\n") 54 | fp.close() 55 | 56 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | clear 3 | pyuic5 frontend/design.ui -o frontend/design.py 4 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/frontend/design.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'frontend/design.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.10.1 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | class Ui_MainWindow(object): 12 | def setupUi(self, MainWindow): 13 | MainWindow.setObjectName("MainWindow") 14 | MainWindow.resize(933, 507) 15 | self.centralwidget = QtWidgets.QWidget(MainWindow) 16 | self.centralwidget.setObjectName("centralwidget") 17 | self.wgVideo = QtWidgets.QWidget(self.centralwidget) 18 | self.wgVideo.setGeometry(QtCore.QRect(0, 10, 655, 495)) 19 | self.wgVideo.setObjectName("wgVideo") 20 | self.lbWebVideo = QtWidgets.QLabel(self.centralwidget) 21 | self.lbWebVideo.setGeometry(QtCore.QRect(10, 0, 101, 17)) 22 | self.lbWebVideo.setObjectName("lbWebVideo") 23 | self.lbExtrFace = QtWidgets.QLabel(self.centralwidget) 24 | self.lbExtrFace.setGeometry(QtCore.QRect(670, 0, 81, 17)) 25 | self.lbExtrFace.setObjectName("lbExtrFace") 26 | self.wgFaceCrop = QtWidgets.QWidget(self.centralwidget) 27 | self.wgFaceCrop.setGeometry(QtCore.QRect(660, 10, 271, 181)) 28 | self.wgFaceCrop.setObjectName("wgFaceCrop") 29 | self.lbInfo = QtWidgets.QLabel(self.wgFaceCrop) 30 | self.lbInfo.setGeometry(QtCore.QRect(10, 160, 261, 17)) 31 | font = QtGui.QFont() 32 | font.setBold(True) 33 | font.setItalic(True) 34 | font.setWeight(75) 35 | self.lbInfo.setFont(font) 36 | self.lbInfo.setScaledContents(True) 37 | self.lbInfo.setObjectName("lbInfo") 38 | self.txtName = QtWidgets.QPlainTextEdit(self.centralwidget) 39 | self.txtName.setGeometry(QtCore.QRect(670, 240, 261, 31)) 40 | sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) 41 | sizePolicy.setHorizontalStretch(0) 42 | sizePolicy.setVerticalStretch(0) 43 | sizePolicy.setHeightForWidth(self.txtName.sizePolicy().hasHeightForWidth()) 44 | self.txtName.setSizePolicy(sizePolicy) 45 | self.txtName.setTabChangesFocus(True) 46 | self.txtName.setObjectName("txtName") 47 | self.lbName = QtWidgets.QLabel(self.centralwidget) 48 | self.lbName.setGeometry(QtCore.QRect(670, 220, 91, 17)) 49 | self.lbName.setObjectName("lbName") 50 | self.btnCancel = QtWidgets.QPushButton(self.centralwidget) 51 | self.btnCancel.setGeometry(QtCore.QRect(830, 275, 101, 31)) 52 | self.btnCancel.setObjectName("btnCancel") 53 | MainWindow.setCentralWidget(self.centralwidget) 54 | 55 | self.retranslateUi(MainWindow) 56 | QtCore.QMetaObject.connectSlotsByName(MainWindow) 57 | 58 | def retranslateUi(self, MainWindow): 59 | _translate = QtCore.QCoreApplication.translate 60 | MainWindow.setWindowTitle(_translate("MainWindow", "Facial Recognition")) 61 | self.lbWebVideo.setText(_translate("MainWindow", "WebcamVideo")) 62 | self.lbExtrFace.setText(_translate("MainWindow", "Recognition")) 63 | self.lbInfo.setText(_translate("MainWindow", "No face detected")) 64 | self.lbName.setText(_translate("MainWindow", "Registration")) 65 | self.btnCancel.setText(_translate("MainWindow", "Cancel")) 66 | 67 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/frontend/design.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 933 10 | 507 11 | 12 | 13 | 14 | Facial Recognition 15 | 16 | 17 | 18 | 19 | 20 | 0 21 | 10 22 | 655 23 | 495 24 | 25 | 26 | 27 | 28 | 29 | 30 | 10 31 | 0 32 | 101 33 | 17 34 | 35 | 36 | 37 | WebcamVideo 38 | 39 | 40 | 41 | 42 | 43 | 670 44 | 0 45 | 81 46 | 17 47 | 48 | 49 | 50 | Recognition 51 | 52 | 53 | 54 | 55 | 56 | 660 57 | 10 58 | 271 59 | 181 60 | 61 | 62 | 63 | 64 | 65 | 10 66 | 160 67 | 261 68 | 17 69 | 70 | 71 | 72 | 73 | 75 74 | true 75 | true 76 | 77 | 78 | 79 | No face detected 80 | 81 | 82 | true 83 | 84 | 85 | 86 | 87 | 88 | 89 | 670 90 | 240 91 | 261 92 | 31 93 | 94 | 95 | 96 | 97 | 0 98 | 0 99 | 100 | 101 | 102 | true 103 | 104 | 105 | 106 | 107 | 108 | 670 109 | 220 110 | 91 111 | 17 112 | 113 | 114 | 115 | Registration 116 | 117 | 118 | 119 | 120 | 121 | 830 122 | 275 123 | 101 124 | 31 125 | 126 | 127 | 128 | Cancel 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/implement.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | clear 3 | python main.py 4 | 5 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/logfile/1.log: -------------------------------------------------------------------------------- 1 | 2018-03-07 03:19:57------------------- 2 | Nguyen Chinh Thuy 3 | 2018-03-07 03:19:57------------------- 4 | Nguyen Chinh Thuy 5 | 2018-03-07 03:20:11------------------- 6 | Nguyen Chinh Thuy 7 | 2018-03-07 03:20:11------------------- 8 | Nguyen Chinh Thuy 9 | 2018-03-07 03:20:11------------------- 10 | Nguyen Chinh Thuy 11 | 2018-03-07 03:20:11------------------- 12 | Nguyen Chinh Thuy 13 | 2018-03-07 03:20:12------------------- 14 | Nguyen Chinh Thuy 15 | 2018-03-07 03:20:13------------------- 16 | Nguyen Chinh Thuy 17 | 2018-03-07 03:20:14------------------- 18 | Nguyen Chinh Thuy 19 | 2018-03-07 03:20:14------------------- 20 | Nguyen Chinh Thuy 21 | 2018-03-07 03:20:14------------------- 22 | Nguyen Chinh Thuy 23 | 2018-03-07 03:20:14------------------- 24 | Nguyen Chinh Thuy 25 | 2018-03-07 03:20:14------------------- 26 | Nguyen Chinh Thuy 27 | 2018-03-07 03:20:14------------------- 28 | Nguyen Chinh Thuy 29 | 2018-03-07 03:20:15------------------- 30 | Nguyen Chinh Thuy 31 | 2018-03-07 03:20:15------------------- 32 | Nguyen Chinh Thuy 33 | 2018-03-07 03:20:15------------------- 34 | Nguyen Chinh Thuy 35 | 2018-03-07 03:20:15------------------- 36 | Nguyen Chinh Thuy 37 | 2018-03-07 03:20:15------------------- 38 | Nguyen Chinh Thuy 39 | 2018-03-07 03:20:15------------------- 40 | Nguyen Chinh Thuy 41 | 2018-03-07 03:20:16------------------- 42 | Nguyen Chinh Thuy 43 | 2018-03-07 03:20:16------------------- 44 | Nguyen Chinh Thuy 45 | 2018-03-07 03:20:16------------------- 46 | Nguyen Chinh Thuy 47 | 2018-03-07 03:20:16------------------- 48 | Nguyen Chinh Thuy 49 | 2018-03-07 03:20:16------------------- 50 | Nguyen Chinh Thuy 51 | 2018-03-07 03:20:16------------------- 52 | Nguyen Chinh Thuy 53 | 2018-03-07 03:20:17------------------- 54 | Nguyen Chinh Thuy 55 | 2018-03-07 03:20:17------------------- 56 | Nguyen Chinh Thuy 57 | 2018-03-07 03:20:18------------------- 58 | Nguyen Chinh Thuy 59 | 2018-03-07 03:20:18------------------- 60 | Nguyen Chinh Thuy 61 | 2018-03-07 03:20:19------------------- 62 | Nguyen Chinh Thuy 63 | 2018-03-07 03:20:19------------------- 64 | Nguyen Chinh Thuy 65 | 2018-03-07 03:20:19------------------- 66 | Nguyen Chinh Thuy 67 | 2018-03-07 03:20:19------------------- 68 | Nguyen Chinh Thuy 69 | 2018-03-07 03:20:19------------------- 70 | Nguyen Chinh Thuy 71 | 2018-03-07 03:20:24------------------- 72 | Nguyen Chinh Thuy 73 | 2018-03-07 03:20:24------------------- 74 | Nguyen Chinh Thuy 75 | 2018-03-07 03:20:24------------------- 76 | Nguyen Chinh Thuy 77 | 2018-03-07 03:20:24------------------- 78 | Nguyen Chinh Thuy 79 | 2018-03-07 03:20:24------------------- 80 | Nguyen Chinh Thuy 81 | 2018-03-07 03:20:25------------------- 82 | Nguyen Chinh Thuy 83 | 2018-03-07 03:20:25------------------- 84 | Nguyen Chinh Thuy 85 | 2018-03-07 03:20:25------------------- 86 | Nguyen Chinh Thuy 87 | 2018-03-07 03:20:25------------------- 88 | Nguyen Chinh Thuy 89 | 2018-03-07 03:20:25------------------- 90 | Nguyen Chinh Thuy 91 | 2018-03-07 03:20:26------------------- 92 | Nguyen Chinh Thuy 93 | 2018-03-07 03:20:26------------------- 94 | Nguyen Chinh Thuy 95 | 2018-03-07 03:20:26------------------- 96 | Nguyen Chinh Thuy 97 | 2018-03-07 03:20:26------------------- 98 | Nguyen Chinh Thuy 99 | 2018-03-07 03:20:26------------------- 100 | Nguyen Chinh Thuy 101 | 2018-03-07 03:20:26------------------- 102 | Nguyen Chinh Thuy 103 | 2018-03-07 03:20:27------------------- 104 | Nguyen Chinh Thuy 105 | 2018-03-07 03:20:27------------------- 106 | Nguyen Chinh Thuy 107 | 2018-03-07 03:20:27------------------- 108 | Nguyen Chinh Thuy 109 | 2018-03-07 03:20:27------------------- 110 | Nguyen Chinh Thuy 111 | 2018-03-07 03:20:27------------------- 112 | Nguyen Chinh Thuy 113 | 2018-03-07 03:20:27------------------- 114 | Nguyen Chinh Thuy 115 | 2018-03-07 03:20:27------------------- 116 | Nguyen Chinh Thuy 117 | 2018-03-07 03:20:28------------------- 118 | Nguyen Chinh Thuy 119 | 2018-03-07 03:20:30------------------- 120 | Nguyen Chinh Thuy 121 | 2018-03-07 03:20:30------------------- 122 | Nguyen Chinh Thuy 123 | 2018-03-07 03:20:32------------------- 124 | Nguyen Chinh Thuy 125 | 2018-03-07 03:20:32------------------- 126 | Nguyen Chinh Thuy 127 | 2018-03-07 03:20:32------------------- 128 | Nguyen Chinh Thuy 129 | 2018-03-07 03:20:32------------------- 130 | Nguyen Chinh Thuy 131 | 2018-03-07 03:20:32------------------- 132 | Nguyen Chinh Thuy 133 | 2018-03-07 03:20:32------------------- 134 | Nguyen Chinh Thuy 135 | 2018-03-07 03:20:33------------------- 136 | Nguyen Chinh Thuy 137 | 2018-03-07 03:20:33------------------- 138 | Nguyen Chinh Thuy 139 | 2018-03-07 03:20:33------------------- 140 | Nguyen Chinh Thuy 141 | 2018-03-07 03:20:33------------------- 142 | Nguyen Chinh Thuy 143 | 2018-03-07 03:20:33------------------- 144 | Nguyen Chinh Thuy 145 | 2018-03-07 03:20:33------------------- 146 | Nguyen Chinh Thuy 147 | 2018-03-07 03:20:34------------------- 148 | Nguyen Chinh Thuy 149 | 2018-03-07 03:20:34------------------- 150 | Nguyen Chinh Thuy 151 | 2018-03-07 03:20:34------------------- 152 | Nguyen Chinh Thuy 153 | 2018-03-07 03:20:34------------------- 154 | Nguyen Chinh Thuy 155 | 2018-03-07 03:20:34------------------- 156 | Nguyen Chinh Thuy 157 | 2018-03-07 03:20:34------------------- 158 | Nguyen Chinh Thuy 159 | 2018-03-07 03:20:34------------------- 160 | Nguyen Chinh Thuy 161 | 2018-03-07 03:20:35------------------- 162 | Nguyen Chinh Thuy 163 | 2018-03-07 03:20:35------------------- 164 | Nguyen Chinh Thuy 165 | 2018-03-07 03:20:35------------------- 166 | Nguyen Chinh Thuy 167 | 2018-03-07 03:20:35------------------- 168 | Nguyen Chinh Thuy 169 | 2018-03-07 03:20:35------------------- 170 | Nguyen Chinh Thuy 171 | 2018-03-07 03:20:35------------------- 172 | Nguyen Chinh Thuy 173 | 2018-03-07 03:20:36------------------- 174 | Nguyen Chinh Thuy 175 | 2018-03-07 03:20:36------------------- 176 | Nguyen Chinh Thuy 177 | 2018-03-07 03:20:36------------------- 178 | Nguyen Chinh Thuy 179 | 2018-03-07 03:20:36------------------- 180 | Nguyen Chinh Thuy 181 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/logfile/10.log: -------------------------------------------------------------------------------- 1 | 2018-03-26 06:09:12------------------- 2 | Thuy 3 | 2018-03-26 06:09:12------------------- 4 | Thuy 5 | 2018-03-26 06:09:12------------------- 6 | Thuy 7 | 2018-03-26 06:09:12------------------- 8 | Thuy 9 | 2018-03-26 06:09:12------------------- 10 | Thuy 11 | 2018-03-26 06:09:12------------------- 12 | Thuy 13 | 2018-03-26 06:09:12------------------- 14 | Thuy 15 | 2018-03-26 06:09:13------------------- 16 | Thuy 17 | 2018-03-26 06:09:13------------------- 18 | Thuy 19 | 2018-03-26 06:09:13------------------- 20 | Thuy 21 | 2018-03-26 06:09:13------------------- 22 | Thuy 23 | 2018-03-26 06:09:13------------------- 24 | Thuy 25 | 2018-03-26 06:09:13------------------- 26 | Thuy 27 | 2018-03-26 06:09:13------------------- 28 | Thuy 29 | 2018-03-26 06:09:13------------------- 30 | Thuy 31 | 2018-03-26 06:09:14------------------- 32 | Thuy 33 | 2018-03-26 06:09:14------------------- 34 | Thuy 35 | 2018-03-26 06:09:14------------------- 36 | Thuy 37 | 2018-03-26 06:09:14------------------- 38 | Thuy 39 | 2018-03-26 06:09:14------------------- 40 | Thuy 41 | 2018-03-26 06:09:15------------------- 42 | Thuy 43 | 2018-03-26 06:09:15------------------- 44 | Thuy 45 | 2018-03-26 06:09:15------------------- 46 | Thuy 47 | 2018-03-26 06:09:15------------------- 48 | Thuy 49 | 2018-03-26 06:09:16------------------- 50 | Thuy 51 | 2018-03-26 06:09:16------------------- 52 | Thuy 53 | 2018-03-26 06:09:16------------------- 54 | Thuy 55 | 2018-03-26 06:09:16------------------- 56 | Thuy 57 | 2018-03-26 06:09:16------------------- 58 | Thuy 59 | 2018-03-26 06:09:16------------------- 60 | Thuy 61 | 2018-03-26 06:09:16------------------- 62 | Thuy 63 | 2018-03-26 06:09:16------------------- 64 | Thuy 65 | 2018-03-26 06:09:16------------------- 66 | Thuy 67 | 2018-03-26 06:09:17------------------- 68 | Thuy 69 | 2018-03-26 06:09:17------------------- 70 | Thuy 71 | 2018-03-26 06:09:17------------------- 72 | Thuy 73 | 2018-03-26 06:09:17------------------- 74 | Thuy 75 | 2018-03-26 06:09:17------------------- 76 | Thuy 77 | 2018-03-26 06:09:17------------------- 78 | Thuy 79 | 2018-03-26 06:09:17------------------- 80 | Thuy 81 | 2018-03-26 06:09:17------------------- 82 | Thuy 83 | 2018-03-26 06:09:17------------------- 84 | Thuy 85 | 2018-03-26 06:09:17------------------- 86 | Thuy 87 | 2018-03-26 06:09:17------------------- 88 | Thuy 89 | 2018-03-26 06:09:18------------------- 90 | Thuy 91 | 2018-03-26 06:09:18------------------- 92 | Thuy 93 | 2018-03-26 06:09:18------------------- 94 | Thuy 95 | 2018-03-26 06:09:18------------------- 96 | Thuy 97 | 2018-03-26 06:09:18------------------- 98 | Thuy 99 | 2018-03-26 06:09:18------------------- 100 | Thuy 101 | 2018-03-26 06:09:18------------------- 102 | Thuy 103 | 2018-03-26 06:09:18------------------- 104 | Thuy 105 | 2018-03-26 06:09:19------------------- 106 | Thuy 107 | 2018-03-26 06:09:19------------------- 108 | Thuy 109 | 2018-03-26 06:09:19------------------- 110 | Thuy 111 | 2018-03-26 06:09:19------------------- 112 | Thuy 113 | 2018-03-26 06:09:19------------------- 114 | Thuy 115 | 2018-03-26 06:09:19------------------- 116 | Thuy 117 | 2018-03-26 06:09:19------------------- 118 | Thuy 119 | 2018-03-26 06:09:19------------------- 120 | Thuy 121 | 2018-03-26 06:09:20------------------- 122 | Thuy 123 | 2018-03-26 06:09:20------------------- 124 | Thuy 125 | 2018-03-26 06:09:20------------------- 126 | Thuy 127 | 2018-03-26 06:09:20------------------- 128 | Thuy 129 | 2018-03-26 06:09:21------------------- 130 | Thuy 131 | 2018-03-26 06:09:24------------------- 132 | Thuy 133 | 2018-03-26 06:09:24------------------- 134 | Thuy 135 | 2018-03-26 06:09:24------------------- 136 | Thuy 137 | 2018-03-26 06:09:24------------------- 138 | Thuy 139 | 2018-03-26 06:09:24------------------- 140 | Thuy 141 | 2018-03-26 06:09:25------------------- 142 | Thuy 143 | 2018-03-26 06:09:25------------------- 144 | Thuy 145 | 2018-03-26 06:09:25------------------- 146 | Thuy 147 | 2018-03-26 06:09:25------------------- 148 | Thuy 149 | 2018-03-26 06:09:25------------------- 150 | Thuy 151 | 2018-03-26 06:09:25------------------- 152 | Thuy 153 | 2018-03-26 06:09:26------------------- 154 | Thuy 155 | 2018-03-26 06:09:26------------------- 156 | Thuy 157 | 2018-03-26 06:09:27------------------- 158 | Thuy 159 | 2018-03-26 06:09:27------------------- 160 | Thuy 161 | 2018-03-26 06:09:27------------------- 162 | Thuy 163 | 2018-03-26 06:09:27------------------- 164 | Thuy 165 | 2018-03-26 06:09:27------------------- 166 | Thuy 167 | 2018-03-26 06:09:27------------------- 168 | Thuy 169 | 2018-04-01 10:31:34------------------- 170 | Thuy 171 | 2018-04-01 10:31:34------------------- 172 | Thuy 173 | 2018-04-01 10:31:34------------------- 174 | Thuy 175 | 2018-04-01 10:31:34------------------- 176 | Thuy 177 | 2018-04-01 10:31:34------------------- 178 | Thuy 179 | 2018-04-01 10:31:35------------------- 180 | Thuy 181 | 2018-04-01 10:31:35------------------- 182 | Thuy 183 | 2018-04-01 10:31:35------------------- 184 | Thuy 185 | 2018-04-01 10:31:35------------------- 186 | Thuy 187 | 2018-04-01 10:31:35------------------- 188 | Thuy 189 | 2018-04-01 10:31:35------------------- 190 | Thuy 191 | 2018-04-01 10:31:35------------------- 192 | Thuy 193 | 2018-04-01 10:31:35------------------- 194 | Thuy 195 | 2018-04-01 10:31:35------------------- 196 | Thuy 197 | 2018-04-01 10:31:35------------------- 198 | Thuy 199 | 2018-04-01 10:31:35------------------- 200 | Thuy 201 | 2018-04-01 10:31:36------------------- 202 | Thuy 203 | 2018-04-01 10:31:36------------------- 204 | Thuy 205 | 2018-04-01 10:31:36------------------- 206 | Thuy 207 | 2018-04-01 10:31:36------------------- 208 | Thuy 209 | 2018-04-01 10:31:36------------------- 210 | Thuy 211 | 2018-04-01 10:31:36------------------- 212 | Thuy 213 | 2018-04-01 10:31:37------------------- 214 | Thuy 215 | 2018-04-01 10:31:37------------------- 216 | Thuy 217 | 2018-04-01 10:31:37------------------- 218 | Thuy 219 | 2018-04-01 10:31:37------------------- 220 | Thuy 221 | 2018-04-01 10:31:37------------------- 222 | Thuy 223 | 2018-04-01 10:31:37------------------- 224 | Thuy 225 | 2018-04-01 10:31:37------------------- 226 | Thuy 227 | 2018-04-01 10:31:37------------------- 228 | Thuy 229 | 2018-04-01 10:31:38------------------- 230 | Thuy 231 | 2018-04-01 10:31:38------------------- 232 | Thuy 233 | 2018-04-01 10:31:38------------------- 234 | Thuy 235 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/logfile/2.log: -------------------------------------------------------------------------------- 1 | 2018-03-07 03:20:36------------------- 2 | Nguyen Chinh Thuy 3 | 2018-03-07 03:20:37------------------- 4 | Nguyen Chinh Thuy 5 | 2018-03-07 03:20:37------------------- 6 | Nguyen Chinh Thuy 7 | 2018-03-07 03:20:37------------------- 8 | Nguyen Chinh Thuy 9 | 2018-03-07 03:20:37------------------- 10 | Nguyen Chinh Thuy 11 | 2018-03-07 03:20:37------------------- 12 | Nguyen Chinh Thuy 13 | 2018-03-07 03:20:38------------------- 14 | Nguyen Chinh Thuy 15 | 2018-03-07 03:20:40------------------- 16 | Nguyen Chinh Thuy 17 | 2018-03-07 03:20:44------------------- 18 | Nguyen Chinh Thuy 19 | 2018-03-07 03:20:44------------------- 20 | Nguyen Chinh Thuy 21 | 2018-03-07 03:20:44------------------- 22 | Nguyen Chinh Thuy 23 | 2018-03-07 03:20:46------------------- 24 | Nguyen Chinh Thuy 25 | 2018-03-07 03:20:46------------------- 26 | Nguyen Chinh Thuy 27 | 2018-03-07 03:20:46------------------- 28 | Nguyen Chinh Thuy 29 | 2018-03-07 03:20:47------------------- 30 | Nguyen Chinh Thuy 31 | 2018-03-07 03:20:47------------------- 32 | Nguyen Chinh Thuy 33 | 2018-03-07 03:20:47------------------- 34 | Nguyen Chinh Thuy 35 | 2018-03-07 03:20:47------------------- 36 | Nguyen Chinh Thuy 37 | 2018-03-07 03:20:47------------------- 38 | Nguyen Chinh Thuy 39 | 2018-03-07 03:20:47------------------- 40 | Nguyen Chinh Thuy 41 | 2018-03-07 03:20:48------------------- 42 | Nguyen Chinh Thuy 43 | 2018-03-07 03:20:48------------------- 44 | Nguyen Chinh Thuy 45 | 2018-03-07 03:20:48------------------- 46 | Nguyen Chinh Thuy 47 | 2018-03-07 03:20:48------------------- 48 | Nguyen Chinh Thuy 49 | 2018-03-07 03:20:48------------------- 50 | Nguyen Chinh Thuy 51 | 2018-03-07 03:20:48------------------- 52 | Nguyen Chinh Thuy 53 | 2018-03-09 10:23:05------------------- 54 | Nguyen Chinh Thuy 55 | 2018-03-09 10:23:05------------------- 56 | Nguyen Chinh Thuy 57 | 2018-03-09 10:23:06------------------- 58 | Nguyen Chinh Thuy 59 | 2018-03-09 10:23:06------------------- 60 | Nguyen Chinh Thuy 61 | 2018-03-09 10:23:06------------------- 62 | Nguyen Chinh Thuy 63 | 2018-03-09 10:23:06------------------- 64 | Nguyen Chinh Thuy 65 | 2018-03-09 10:23:06------------------- 66 | Nguyen Chinh Thuy 67 | 2018-03-09 10:24:08------------------- 68 | Thuy 69 | 2018-03-09 10:24:08------------------- 70 | Thuy 71 | 2018-03-09 10:24:09------------------- 72 | Thuy 73 | 2018-03-09 10:24:09------------------- 74 | Thuy 75 | 2018-03-09 10:24:09------------------- 76 | Thuy 77 | 2018-03-09 10:24:09------------------- 78 | Thuy 79 | 2018-03-09 10:24:09------------------- 80 | Thuy 81 | 2018-03-09 10:24:10------------------- 82 | Thuy 83 | 2018-03-09 10:24:10------------------- 84 | Thuy 85 | 2018-03-09 10:24:11------------------- 86 | Thuy 87 | 2018-03-09 10:24:12------------------- 88 | Thuy 89 | 2018-03-09 10:24:12------------------- 90 | Thuy 91 | 2018-03-09 10:24:12------------------- 92 | Thuy 93 | 2018-03-09 10:24:12------------------- 94 | Thuy 95 | 2018-03-09 10:24:12------------------- 96 | Thuy 97 | 2018-03-09 10:24:13------------------- 98 | Thuy 99 | 2018-03-09 10:24:13------------------- 100 | Thuy 101 | 2018-03-09 10:24:13------------------- 102 | Thuy 103 | 2018-03-09 10:24:13------------------- 104 | Thuy 105 | 2018-03-09 10:24:13------------------- 106 | Thuy 107 | 2018-03-09 10:24:13------------------- 108 | Thuy 109 | 2018-03-09 10:24:14------------------- 110 | Thuy 111 | 2018-03-09 10:24:14------------------- 112 | Thuy 113 | 2018-03-09 10:24:14------------------- 114 | Thuy 115 | 2018-03-09 10:24:15------------------- 116 | Thuy 117 | 2018-03-09 10:24:22------------------- 118 | alm 119 | 2018-03-09 10:24:23------------------- 120 | alm 121 | 2018-03-09 10:24:23------------------- 122 | alm 123 | 2018-03-09 10:24:23------------------- 124 | alm 125 | 2018-03-09 10:24:23------------------- 126 | alm 127 | 2018-03-09 10:24:23------------------- 128 | alm 129 | 2018-03-09 10:24:23------------------- 130 | alm 131 | 2018-03-09 10:24:23------------------- 132 | alm 133 | 2018-03-09 10:24:24------------------- 134 | alm 135 | 2018-03-09 10:24:24------------------- 136 | alm 137 | 2018-03-09 10:24:24------------------- 138 | alm 139 | 2018-03-09 10:24:24------------------- 140 | alm 141 | 2018-03-09 10:24:24------------------- 142 | alm 143 | 2018-03-09 10:24:25------------------- 144 | alm 145 | 2018-03-09 10:24:37------------------- 146 | alm 147 | 2018-03-09 10:24:38------------------- 148 | alm 149 | 2018-03-09 10:24:38------------------- 150 | alm 151 | 2018-03-09 10:24:38------------------- 152 | alm 153 | 2018-03-09 10:24:38------------------- 154 | alm 155 | 2018-03-09 10:24:38------------------- 156 | alm 157 | 2018-03-09 10:24:39------------------- 158 | alm 159 | 2018-03-09 10:24:39------------------- 160 | alm 161 | 2018-03-09 10:24:39------------------- 162 | alm 163 | 2018-03-09 10:24:40------------------- 164 | Thuy 165 | 2018-03-09 10:24:40------------------- 166 | 1 167 | 2018-03-09 10:24:40------------------- 168 | Thuy 169 | 2018-03-09 10:24:40------------------- 170 | alm 171 | 2018-03-09 10:24:41------------------- 172 | alm 173 | 2018-03-09 10:24:41------------------- 174 | alm 175 | 2018-03-09 10:24:41------------------- 176 | alm 177 | 2018-03-09 10:24:42------------------- 178 | alm 179 | 2018-03-09 10:24:42------------------- 180 | alm 181 | 2018-03-09 10:24:42------------------- 182 | Thuy 183 | 2018-03-09 10:24:42------------------- 184 | Thuy 185 | 2018-03-09 10:24:42------------------- 186 | alm 187 | 2018-03-09 10:24:43------------------- 188 | alm 189 | 2018-03-09 10:24:43------------------- 190 | alm 191 | 2018-03-09 10:24:43------------------- 192 | alm 193 | 2018-03-09 10:24:43------------------- 194 | alm 195 | 2018-03-09 10:24:44------------------- 196 | alm 197 | 2018-03-09 10:24:44------------------- 198 | alm 199 | 2018-03-09 10:24:44------------------- 200 | alm 201 | 2018-03-09 10:24:44------------------- 202 | alm 203 | 2018-03-09 10:24:44------------------- 204 | alm 205 | 2018-03-09 10:24:44------------------- 206 | alm 207 | 2018-03-09 10:24:45------------------- 208 | alm 209 | 2018-03-09 10:24:45------------------- 210 | alm 211 | 2018-03-09 10:24:46------------------- 212 | alm 213 | 2018-03-09 10:24:46------------------- 214 | alm 215 | 2018-03-09 10:24:46------------------- 216 | alm 217 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/logfile/3.log: -------------------------------------------------------------------------------- 1 | 2018-03-09 10:24:46------------------- 2 | alm 3 | 2018-03-09 10:24:47------------------- 4 | alm 5 | 2018-03-09 10:24:47------------------- 6 | alm 7 | 2018-03-09 10:24:47------------------- 8 | alm 9 | 2018-03-09 10:24:47------------------- 10 | alm 11 | 2018-03-09 10:24:47------------------- 12 | alm 13 | 2018-03-09 10:24:47------------------- 14 | alm 15 | 2018-03-09 10:24:48------------------- 16 | alm 17 | 2018-03-09 10:24:54------------------- 18 | alm 19 | 2018-03-09 10:24:54------------------- 20 | 1 21 | 2018-03-09 10:24:54------------------- 22 | alm 23 | 2018-03-09 10:24:54------------------- 24 | alm 25 | 2018-03-09 10:24:54------------------- 26 | alm 27 | 2018-03-09 10:24:54------------------- 28 | alm 29 | 2018-03-09 10:24:55------------------- 30 | alm 31 | 2018-03-09 10:24:55------------------- 32 | alm 33 | 2018-03-09 10:24:55------------------- 34 | alm 35 | 2018-03-09 10:24:55------------------- 36 | alm 37 | 2018-03-09 10:24:55------------------- 38 | alm 39 | 2018-03-09 10:24:55------------------- 40 | alm 41 | 2018-03-09 10:24:56------------------- 42 | alm 43 | 2018-03-09 10:24:56------------------- 44 | alm 45 | 2018-03-09 10:24:57------------------- 46 | alm 47 | 2018-03-09 10:24:57------------------- 48 | alm 49 | 2018-03-09 10:24:57------------------- 50 | alm 51 | 2018-03-09 10:24:57------------------- 52 | alm 53 | 2018-03-09 10:24:57------------------- 54 | alm 55 | 2018-03-09 10:24:58------------------- 56 | alm 57 | 2018-03-09 10:24:59------------------- 58 | alm 59 | 2018-03-09 10:25:00------------------- 60 | alm 61 | 2018-03-09 10:25:00------------------- 62 | alm 63 | 2018-03-09 10:25:00------------------- 64 | alm 65 | 2018-03-09 10:25:00------------------- 66 | 1 67 | 2018-03-09 10:25:01------------------- 68 | alm 69 | 2018-03-09 10:25:01------------------- 70 | alm 71 | 2018-03-09 10:25:01------------------- 72 | alm 73 | 2018-03-09 10:25:01------------------- 74 | alm 75 | 2018-03-09 10:25:01------------------- 76 | alm 77 | 2018-03-09 10:25:02------------------- 78 | alm 79 | 2018-03-09 10:25:02------------------- 80 | alm 81 | 2018-03-09 10:25:02------------------- 82 | alm 83 | 2018-03-09 10:25:02------------------- 84 | alm 85 | 2018-03-09 10:25:02------------------- 86 | alm 87 | 2018-03-09 10:25:02------------------- 88 | alm 89 | 2018-03-09 10:25:05------------------- 90 | Thuy 91 | 2018-03-09 10:25:05------------------- 92 | Thuy 93 | 2018-03-09 10:25:06------------------- 94 | Thuy 95 | 2018-03-09 10:25:11------------------- 96 | 112 97 | 2018-03-09 10:25:11------------------- 98 | 112 99 | 2018-03-09 10:25:11------------------- 100 | 112 101 | 2018-03-09 10:25:11------------------- 102 | 112 103 | 2018-03-09 10:25:11------------------- 104 | 112 105 | 2018-03-09 10:25:12------------------- 106 | 112 107 | 2018-03-09 10:25:12------------------- 108 | 112 109 | 2018-03-09 10:25:12------------------- 110 | 112 111 | 2018-03-09 10:25:12------------------- 112 | 112 113 | 2018-03-09 10:25:12------------------- 114 | 112 115 | 2018-03-09 10:25:12------------------- 116 | 112 117 | 2018-03-09 10:25:12------------------- 118 | alm 119 | 2018-03-09 10:25:13------------------- 120 | 112 121 | 2018-03-09 10:25:13------------------- 122 | 112 123 | 2018-03-09 10:25:14------------------- 124 | 112 125 | 2018-03-09 10:25:15------------------- 126 | 1 127 | 2018-03-09 10:25:19------------------- 128 | alm 129 | 2018-03-09 10:25:19------------------- 130 | alm 131 | 2018-03-09 10:25:19------------------- 132 | 1 133 | 2018-03-09 10:25:19------------------- 134 | alm 135 | 2018-03-09 10:25:19------------------- 136 | 112 137 | 2018-03-09 10:25:20------------------- 138 | 112 139 | 2018-03-09 10:25:20------------------- 140 | alm 141 | 2018-03-09 10:25:20------------------- 142 | alm 143 | 2018-03-09 10:25:20------------------- 144 | alm 145 | 2018-03-09 10:25:20------------------- 146 | 1 147 | 2018-03-09 10:25:20------------------- 148 | 112 149 | 2018-03-09 10:25:24------------------- 150 | Thuy 151 | 2018-03-09 10:25:25------------------- 152 | Thuy 153 | 2018-03-09 10:25:25------------------- 154 | 1212 155 | 2018-03-09 10:25:26------------------- 156 | Thuy 157 | 2018-03-09 10:25:26------------------- 158 | alm 159 | 2018-03-09 10:25:26------------------- 160 | 112 161 | 2018-03-09 10:25:26------------------- 162 | 112 163 | 2018-03-09 10:25:26------------------- 164 | 112 165 | 2018-03-09 10:25:26------------------- 166 | 112 167 | 2018-03-09 10:25:27------------------- 168 | alm 169 | 2018-03-09 10:25:30------------------- 170 | alm 171 | 2018-03-09 10:25:30------------------- 172 | alm 173 | 2018-03-09 10:25:31------------------- 174 | 112 175 | 2018-03-09 10:25:31------------------- 176 | Thuy 177 | 2018-03-09 10:25:31------------------- 178 | 1 179 | 2018-03-09 10:25:31------------------- 180 | 1212 181 | 2018-03-09 10:25:32------------------- 182 | 1212 183 | 2018-03-09 10:25:32------------------- 184 | 1212 185 | 2018-03-09 10:25:32------------------- 186 | Thuy 187 | 2018-03-09 10:25:32------------------- 188 | Thuy 189 | 2018-03-09 10:25:32------------------- 190 | Thuy 191 | 2018-03-09 10:25:33------------------- 192 | 1212 193 | 2018-03-09 10:25:33------------------- 194 | 1212 195 | 2018-03-09 10:25:33------------------- 196 | alm 197 | 2018-03-09 10:25:33------------------- 198 | Thuy 199 | 2018-03-09 10:25:34------------------- 200 | 112 201 | 2018-03-09 10:25:34------------------- 202 | 112 203 | 2018-03-09 10:25:35------------------- 204 | alm 205 | 2018-03-09 10:25:35------------------- 206 | alm 207 | 2018-03-09 10:25:35------------------- 208 | 112 209 | 2018-03-09 10:25:35------------------- 210 | 112 211 | 2018-03-09 10:25:36------------------- 212 | 1212 213 | 2018-03-09 10:25:36------------------- 214 | alm 215 | 2018-03-09 10:25:36------------------- 216 | alm 217 | 2018-03-09 10:25:36------------------- 218 | 1212 219 | 2018-03-09 10:25:36------------------- 220 | alm 221 | 2018-03-09 10:25:37------------------- 222 | alm 223 | 2018-03-09 10:25:37------------------- 224 | 1212 225 | 2018-03-09 10:25:37------------------- 226 | 1212 227 | 2018-03-09 10:25:37------------------- 228 | Thuy 229 | 2018-03-09 10:25:38------------------- 230 | 112 231 | 2018-03-09 10:25:38------------------- 232 | 1212 233 | 2018-03-09 10:25:38------------------- 234 | alm 235 | 2018-03-09 10:25:38------------------- 236 | alm 237 | 2018-03-09 10:25:39------------------- 238 | alm 239 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/logfile/4.log: -------------------------------------------------------------------------------- 1 | 2018-03-09 10:25:39------------------- 2 | 112 3 | 2018-03-09 10:25:44------------------- 4 | Thuy 5 | 2018-03-09 10:25:45------------------- 6 | Thuy 7 | 2018-03-09 10:25:45------------------- 8 | Thuy 9 | 2018-03-09 10:25:45------------------- 10 | Thuy 11 | 2018-03-09 10:25:45------------------- 12 | 1 13 | 2018-03-09 10:25:46------------------- 14 | 1212 15 | 2018-03-09 10:25:46------------------- 16 | 1212 17 | 2018-03-09 10:25:50------------------- 18 | 112 19 | 2018-03-09 10:25:50------------------- 20 | Thuy 21 | 2018-03-09 10:26:19------------------- 22 | Thuy 23 | 2018-03-09 10:26:20------------------- 24 | Thuy 25 | 2018-03-09 10:26:20------------------- 26 | iji 27 | 2018-03-09 10:26:24------------------- 28 | bjnj 29 | 2018-03-09 10:26:25------------------- 30 | bjnj 31 | 2018-03-09 10:26:25------------------- 32 | bjnj 33 | 2018-03-09 10:26:26------------------- 34 | bjnj 35 | 2018-03-09 10:26:26------------------- 36 | bjnj 37 | 2018-03-09 10:26:26------------------- 38 | bjnj 39 | 2018-03-09 10:26:26------------------- 40 | bjnj 41 | 2018-03-09 10:26:30------------------- 42 | bjnj 43 | 2018-03-09 10:26:30------------------- 44 | bjnj 45 | 2018-03-09 10:26:31------------------- 46 | bjnj 47 | 2018-03-09 10:26:31------------------- 48 | bjnj 49 | 2018-03-09 10:26:31------------------- 50 | bjnj 51 | 2018-03-09 10:26:32------------------- 52 | bjnj 53 | 2018-03-09 10:26:32------------------- 54 | bjnj 55 | 2018-03-09 10:26:32------------------- 56 | bjnj 57 | 2018-03-09 10:26:32------------------- 58 | bjnj 59 | 2018-03-09 10:26:34------------------- 60 | iji 61 | 2018-03-09 10:26:38------------------- 62 | bjnj 63 | 2018-03-09 10:26:38------------------- 64 | bjnj 65 | 2018-03-09 10:26:38------------------- 66 | bjnj 67 | 2018-03-09 10:26:38------------------- 68 | bjnj 69 | 2018-03-09 10:26:38------------------- 70 | bjnj 71 | 2018-03-09 10:26:41------------------- 72 | mkmk 73 | 2018-03-09 10:26:41------------------- 74 | mkmk 75 | 2018-03-09 10:26:41------------------- 76 | bjnj 77 | 2018-03-09 10:26:41------------------- 78 | mkmk 79 | 2018-03-09 10:26:44------------------- 80 | mkmk 81 | 2018-03-09 10:26:44------------------- 82 | mkmk 83 | 2018-03-09 10:26:44------------------- 84 | mkmk 85 | 2018-03-09 10:26:44------------------- 86 | mkmk 87 | 2018-03-09 10:26:44------------------- 88 | mkmk 89 | 2018-03-09 10:26:44------------------- 90 | mkmk 91 | 2018-03-09 10:26:45------------------- 92 | mkmk 93 | 2018-03-09 10:26:45------------------- 94 | mkmk 95 | 2018-03-09 10:26:45------------------- 96 | mkmk 97 | 2018-03-09 10:26:45------------------- 98 | mkmk 99 | 2018-03-09 10:26:45------------------- 100 | mkmk 101 | 2018-03-09 10:26:45------------------- 102 | mkmk 103 | 2018-03-09 10:26:45------------------- 104 | mkmk 105 | 2018-03-09 10:26:45------------------- 106 | mkmk 107 | 2018-03-09 10:26:46------------------- 108 | mkmk 109 | 2018-03-09 10:26:46------------------- 110 | mkmk 111 | 2018-03-09 10:26:46------------------- 112 | mkmk 113 | 2018-03-09 10:26:46------------------- 114 | mkmk 115 | 2018-03-09 10:26:46------------------- 116 | mkmk 117 | 2018-03-09 10:26:46------------------- 118 | mkmk 119 | 2018-03-09 10:26:46------------------- 120 | mkmk 121 | 2018-03-09 10:26:46------------------- 122 | mkmk 123 | 2018-03-09 10:26:46------------------- 124 | mkmk 125 | 2018-03-09 10:26:47------------------- 126 | mkmk 127 | 2018-03-09 10:26:47------------------- 128 | mkmk 129 | 2018-03-09 10:26:47------------------- 130 | mkmk 131 | 2018-03-09 10:26:47------------------- 132 | mkmk 133 | 2018-03-09 10:26:47------------------- 134 | bjnj 135 | 2018-03-09 10:26:47------------------- 136 | mkmk 137 | 2018-03-09 10:26:47------------------- 138 | mkmk 139 | 2018-03-09 10:26:47------------------- 140 | mkmk 141 | 2018-03-09 10:26:47------------------- 142 | mkmk 143 | 2018-03-09 10:26:48------------------- 144 | mkmk 145 | 2018-03-09 10:26:48------------------- 146 | mkmk 147 | 2018-03-09 10:26:48------------------- 148 | bjnj 149 | 2018-03-09 10:26:48------------------- 150 | mkmk 151 | 2018-03-09 10:26:48------------------- 152 | mkmk 153 | 2018-03-09 10:26:48------------------- 154 | mkmk 155 | 2018-03-09 10:26:48------------------- 156 | mkmk 157 | 2018-03-09 10:26:48------------------- 158 | mkmk 159 | 2018-03-09 10:26:49------------------- 160 | mkmk 161 | 2018-03-09 10:26:49------------------- 162 | mkmk 163 | 2018-03-09 10:26:49------------------- 164 | mkmk 165 | 2018-03-09 10:26:49------------------- 166 | mkmk 167 | 2018-03-09 10:26:49------------------- 168 | mkmk 169 | 2018-03-09 10:26:49------------------- 170 | mkmk 171 | 2018-03-09 10:26:49------------------- 172 | mkmk 173 | 2018-03-09 10:26:59------------------- 174 | mkmk 175 | 2018-03-09 10:26:59------------------- 176 | mkmk 177 | 2018-03-09 10:26:59------------------- 178 | mkmk 179 | 2018-03-09 10:26:59------------------- 180 | jiji 181 | 2018-03-09 10:26:59------------------- 182 | mkmk 183 | 2018-03-09 10:26:59------------------- 184 | 1212 185 | 2018-03-09 10:26:59------------------- 186 | 112 187 | 2018-03-09 10:27:00------------------- 188 | 112 189 | 2018-03-09 10:27:00------------------- 190 | 112 191 | 2018-03-09 10:27:00------------------- 192 | 112 193 | 2018-03-09 10:27:00------------------- 194 | Thuy 195 | 2018-03-09 10:27:00------------------- 196 | 112 197 | 2018-03-09 10:27:00------------------- 198 | Thuy 199 | 2018-03-09 10:27:17------------------- 200 | bjnj 201 | 2018-03-09 10:27:17------------------- 202 | bjnj 203 | 2018-03-09 10:27:18------------------- 204 | bjnj 205 | 2018-03-09 10:27:18------------------- 206 | bjnj 207 | 2018-03-09 10:27:18------------------- 208 | iji 209 | 2018-03-09 10:27:18------------------- 210 | bjnj 211 | 2018-03-09 10:27:35------------------- 212 | Thuy 213 | 2018-03-09 10:27:35------------------- 214 | Thuy 215 | 2018-03-09 10:27:38------------------- 216 | 112 217 | 2018-03-09 10:27:38------------------- 218 | 112 219 | 2018-03-09 10:27:38------------------- 220 | 112 221 | 2018-03-09 10:27:38------------------- 222 | 112 223 | 2018-03-09 10:27:38------------------- 224 | 112 225 | 2018-03-09 10:27:38------------------- 226 | 112 227 | 2018-03-09 10:27:39------------------- 228 | 112 229 | 2018-03-09 10:27:39------------------- 230 | 112 231 | 2018-03-09 10:27:39------------------- 232 | 112 233 | 2018-03-09 10:27:39------------------- 234 | 112 235 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/logfile/5.log: -------------------------------------------------------------------------------- 1 | 2018-03-09 10:27:39------------------- 2 | 112 3 | 2018-03-09 10:27:39------------------- 4 | 112 5 | 2018-03-09 10:27:39------------------- 6 | Thuy 7 | 2018-03-09 10:27:39------------------- 8 | 112 9 | 2018-03-09 10:27:40------------------- 10 | 112 11 | 2018-03-09 10:27:40------------------- 12 | 112 13 | 2018-03-09 10:27:40------------------- 14 | 112 15 | 2018-03-09 10:27:41------------------- 16 | 112 17 | 2018-03-09 10:27:41------------------- 18 | 112 19 | 2018-03-09 10:27:44------------------- 20 | alm 21 | 2018-03-09 10:27:45------------------- 22 | alm 23 | 2018-03-09 10:27:45------------------- 24 | alm 25 | 2018-03-09 10:27:45------------------- 26 | alm 27 | 2018-03-09 10:27:45------------------- 28 | alm 29 | 2018-03-09 10:27:46------------------- 30 | 112 31 | 2018-03-09 10:27:46------------------- 32 | alm 33 | 2018-03-09 10:27:46------------------- 34 | alm 35 | 2018-03-09 10:27:46------------------- 36 | alm 37 | 2018-03-09 10:27:46------------------- 38 | alm 39 | 2018-03-09 10:27:47------------------- 40 | alm 41 | 2018-03-09 10:27:47------------------- 42 | alm 43 | 2018-03-09 10:27:47------------------- 44 | alm 45 | 2018-03-09 10:27:47------------------- 46 | alm 47 | 2018-03-09 10:27:47------------------- 48 | alm 49 | 2018-03-09 10:27:47------------------- 50 | alm 51 | 2018-03-09 10:27:48------------------- 52 | alm 53 | 2018-03-09 10:27:48------------------- 54 | 112 55 | 2018-03-09 10:27:48------------------- 56 | 112 57 | 2018-03-09 10:27:48------------------- 58 | alm 59 | 2018-03-09 10:27:48------------------- 60 | alm 61 | 2018-03-09 10:27:48------------------- 62 | alm 63 | 2018-03-09 10:27:49------------------- 64 | 112 65 | 2018-03-09 10:27:49------------------- 66 | 112 67 | 2018-03-09 10:27:49------------------- 68 | 112 69 | 2018-03-09 10:27:49------------------- 70 | 112 71 | 2018-03-09 10:27:50------------------- 72 | 112 73 | 2018-03-09 10:27:50------------------- 74 | alm 75 | 2018-03-09 10:27:50------------------- 76 | 112 77 | 2018-03-09 10:27:50------------------- 78 | 112 79 | 2018-03-09 10:27:51------------------- 80 | 112 81 | 2018-03-09 10:27:51------------------- 82 | 112 83 | 2018-03-09 10:27:54------------------- 84 | 112 85 | 2018-03-09 10:27:54------------------- 86 | 112 87 | 2018-03-09 10:27:54------------------- 88 | 112 89 | 2018-03-09 10:27:54------------------- 90 | 112 91 | 2018-03-09 10:28:14------------------- 92 | jiol 93 | 2018-03-09 10:28:14------------------- 94 | jiol 95 | 2018-03-09 10:28:15------------------- 96 | jiol 97 | 2018-03-09 10:28:15------------------- 98 | jiol 99 | 2018-03-09 10:28:15------------------- 100 | jiol 101 | 2018-03-09 10:28:15------------------- 102 | jiol 103 | 2018-03-09 10:28:15------------------- 104 | jiol 105 | 2018-03-09 10:28:16------------------- 106 | jiol 107 | 2018-03-09 10:28:18------------------- 108 | jiol 109 | 2018-03-09 10:28:20------------------- 110 | jiol 111 | 2018-03-09 10:28:20------------------- 112 | jiol 113 | 2018-03-09 10:28:20------------------- 114 | jiol 115 | 2018-03-09 10:28:21------------------- 116 | jiol 117 | 2018-03-09 10:28:22------------------- 118 | jiol 119 | 2018-03-09 10:28:24------------------- 120 | Thuy 121 | 2018-03-09 10:28:29------------------- 122 | jiol 123 | 2018-03-09 10:28:29------------------- 124 | jiol 125 | 2018-03-09 10:28:30------------------- 126 | jiol 127 | 2018-03-09 10:28:31------------------- 128 | jiol 129 | 2018-03-09 10:28:31------------------- 130 | jiol 131 | 2018-03-09 10:28:31------------------- 132 | jiol 133 | 2018-03-09 10:28:31------------------- 134 | jiol 135 | 2018-03-09 10:28:32------------------- 136 | jiol 137 | 2018-03-09 10:28:32------------------- 138 | jiol 139 | 2018-03-09 10:28:32------------------- 140 | jiol 141 | 2018-03-09 10:28:32------------------- 142 | jiol 143 | 2018-03-09 10:28:32------------------- 144 | jiol 145 | 2018-03-09 10:28:32------------------- 146 | jiol 147 | 2018-03-09 10:28:44------------------- 148 | 112 149 | 2018-03-09 10:28:58------------------- 150 | 1 151 | 2018-03-09 10:28:58------------------- 152 | 1 153 | 2018-03-09 10:28:58------------------- 154 | 1 155 | 2018-03-09 10:28:58------------------- 156 | 1 157 | 2018-03-09 10:28:58------------------- 158 | 1212 159 | 2018-03-09 10:28:58------------------- 160 | alm 161 | 2018-03-09 10:28:59------------------- 162 | alm 163 | 2018-03-09 10:28:59------------------- 164 | alm 165 | 2018-03-09 10:28:59------------------- 166 | alm 167 | 2018-03-09 10:28:59------------------- 168 | alm 169 | 2018-03-09 10:28:59------------------- 170 | alm 171 | 2018-03-09 10:28:59------------------- 172 | alm 173 | 2018-03-09 10:29:00------------------- 174 | alm 175 | 2018-03-09 10:29:00------------------- 176 | 1212 177 | 2018-03-09 10:29:00------------------- 178 | 1 179 | 2018-03-09 10:29:00------------------- 180 | alm 181 | 2018-03-09 10:29:02------------------- 182 | hujik 183 | 2018-03-09 10:29:02------------------- 184 | hujik 185 | 2018-03-09 10:29:03------------------- 186 | hujik 187 | 2018-03-09 10:29:03------------------- 188 | hujik 189 | 2018-03-09 10:29:03------------------- 190 | hujik 191 | 2018-03-09 10:29:03------------------- 192 | hujik 193 | 2018-03-09 10:29:03------------------- 194 | hujik 195 | 2018-03-09 10:29:03------------------- 196 | hujik 197 | 2018-03-09 10:29:03------------------- 198 | hujik 199 | 2018-03-09 10:29:04------------------- 200 | difi9sef] 201 | 2018-03-09 10:29:13------------------- 202 | njnj 203 | 2018-03-09 10:29:13------------------- 204 | 1 205 | 2018-03-09 10:29:14------------------- 206 | 112 207 | 2018-03-09 10:29:19------------------- 208 | 1 209 | 2018-03-09 10:29:20------------------- 210 | alm 211 | 2018-03-09 10:29:20------------------- 212 | alm 213 | 2018-03-09 10:29:20------------------- 214 | Thuy 215 | 2018-03-09 10:29:20------------------- 216 | Thuy 217 | 2018-03-09 10:29:20------------------- 218 | Thuy 219 | 2018-03-09 10:29:20------------------- 220 | njnj 221 | 2018-03-09 10:29:21------------------- 222 | Thuy 223 | 2018-03-09 10:29:21------------------- 224 | Thuy 225 | 2018-03-09 10:29:21------------------- 226 | njnj 227 | 2018-03-09 10:29:26------------------- 228 | alm 229 | 2018-03-09 10:29:28------------------- 230 | njnj 231 | 2018-03-09 10:29:28------------------- 232 | njnj 233 | 2018-03-09 10:29:33------------------- 234 | Thuy 235 | 2018-03-09 10:29:34------------------- 236 | Thuy 237 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/logfile/6.log: -------------------------------------------------------------------------------- 1 | 2018-03-09 10:29:34------------------- 2 | Thuy 3 | 2018-03-09 10:29:35------------------- 4 | alm 5 | 2018-03-09 10:29:35------------------- 6 | Thuy 7 | 2018-03-09 10:29:36------------------- 8 | njnj 9 | 2018-03-09 10:29:36------------------- 10 | njnj 11 | 2018-03-09 10:29:36------------------- 12 | Thuy 13 | 2018-03-09 10:29:37------------------- 14 | Thuy 15 | 2018-03-09 10:29:38------------------- 16 | 1 17 | 2018-03-09 10:29:38------------------- 18 | njnj 19 | 2018-03-09 10:29:40------------------- 20 | Thuy 21 | 2018-03-09 10:29:41------------------- 22 | njnj 23 | 2018-03-09 10:29:41------------------- 24 | njnj 25 | 2018-03-09 10:29:41------------------- 26 | njnj 27 | 2018-03-09 10:29:49------------------- 28 | m,k 29 | 2018-03-09 10:29:49------------------- 30 | m,k 31 | 2018-03-09 10:29:49------------------- 32 | m,k 33 | 2018-03-09 10:29:50------------------- 34 | alm 35 | 2018-03-09 10:29:50------------------- 36 | alm 37 | 2018-03-09 10:29:50------------------- 38 | alm 39 | 2018-03-09 10:29:50------------------- 40 | alm 41 | 2018-03-09 10:29:50------------------- 42 | alm 43 | 2018-03-09 10:29:50------------------- 44 | alm 45 | 2018-03-09 10:29:50------------------- 46 | alm 47 | 2018-03-09 10:29:51------------------- 48 | alm 49 | 2018-03-09 10:29:51------------------- 50 | alm 51 | 2018-03-09 10:29:51------------------- 52 | alm 53 | 2018-03-09 10:29:51------------------- 54 | alm 55 | 2018-03-09 10:29:51------------------- 56 | alm 57 | 2018-03-09 10:29:51------------------- 58 | alm 59 | 2018-03-09 10:29:52------------------- 60 | m,k 61 | 2018-03-09 10:29:53------------------- 62 | 1 63 | 2018-03-09 10:29:53------------------- 64 | 1 65 | 2018-03-09 10:29:53------------------- 66 | alm 67 | 2018-03-09 10:29:53------------------- 68 | alm 69 | 2018-03-09 10:29:53------------------- 70 | m,k 71 | 2018-03-09 10:29:53------------------- 72 | m,k 73 | 2018-03-09 10:29:53------------------- 74 | alm 75 | 2018-03-09 10:29:54------------------- 76 | alm 77 | 2018-03-09 10:29:54------------------- 78 | alm 79 | 2018-03-09 10:29:54------------------- 80 | m,k 81 | 2018-03-09 10:29:54------------------- 82 | m,k 83 | 2018-03-09 10:29:58------------------- 84 | ijim 85 | 2018-03-09 10:29:59------------------- 86 | alm 87 | 2018-03-09 10:29:59------------------- 88 | alm 89 | 2018-03-09 10:29:59------------------- 90 | ijim 91 | 2018-03-09 10:29:59------------------- 92 | 1 93 | 2018-03-09 10:29:59------------------- 94 | 1 95 | 2018-03-09 10:29:59------------------- 96 | 1 97 | 2018-03-09 10:30:00------------------- 98 | alm 99 | 2018-03-09 10:30:00------------------- 100 | 1 101 | 2018-03-09 10:30:00------------------- 102 | m,k 103 | 2018-03-09 10:30:02------------------- 104 | ijim 105 | 2018-03-09 10:30:09------------------- 106 | ijim 107 | 2018-03-09 10:30:09------------------- 108 | ijim 109 | 2018-03-09 10:30:09------------------- 110 | ijim 111 | 2018-03-09 10:30:09------------------- 112 | ijim 113 | 2018-03-09 10:30:09------------------- 114 | ijim 115 | 2018-03-09 10:30:09------------------- 116 | ijim 117 | 2018-03-09 10:30:09------------------- 118 | ijim 119 | 2018-03-09 10:30:09------------------- 120 | ijim 121 | 2018-03-09 10:30:28------------------- 122 | km,l\\ 123 | 2018-03-09 10:30:29------------------- 124 | km,l\\ 125 | 2018-03-09 10:30:29------------------- 126 | km,l\\ 127 | 2018-03-09 10:30:29------------------- 128 | km,l\\ 129 | 2018-03-09 10:30:51------------------- 130 | alm 131 | 2018-03-09 10:30:52------------------- 132 | m,k 133 | 2018-03-09 10:31:25------------------- 134 | alm (86th copy) 135 | 2018-03-09 10:31:26------------------- 136 | 112 (copy) 137 | 2018-03-09 10:31:26------------------- 138 | m,k (copy) 139 | 2018-03-09 10:31:26------------------- 140 | alm (86th copy) 141 | 2018-03-09 10:31:26------------------- 142 | m,k (copy) 143 | 2018-03-09 10:31:27------------------- 144 | alm (86th copy) 145 | 2018-03-09 10:31:27------------------- 146 | m,k (copy) 147 | 2018-03-09 10:31:27------------------- 148 | m,k (copy) 149 | 2018-03-09 10:31:27------------------- 150 | m,k (copy) 151 | 2018-03-09 10:31:27------------------- 152 | 112 (copy) 153 | 2018-03-09 10:31:28------------------- 154 | 112 (copy) 155 | 2018-03-09 10:31:28------------------- 156 | 112 (copy) 157 | 2018-03-09 10:31:28------------------- 158 | 112 (copy) 159 | 2018-03-09 10:31:28------------------- 160 | 112 (copy) 161 | 2018-03-09 10:31:28------------------- 162 | 112 (copy) 163 | 2018-03-09 10:31:29------------------- 164 | 112 (copy) 165 | 2018-03-09 10:31:29------------------- 166 | 112 (copy) 167 | 2018-03-09 10:31:29------------------- 168 | 112 (copy) 169 | 2018-03-09 10:31:29------------------- 170 | 112 (copy) 171 | 2018-03-09 10:31:29------------------- 172 | 112 (copy) 173 | 2018-03-09 10:31:29------------------- 174 | 112 (copy) 175 | 2018-03-09 10:31:30------------------- 176 | 112 (copy) 177 | 2018-03-09 10:31:30------------------- 178 | 112 (copy) 179 | 2018-03-09 10:31:30------------------- 180 | 112 (copy) 181 | 2018-03-09 10:31:30------------------- 182 | 112 (copy) 183 | 2018-03-09 10:31:30------------------- 184 | 112 (copy) 185 | 2018-03-09 10:31:30------------------- 186 | 112 (copy) 187 | 2018-03-09 10:31:31------------------- 188 | alm (86th copy) 189 | 2018-03-09 10:31:31------------------- 190 | alm (86th copy) 191 | 2018-03-09 10:31:31------------------- 192 | alm (86th copy) 193 | 2018-03-09 10:31:31------------------- 194 | 112 (copy) 195 | 2018-03-09 10:31:32------------------- 196 | 112 (copy) 197 | 2018-03-09 10:31:32------------------- 198 | 112 (copy) 199 | 2018-03-09 10:31:32------------------- 200 | alm (86th copy) 201 | 2018-03-09 10:31:32------------------- 202 | alm (86th copy) 203 | 2018-03-09 10:31:34------------------- 204 | alm (86th copy) 205 | 2018-03-09 10:31:34------------------- 206 | alm (86th copy) 207 | 2018-03-09 10:31:34------------------- 208 | alm (86th copy) 209 | 2018-03-09 10:31:35------------------- 210 | 112 (copy) 211 | 2018-03-09 10:31:35------------------- 212 | 112 (copy) 213 | 2018-03-09 10:31:35------------------- 214 | 112 (copy) 215 | 2018-03-09 10:31:36------------------- 216 | 112 (copy) 217 | 2018-03-09 10:31:36------------------- 218 | 112 (copy) 219 | 2018-03-09 10:31:36------------------- 220 | 112 (copy) 221 | 2018-03-09 10:31:36------------------- 222 | 112 (copy) 223 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/logfile/7.log: -------------------------------------------------------------------------------- 1 | 2018-03-09 10:31:36------------------- 2 | 112 (copy) 3 | 2018-03-09 10:31:36------------------- 4 | 112 (copy) 5 | 2018-03-09 10:31:37------------------- 6 | lam (129th copy) 7 | 2018-03-09 10:31:37------------------- 8 | m,k (copy) 9 | 2018-03-09 10:31:37------------------- 10 | alm (86th copy) 11 | 2018-03-09 10:31:37------------------- 12 | alm (86th copy) 13 | 2018-03-09 10:31:38------------------- 14 | alm (86th copy) 15 | 2018-03-09 10:31:38------------------- 16 | alm (86th copy) 17 | 2018-03-09 10:31:38------------------- 18 | alm (86th copy) 19 | 2018-03-09 10:31:39------------------- 20 | alm (86th copy) 21 | 2018-03-09 10:31:39------------------- 22 | alm (86th copy) 23 | 2018-03-09 10:31:40------------------- 24 | alm (86th copy) 25 | 2018-03-09 10:31:41------------------- 26 | m,k (copy) 27 | 2018-03-09 10:31:42------------------- 28 | lam (129th copy) 29 | 2018-03-09 10:31:42------------------- 30 | alm (86th copy) 31 | 2018-03-09 10:31:43------------------- 32 | alm (86th copy) 33 | 2018-03-09 10:31:43------------------- 34 | alm (86th copy) 35 | 2018-03-09 10:31:43------------------- 36 | alm (86th copy) 37 | 2018-03-09 10:31:44------------------- 38 | njnj (24th copy) 39 | 2018-03-09 10:31:44------------------- 40 | alm (86th copy) 41 | 2018-03-09 10:31:44------------------- 42 | 1 (11th copy) 43 | 2018-03-09 10:31:46------------------- 44 | 112 (copy) 45 | 2018-03-09 10:31:46------------------- 46 | alm (86th copy) 47 | 2018-03-09 10:31:47------------------- 48 | 1 (11th copy) 49 | 2018-03-09 10:31:47------------------- 50 | alm (86th copy) 51 | 2018-03-09 10:31:48------------------- 52 | opko; 53 | 2018-03-09 10:31:50------------------- 54 | 1 (11th copy) 55 | 2018-03-09 10:31:50------------------- 56 | alm (86th copy) 57 | 2018-03-09 10:31:50------------------- 58 | 1 (11th copy) 59 | 2018-03-09 10:31:50------------------- 60 | lam (129th copy) 61 | 2018-03-09 10:31:51------------------- 62 | 1 (11th copy) 63 | 2018-03-09 10:31:51------------------- 64 | 1 (11th copy) 65 | 2018-03-09 10:31:51------------------- 66 | 1 (11th copy) 67 | 2018-03-09 10:31:51------------------- 68 | 1 (11th copy) 69 | 2018-03-09 10:31:51------------------- 70 | 1 (11th copy) 71 | 2018-03-09 10:31:52------------------- 72 | 1 (11th copy) 73 | 2018-03-09 10:31:52------------------- 74 | njnj (24th copy) 75 | 2018-03-09 10:31:52------------------- 76 | alm (86th copy) 77 | 2018-03-09 10:31:53------------------- 78 | alm (86th copy) 79 | 2018-03-09 10:31:53------------------- 80 | 112 (copy) 81 | 2018-03-09 10:31:53------------------- 82 | 112 (copy) 83 | 2018-03-09 10:31:53------------------- 84 | 112 (copy) 85 | 2018-03-09 10:31:53------------------- 86 | 112 (copy) 87 | 2018-03-09 10:31:53------------------- 88 | 112 (copy) 89 | 2018-03-09 10:31:54------------------- 90 | 112 (copy) 91 | 2018-03-09 10:31:54------------------- 92 | 112 (copy) 93 | 2018-03-09 10:31:54------------------- 94 | 112 (copy) 95 | 2018-03-09 10:31:54------------------- 96 | 112 (copy) 97 | 2018-03-09 10:31:55------------------- 98 | 112 (copy) 99 | 2018-03-09 10:31:55------------------- 100 | 112 (copy) 101 | 2018-03-09 10:31:55------------------- 102 | 112 (copy) 103 | 2018-03-09 10:31:55------------------- 104 | 112 (copy) 105 | 2018-03-09 10:31:55------------------- 106 | m,k (copy) 107 | 2018-03-09 10:31:56------------------- 108 | 1 (11th copy) 109 | 2018-03-09 10:31:56------------------- 110 | njnj (24th copy) 111 | 2018-03-09 10:31:56------------------- 112 | njnj (24th copy) 113 | 2018-03-09 10:31:56------------------- 114 | njnj (24th copy) 115 | 2018-03-09 10:31:56------------------- 116 | 1 (11th copy) 117 | 2018-03-09 10:31:58------------------- 118 | njnj (24th copy) 119 | 2018-03-09 10:31:58------------------- 120 | 1 (11th copy) 121 | 2018-03-09 10:31:58------------------- 122 | 1 (11th copy) 123 | 2018-03-09 10:31:59------------------- 124 | opko; 125 | 2018-03-09 10:31:59------------------- 126 | alm (86th copy) 127 | 2018-03-09 10:32:00------------------- 128 | 112 (copy) 129 | 2018-03-09 10:32:00------------------- 130 | 112 (copy) 131 | 2018-03-09 10:32:00------------------- 132 | 112 (copy) 133 | 2018-03-09 10:32:01------------------- 134 | 112 (copy) 135 | 2018-03-09 10:32:01------------------- 136 | alm (86th copy) 137 | 2018-03-09 10:32:01------------------- 138 | m,k (copy) 139 | 2018-03-09 10:32:01------------------- 140 | m,k (copy) 141 | 2018-03-09 10:32:01------------------- 142 | njnj (24th copy) 143 | 2018-03-09 10:32:01------------------- 144 | alm (86th copy) 145 | 2018-03-09 10:32:02------------------- 146 | difi9sef] (129th copy) 147 | 2018-03-09 10:32:02------------------- 148 | 1 (11th copy) 149 | 2018-03-09 10:32:02------------------- 150 | njnj (24th copy) 151 | 2018-03-09 10:32:02------------------- 152 | njnj (24th copy) 153 | 2018-03-09 10:32:02------------------- 154 | alm (86th copy) 155 | 2018-03-09 10:32:02------------------- 156 | alm (86th copy) 157 | 2018-03-09 10:32:03------------------- 158 | njnj (24th copy) 159 | 2018-03-09 10:32:03------------------- 160 | m,k (copy) 161 | 2018-03-09 10:32:03------------------- 162 | 112 (copy) 163 | 2018-03-09 10:32:03------------------- 164 | lam (129th copy) 165 | 2018-03-09 10:32:03------------------- 166 | lam (129th copy) 167 | 2018-03-09 10:32:04------------------- 168 | lam (129th copy) 169 | 2018-03-09 10:32:04------------------- 170 | 112 (copy) 171 | 2018-03-09 10:32:04------------------- 172 | lam (129th copy) 173 | 2018-03-09 10:32:04------------------- 174 | difi9sef] (129th copy) 175 | 2018-03-09 10:32:04------------------- 176 | 112 (copy) 177 | 2018-03-09 10:32:04------------------- 178 | alm (86th copy) 179 | 2018-03-09 10:32:04------------------- 180 | alm (86th copy) 181 | 2018-03-09 10:32:05------------------- 182 | 1 (11th copy) 183 | 2018-03-09 10:32:05------------------- 184 | 1 (11th copy) 185 | 2018-03-09 10:32:05------------------- 186 | njnj (24th copy) 187 | 2018-03-09 10:32:05------------------- 188 | 112 (copy) 189 | 2018-03-09 10:32:06------------------- 190 | 112 (copy) 191 | 2018-03-09 10:32:06------------------- 192 | m,k (copy) 193 | 2018-03-09 10:32:06------------------- 194 | 112 (copy) 195 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/logfile/8.log: -------------------------------------------------------------------------------- 1 | 2018-03-09 10:32:06------------------- 2 | 112 (copy) 3 | 2018-03-09 10:32:06------------------- 4 | 112 (copy) 5 | 2018-03-09 10:32:07------------------- 6 | m,k (copy) 7 | 2018-03-09 10:32:07------------------- 8 | lam (129th copy) 9 | 2018-03-09 10:32:07------------------- 10 | 112 (copy) 11 | 2018-03-09 10:32:08------------------- 12 | m,k (copy) 13 | 2018-03-09 10:32:08------------------- 14 | m,k (copy) 15 | 2018-03-09 10:32:08------------------- 16 | njnj (24th copy) 17 | 2018-03-09 10:32:08------------------- 18 | lam (129th copy) 19 | 2018-03-09 10:32:08------------------- 20 | m,k (copy) 21 | 2018-03-09 10:32:09------------------- 22 | m,k (copy) 23 | 2018-03-09 10:32:09------------------- 24 | alm (86th copy) 25 | 2018-03-09 10:32:09------------------- 26 | lam (129th copy) 27 | 2018-03-09 10:32:10------------------- 28 | m,k (copy) 29 | 2018-03-09 10:32:11------------------- 30 | njnj (24th copy) 31 | 2018-03-09 10:32:11------------------- 32 | njnj (24th copy) 33 | 2018-03-09 10:32:12------------------- 34 | 1 (11th copy) 35 | 2018-03-09 10:32:12------------------- 36 | 1 (11th copy) 37 | 2018-03-09 10:32:12------------------- 38 | njnj (24th copy) 39 | 2018-03-09 10:32:12------------------- 40 | 1 (11th copy) 41 | 2018-03-09 10:32:12------------------- 42 | njnj (24th copy) 43 | 2018-03-09 10:32:14------------------- 44 | 112 (copy) 45 | 2018-03-09 10:32:14------------------- 46 | 112 (copy) 47 | 2018-03-09 10:32:14------------------- 48 | 112 (copy) 49 | 2018-03-09 10:32:14------------------- 50 | 112 (copy) 51 | 2018-03-09 10:32:14------------------- 52 | 112 (copy) 53 | 2018-03-09 10:32:14------------------- 54 | 112 (copy) 55 | 2018-03-09 10:32:15------------------- 56 | m,k (copy) 57 | 2018-03-09 10:32:15------------------- 58 | 112 (copy) 59 | 2018-03-09 10:32:15------------------- 60 | m,k (copy) 61 | 2018-03-09 10:32:16------------------- 62 | 112 (copy) 63 | 2018-03-09 10:32:16------------------- 64 | 112 (copy) 65 | 2018-03-09 10:32:16------------------- 66 | 112 (copy) 67 | 2018-03-09 10:32:16------------------- 68 | 112 (copy) 69 | 2018-03-09 10:32:16------------------- 70 | 112 (copy) 71 | 2018-03-09 10:32:17------------------- 72 | 1 (11th copy) 73 | 2018-03-09 10:32:17------------------- 74 | alm (86th copy) 75 | 2018-03-09 10:32:17------------------- 76 | njnj (24th copy) 77 | 2018-03-09 10:32:17------------------- 78 | njnj (24th copy) 79 | 2018-03-09 10:32:17------------------- 80 | njnj (24th copy) 81 | 2018-03-09 10:32:18------------------- 82 | alm (86th copy) 83 | 2018-03-09 10:32:18------------------- 84 | njnj (24th copy) 85 | 2018-03-09 10:32:18------------------- 86 | njnj (24th copy) 87 | 2018-03-09 10:32:18------------------- 88 | 1 (11th copy) 89 | 2018-03-09 10:32:21------------------- 90 | njnj (24th copy) 91 | 2018-03-09 10:32:21------------------- 92 | alm (86th copy) 93 | 2018-03-09 10:32:22------------------- 94 | 112 (copy) 95 | 2018-03-09 10:32:22------------------- 96 | alm (86th copy) 97 | 2018-03-09 10:32:22------------------- 98 | alm (86th copy) 99 | 2018-03-09 10:32:23------------------- 100 | 112 (copy) 101 | 2018-03-09 10:32:23------------------- 102 | 112 (copy) 103 | 2018-03-09 10:32:23------------------- 104 | 112 (copy) 105 | 2018-03-09 10:32:23------------------- 106 | 112 (copy) 107 | 2018-03-09 10:32:24------------------- 108 | 112 (copy) 109 | 2018-03-09 10:32:24------------------- 110 | 112 (copy) 111 | 2018-03-09 10:32:24------------------- 112 | 112 (copy) 113 | 2018-03-09 10:32:25------------------- 114 | 112 (copy) 115 | 2018-03-09 10:32:25------------------- 116 | 112 (copy) 117 | 2018-03-09 10:32:25------------------- 118 | 112 (copy) 119 | 2018-03-09 10:32:26------------------- 120 | 112 (copy) 121 | 2018-03-09 10:32:26------------------- 122 | 112 (copy) 123 | 2018-03-09 10:32:26------------------- 124 | 112 (copy) 125 | 2018-03-09 10:32:30------------------- 126 | 112 (copy) 127 | 2018-03-09 10:32:30------------------- 128 | 112 (copy) 129 | 2018-03-09 10:32:30------------------- 130 | 112 (copy) 131 | 2018-03-09 10:32:30------------------- 132 | 112 (copy) 133 | 2018-03-09 10:32:31------------------- 134 | 112 (copy) 135 | 2018-03-09 10:32:31------------------- 136 | 112 (copy) 137 | 2018-03-09 10:32:31------------------- 138 | 112 (copy) 139 | 2018-03-09 10:32:31------------------- 140 | 112 (copy) 141 | 2018-03-09 10:32:31------------------- 142 | 112 (copy) 143 | 2018-03-09 10:32:31------------------- 144 | 112 (copy) 145 | 2018-03-09 10:32:34------------------- 146 | 112 (copy) 147 | 2018-03-09 10:32:35------------------- 148 | 112 (copy) 149 | 2018-03-09 10:32:35------------------- 150 | 112 (copy) 151 | 2018-03-09 10:32:35------------------- 152 | 112 (copy) 153 | 2018-03-09 10:32:35------------------- 154 | m,k (copy) 155 | 2018-03-09 10:32:35------------------- 156 | 112 (copy) 157 | 2018-03-09 10:32:35------------------- 158 | 112 (copy) 159 | 2018-03-09 10:32:35------------------- 160 | 112 (copy) 161 | 2018-03-09 10:32:36------------------- 162 | 112 (copy) 163 | 2018-03-09 10:32:36------------------- 164 | 112 (copy) 165 | 2018-03-09 10:32:36------------------- 166 | 112 (copy) 167 | 2018-03-09 10:32:36------------------- 168 | 112 (copy) 169 | 2018-03-09 10:32:36------------------- 170 | 112 (copy) 171 | 2018-03-09 10:32:36------------------- 172 | 112 (copy) 173 | 2018-03-09 10:32:36------------------- 174 | 112 (copy) 175 | 2018-03-09 10:32:37------------------- 176 | 112 (copy) 177 | 2018-03-09 10:32:37------------------- 178 | njnj (24th copy) 179 | 2018-03-09 10:32:37------------------- 180 | njnj (24th copy) 181 | 2018-03-09 10:32:38------------------- 182 | m,k (copy) 183 | 2018-03-09 10:32:38------------------- 184 | 112 (copy) 185 | 2018-03-09 10:32:38------------------- 186 | 112 (copy) 187 | 2018-03-09 10:32:39------------------- 188 | 112 (copy) 189 | 2018-03-09 10:32:39------------------- 190 | 112 (copy) 191 | 2018-03-09 10:32:39------------------- 192 | m,k (copy) 193 | 2018-03-09 10:32:39------------------- 194 | m,k (copy) 195 | 2018-03-09 10:32:41------------------- 196 | lam (129th copy) 197 | 2018-03-09 10:32:41------------------- 198 | lam (129th copy) 199 | 2018-03-09 10:32:41------------------- 200 | m,k (copy) 201 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/logfile/9.log: -------------------------------------------------------------------------------- 1 | 2018-03-09 10:32:42------------------- 2 | lam (129th copy) 3 | 2018-03-09 10:32:42------------------- 4 | 1 (11th copy) 5 | 2018-03-09 10:32:42------------------- 6 | 1 (11th copy) 7 | 2018-03-09 10:32:42------------------- 8 | 1 (11th copy) 9 | 2018-03-09 10:32:43------------------- 10 | 1 (11th copy) 11 | 2018-03-09 10:32:43------------------- 12 | 1 (25th copy) 13 | 2018-03-26 06:08:23------------------- 14 | Thuy 15 | 2018-03-26 06:08:23------------------- 16 | Thuy 17 | 2018-03-26 06:08:23------------------- 18 | Thuy 19 | 2018-03-26 06:08:24------------------- 20 | Thuy 21 | 2018-03-26 06:08:24------------------- 22 | Thuy 23 | 2018-03-26 06:08:24------------------- 24 | Thuy 25 | 2018-03-26 06:08:24------------------- 26 | Thuy 27 | 2018-03-26 06:08:24------------------- 28 | Thuy 29 | 2018-03-26 06:08:24------------------- 30 | Thuy 31 | 2018-03-26 06:08:24------------------- 32 | Thuy 33 | 2018-03-26 06:08:24------------------- 34 | Thuy 35 | 2018-03-26 06:08:25------------------- 36 | Thuy 37 | 2018-03-26 06:08:25------------------- 38 | Thuy 39 | 2018-03-26 06:08:25------------------- 40 | Thuy 41 | 2018-03-26 06:08:25------------------- 42 | Thuy 43 | 2018-03-26 06:08:25------------------- 44 | Thuy 45 | 2018-03-26 06:08:25------------------- 46 | Thuy 47 | 2018-03-26 06:08:25------------------- 48 | Thuy 49 | 2018-03-26 06:08:25------------------- 50 | Thuy 51 | 2018-03-26 06:08:25------------------- 52 | Thuy 53 | 2018-03-26 06:08:25------------------- 54 | Thuy 55 | 2018-03-26 06:08:25------------------- 56 | Thuy 57 | 2018-03-26 06:08:26------------------- 58 | Thuy 59 | 2018-03-26 06:08:26------------------- 60 | Thuy 61 | 2018-03-26 06:08:27------------------- 62 | Thuy 63 | 2018-03-26 06:08:27------------------- 64 | Thuy 65 | 2018-03-26 06:08:27------------------- 66 | Thuy 67 | 2018-03-26 06:08:28------------------- 68 | Thuy 69 | 2018-03-26 06:08:28------------------- 70 | Thuy 71 | 2018-03-26 06:08:28------------------- 72 | Thuy 73 | 2018-03-26 06:08:28------------------- 74 | Thuy 75 | 2018-03-26 06:08:28------------------- 76 | Thuy 77 | 2018-03-26 06:08:28------------------- 78 | Thuy 79 | 2018-03-26 06:08:29------------------- 80 | Thuy 81 | 2018-03-26 06:08:29------------------- 82 | Thuy 83 | 2018-03-26 06:08:29------------------- 84 | Thuy 85 | 2018-03-26 06:08:30------------------- 86 | Thuy 87 | 2018-03-26 06:08:30------------------- 88 | Thuy 89 | 2018-03-26 06:08:30------------------- 90 | Thuy 91 | 2018-03-26 06:08:30------------------- 92 | Thuy 93 | 2018-03-26 06:08:30------------------- 94 | Thuy 95 | 2018-03-26 06:08:30------------------- 96 | Thuy 97 | 2018-03-26 06:08:30------------------- 98 | Thuy 99 | 2018-03-26 06:08:30------------------- 100 | Thuy 101 | 2018-03-26 06:08:30------------------- 102 | Thuy 103 | 2018-03-26 06:08:31------------------- 104 | Thuy 105 | 2018-03-26 06:08:31------------------- 106 | Thuy 107 | 2018-03-26 06:08:31------------------- 108 | Thuy 109 | 2018-03-26 06:08:31------------------- 110 | Thuy 111 | 2018-03-26 06:08:31------------------- 112 | Thuy 113 | 2018-03-26 06:08:31------------------- 114 | Thuy 115 | 2018-03-26 06:08:31------------------- 116 | Thuy 117 | 2018-03-26 06:08:31------------------- 118 | Thuy 119 | 2018-03-26 06:08:32------------------- 120 | Thuy 121 | 2018-03-26 06:08:32------------------- 122 | Thuy 123 | 2018-03-26 06:08:32------------------- 124 | Thuy 125 | 2018-03-26 06:08:32------------------- 126 | Thuy 127 | 2018-03-26 06:08:32------------------- 128 | Thuy 129 | 2018-03-26 06:08:34------------------- 130 | Thuy 131 | 2018-03-26 06:08:34------------------- 132 | Thuy 133 | 2018-03-26 06:08:34------------------- 134 | Thuy 135 | 2018-03-26 06:09:05------------------- 136 | Thuy 137 | 2018-03-26 06:09:06------------------- 138 | Thuy 139 | 2018-03-26 06:09:06------------------- 140 | Thuy 141 | 2018-03-26 06:09:06------------------- 142 | Thuy 143 | 2018-03-26 06:09:06------------------- 144 | Thuy 145 | 2018-03-26 06:09:06------------------- 146 | Thuy 147 | 2018-03-26 06:09:06------------------- 148 | Thuy 149 | 2018-03-26 06:09:06------------------- 150 | Thuy 151 | 2018-03-26 06:09:07------------------- 152 | Thuy 153 | 2018-03-26 06:09:07------------------- 154 | Thuy 155 | 2018-03-26 06:09:07------------------- 156 | Thuy 157 | 2018-03-26 06:09:07------------------- 158 | Thuy 159 | 2018-03-26 06:09:07------------------- 160 | Thuy 161 | 2018-03-26 06:09:07------------------- 162 | Thuy 163 | 2018-03-26 06:09:07------------------- 164 | Thuy 165 | 2018-03-26 06:09:08------------------- 166 | Thuy 167 | 2018-03-26 06:09:08------------------- 168 | Thuy 169 | 2018-03-26 06:09:08------------------- 170 | Thuy 171 | 2018-03-26 06:09:08------------------- 172 | Thuy 173 | 2018-03-26 06:09:08------------------- 174 | Thuy 175 | 2018-03-26 06:09:08------------------- 176 | Thuy 177 | 2018-03-26 06:09:08------------------- 178 | Thuy 179 | 2018-03-26 06:09:08------------------- 180 | Thuy 181 | 2018-03-26 06:09:08------------------- 182 | Thuy 183 | 2018-03-26 06:09:09------------------- 184 | Thuy 185 | 2018-03-26 06:09:09------------------- 186 | Thuy 187 | 2018-03-26 06:09:09------------------- 188 | Thuy 189 | 2018-03-26 06:09:09------------------- 190 | Thuy 191 | 2018-03-26 06:09:09------------------- 192 | Thuy 193 | 2018-03-26 06:09:09------------------- 194 | Thuy 195 | 2018-03-26 06:09:09------------------- 196 | Thuy 197 | 2018-03-26 06:09:09------------------- 198 | Thuy 199 | 2018-03-26 06:09:09------------------- 200 | Thuy 201 | 2018-03-26 06:09:10------------------- 202 | Thuy 203 | 2018-03-26 06:09:11------------------- 204 | Thuy 205 | 2018-03-26 06:09:11------------------- 206 | Thuy 207 | 2018-03-26 06:09:11------------------- 208 | Thuy 209 | 2018-03-26 06:09:11------------------- 210 | Thuy 211 | 2018-03-26 06:09:11------------------- 212 | Thuy 213 | 2018-03-26 06:09:11------------------- 214 | Thuy 215 | 2018-03-26 06:09:11------------------- 216 | Thuy 217 | 2018-03-26 06:09:11------------------- 218 | Thuy 219 | 2018-03-26 06:09:11------------------- 220 | Thuy 221 | 2018-03-26 06:09:11------------------- 222 | Thuy 223 | 2018-03-26 06:09:11------------------- 224 | Thuy 225 | 2018-03-26 06:09:12------------------- 226 | Thuy 227 | 2018-03-26 06:09:12------------------- 228 | Thuy 229 | 2018-03-26 06:09:12------------------- 230 | Thuy 231 | 2018-03-26 06:09:12------------------- 232 | Thuy 233 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/main.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------ 2 | # Import 3 | #------------------------------------------------------------------------------ 4 | from sys import argv 5 | from PyQt5.QtWidgets import QApplication 6 | from application import Application 7 | 8 | 9 | #------------------------------------------------------------------------------ 10 | # Main execution 11 | #------------------------------------------------------------------------------ 12 | app = QApplication(argv) 13 | form = Application() 14 | form.show() 15 | app.exec_() 16 | 17 | -------------------------------------------------------------------------------- /3.GUI-integrated-system/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | clear 3 | pyuic5 frontend/design.ui -o frontend/design.py 4 | python main.py 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Parallel-Face-Recognition 2 | A facial recognition system that is parallelized in order to speed up the computational performance. 3 | 4 | #### Keyword: Facial Recognition, Biometrics, Computer Vision, Image Processing, Parallelization, PyQt5 5 | 6 | 7 | Table of contents 8 | ================= 9 | - [I.Introduction](#iintroduction) 10 | - [II.Description](#iidescription) 11 | - [III.Used dependency configuration](#iiiused-dependency-configuration) 12 | - [VI.Implementation](#viimplementation) 13 | - [VII.Results](#viiresults) 14 | - [VIII.Concusion](#viiiconcusion) 15 | 16 | 17 | I.Introduction 18 | ============== 19 | * This is my assignment in the course "Embedded System Programming" at my university. 20 | * In this project, I try to implement a facial recognition into an embedded computer, e.g., Raspberry Pi 3. In which, I did not write the facial recognition algorithm. However, I just implement available functions on the Raspberry. The facial algorithm is derived from this [Github repository](https://github.com/ageitgey/face_recognition). 21 | * **My contributions** are **parallelizing** the available algorithm and making a easily **interactive GUI**. Python 3 is the used language and the implementation is runned in Ubuntu 16.04. 22 | 23 | 24 | II.Description 25 | ============== 26 | * According to the author of the [repository](https://github.com/ageitgey/face_recognition), the algorithm includes three phases, namely Face detection, Face normalization, and Face recognition. You can explore more about how such phases run in [this Medium link](https://medium.com/@ageitgey/machine-learning-is-fun-part-4-modern-face-recognition-with-deep-learning-c3cffc121d78). 27 | * The picture below depicts the CPU utilization when running the algorithm. As can be seen, the algorithm is written for single core configuration, meanwhile, the Raspberry can have 4 CPU threads to process. This lead to a bad utilization. Therefore, I want to improve this shortcoming so that the hardware-limited Raspberry can run the complex algorithm. 28 | 29 |

30 | accessibility text 31 |

32 | 33 | * To deal with this limitation, I propose a system architecture as the following picture. Here, with four CPU threads, each thread is reposible for a specific task. Concretely, when a frame of video comes, the thread 1 receives it, display it into the screen, and send it to the thread 2. Thread 2 is to detect face by pointing out coordinates of vertices of the bounding boxes of faces in the image. Then, thread 3 uses the output of thread 2 to crop image to bounding boxes of faces and encode them as face embeddings. Finally, the last thread takes extracted face embeddings so as to perform a matching with templates saved in the database. 34 | 35 |

36 | accessibility text 37 |

38 | 39 | 40 | III.Used dependency configuration 41 | ================================= 42 | * Ubuntu 16.04 43 | * Python 3.5 44 | * OpenCV 3.3.1 45 | * [face_recognition](https://pypi.org/project/face_recognition/) 46 | * PyQt5 47 | 48 | 49 | VI.Implementation 50 | ================= 51 | * There are three folders, e.g., "1.original-system", "2.parallelized-system", and "3.GUI-integrated-system". In which, they contain original-system code, parallelized-system code, and a GUI-integrated code, respectively. 52 | 53 | * To parallelize the original system in Python 3, I use [Process-based “threading” interface](https://docs.python.org/2/library/multiprocessing.html). 54 | 55 | * Note that the GUI-integrated code in the folder "3.GUI-integrated-system" is just used in PC. I have not developed any version to run GUI on the Raspberry. 56 | 57 | * Below are some pictures of my GUI. 58 | 59 | **Before registering** 60 |

61 | accessibility text 62 |

63 | 64 | **Register successfully** 65 |

66 | accessibility text 67 |

68 | 69 | **Verification** 70 |

71 | accessibility text 72 |

73 | 74 | 75 | VII.Results 76 | ============ 77 | * The table below shows the comparation between two system (parallelized and original). Clearly, the parallelized system has the CPU utilization better than the original one. 78 | 79 |

80 | accessibility text 81 |

82 | 83 | 84 | VIII.Concusion 85 | ============== 86 | * The advantages and disadvantages of my proposal are listed in the following table. 87 | 88 |

89 | accessibility text 90 |

91 | -------------------------------------------------------------------------------- /before-registration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuyngch/Parallel-Face-Recognition/c580b5b1c8bff22a8dd72c6898843328ded9cdff/before-registration.png -------------------------------------------------------------------------------- /compare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuyngch/Parallel-Face-Recognition/c580b5b1c8bff22a8dd72c6898843328ded9cdff/compare.png -------------------------------------------------------------------------------- /multi-core.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuyngch/Parallel-Face-Recognition/c580b5b1c8bff22a8dd72c6898843328ded9cdff/multi-core.png -------------------------------------------------------------------------------- /pros-and-cons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuyngch/Parallel-Face-Recognition/c580b5b1c8bff22a8dd72c6898843328ded9cdff/pros-and-cons.png -------------------------------------------------------------------------------- /register-successfully.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuyngch/Parallel-Face-Recognition/c580b5b1c8bff22a8dd72c6898843328ded9cdff/register-successfully.png -------------------------------------------------------------------------------- /single-core.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuyngch/Parallel-Face-Recognition/c580b5b1c8bff22a8dd72c6898843328ded9cdff/single-core.png -------------------------------------------------------------------------------- /verification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thuyngch/Parallel-Face-Recognition/c580b5b1c8bff22a8dd72c6898843328ded9cdff/verification.png --------------------------------------------------------------------------------