├── .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 |
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 |
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 |
62 |
63 |
64 | **Register successfully**
65 |
66 |
67 |
68 |
69 | **Verification**
70 |
71 |
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 |
81 |
82 |
83 |
84 | VIII.Concusion
85 | ==============
86 | * The advantages and disadvantages of my proposal are listed in the following table.
87 |
88 |
89 |
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
--------------------------------------------------------------------------------