Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
ParallelPrimeSearch
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Hailu, Dawit
ParallelPrimeSearch
Commits
7e6929a9
Commit
7e6929a9
authored
Mar 8, 2022
by
Hailu, Dawit
Browse files
Options
Downloads
Patches
Plain Diff
comparing mediapipe with retinaface
parent
fc2f2aac
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
comparerfmp
+215
-0
215 additions, 0 deletions
comparerfmp
with
215 additions
and
0 deletions
comparerfmp
0 → 100644
+
215
−
0
View file @
7e6929a9
from deepface import DeepFace
from deepface.commons import functions, realtime, distance as dst
import matplotlib.pyplot as plt
import cv2
import glob
import numpy as np
import os
import tensorflow as tf
import mediapipe as mp
from retinaface import RetinaFace
import xlsxwriter
import time
#for deepface
backends = ['opencv', 'ssd', 'Dlib', 'mtcnn', 'retinaface', 'mediapipe']
backend = backends[3]
#for mediapipe
mp_face_detection = mp.solutions.face_detection
mp_drawing = mp.solutions.drawing_utils
mp_face_mesh = mp.solutions.face_mesh
mp_drawing_styles = mp.solutions.drawing_styles
fd = mp_face_detection.FaceDetection(min_detection_confidence=0.4, model_selection=1)
fm = mp_face_mesh.FaceMesh(
static_image_mode=True,
max_num_faces=3,
refine_landmarks=True,
min_detection_confidence=0.5)
#*******smaller sample
# file = "/home/beyondem/Documents/comparing_models/*.jpg"
# file = '/home/beyondem/Documents/comparing_models/retinadetected3/*.jpg'
#*******bigger file
file = "/home/beyondem/Documents/comparing_models/images/WIDER_train/**/*.png"
pr_file = open("log.txt", "w")
#****for retina
# path1 = '/home/beyondem/Documents/comparing_models/retinadetected3'
# path2 = '/home/beyondem/Documents/comparing_models/retinadetected3/data'
#****for mp
path1 = '/home/beyondem/Documents/comparing_models/withmp'
path11 = '/home/beyondem/Documents/comparing_models/withmp/mp'
path12 = '/home/beyondem/Documents/comparing_models/withmp/rf'
path13 = '/home/beyondem/Documents/comparing_models/withmp/fm'
path2 = '/home/beyondem/Documents/comparing_models/withmp/data'
#get images
images = glob.glob(file, recursive=True)
print(len(images))
#************ Create an new Excel file and add a worksheet.
#>>>>>>>> all.xlsx is for all models compared together
workbook = xlsxwriter.Workbook(os.path.join(path2,'all.xlsx'))
worksheet = workbook.add_worksheet()
# Widen the first column to make the text clearer.
worksheet.set_column('A:A', 60)
worksheet.set_column('B:B', 20)
worksheet.set_column('C:C', 20)
worksheet.set_column('D:D', 10)
worksheet.set_column('E:E', 10)
worksheet.set_column('F:F', 10)
worksheet.set_column('G:G', 10)
# Add a bold format to use to highlight cells.
bold = workbook.add_format({'bold': True})
worksheet.write(0,0, "file name")
worksheet.write(0,1, "#boxes_retina")
worksheet.write(0,2, "#boxes_mp")
worksheet.write(0,3, "#time_retina")
worksheet.write(0,4, "#time_mp")
worksheet.write(0,5, "rf_average score")
worksheet.write(0,6, "mp_average score")
i = 1
# For static images:
IMAGE_FILES = []
drawing_spec = mp_drawing.DrawingSpec(thickness=1, circle_radius=1)
with fm as face_mesh:
with fd as face_detection:
for f in images:
print(f, file=pr_file)
image = cv2.imread(f)
#for mediapipe
start_mp = time.time()
imagergb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
imagergb2 = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
obj_mp = face_detection.process(imagergb)
results = face_mesh.process(imagergb2)
# obj_mp = face_detection.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
# results = face_mesh.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
# print(obj_mp)
end_mp = time.time()
#for retinaface
start_r = time.time()
obj_ret = RetinaFace.detect_faces(f)
end_r = time.time()
# Write number of faces, with row/column notation.
worksheet.write(i, 0, os.path.join(os.path.basename(os.path.dirname(f)), os.path.basename(f)))
worksheet.write(i, 1, len(obj_ret))
# if type(obj_mp) is dict:
# if obj_mp.detections is not None:
# worksheet.write(i, 2, len(obj_mp.detections)*len(obj_mp.detections))
# else:
# worksheet.write(i, 2, 0)
#****************************************************************
rf_average_score = 0.0
#for drawing boxes using retinaface
if type(obj_ret) is dict:
for key in obj_ret.keys():
# print((obj_ret[key])['score'])
rf_average_score += (obj_ret[key])['score']
# print(key, file = pr_file)
identity = obj_ret[key]
facial_area = identity["facial_area"]
# worksheet.write(i, 2, facial_area[0])
# worksheet.write(i, 3, facial_area[1])
# worksheet.write(i, 4, facial_area[2])
# worksheet.write(i, 5, facial_area[3])
cv2.rectangle(image, (facial_area[2],facial_area[3]),(facial_area[0],facial_area[1]),(0,2,255),5)
rf_average_score = rf_average_score/ len(obj_ret)
# print(rf_average_score)
cv2.imwrite( os.path.join(path12 ,os.path.basename(f)), image)
cv2.waitKey(0)
#***********************************************************
#face mesh
annotated_image = imagergb2.copy()
if results.multi_face_landmarks is not None:
for face_landmarks in results.multi_face_landmarks:
print('face_landmarks:', face_landmarks,file=pr_file)
mp_drawing.draw_landmarks(
image=annotated_image,
landmark_list=face_landmarks,
connections=mp_face_mesh.FACEMESH_TESSELATION,
landmark_drawing_spec=None,
connection_drawing_spec=mp_drawing_styles
.get_default_face_mesh_tesselation_style())
mp_drawing.draw_landmarks(
image=annotated_image,
landmark_list=face_landmarks,
connections=mp_face_mesh.FACEMESH_CONTOURS,
landmark_drawing_spec=None,
connection_drawing_spec=mp_drawing_styles
.get_default_face_mesh_contours_style())
mp_drawing.draw_landmarks(
image=annotated_image,
landmark_list=face_landmarks,
connections=mp_face_mesh.FACEMESH_IRISES,
landmark_drawing_spec=None,
connection_drawing_spec=mp_drawing_styles
.get_default_face_mesh_iris_connections_style())
annotated_image = cv2.cvtColor(annotated_image, cv2.COLOR_RGB2BGR)
cv2.imwrite( os.path.join(path13 ,os.path.basename(f)), annotated_image)
#***********************************************************************************
#for displaying the images with the box
# Draw face detections of each face.
if not obj_mp.detections:
continue
image.flags.writeable = True
# image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
counter = 0
mp_average_score = 0.0
# print(obj_mp.detections, file=pr_file)
if obj_mp.detections is not None:
# print((enumerate(obj_mp.detections)))
for counter, detection in enumerate(obj_mp.detections):
score = detection.score
box = detection.location_data.relative_bounding_box
# print(score,file=pr_file)
# print(box,file=pr_file)
counter += 1
mp_average_score = mp_average_score + score[0]
mp_drawing.draw_detection(imagergb, detection)
mp_average_score = mp_average_score/counter
print(counter, mp_average_score, file=pr_file)
imagergb= cv2.cvtColor(imagergb, cv2.COLOR_RGB2BGR)
cv2.imwrite( os.path.join(path11 ,os.path.basename(f)), imagergb)
cv2.waitKey(0)
# #**************************************************************
# print(counter)
worksheet.write(i, 2, counter)
worksheet.write(i, 3, end_r-start_r)
worksheet.write(i, 4, end_mp-start_mp)
worksheet.write(i, 5, rf_average_score)
worksheet.write(i, 6, mp_average_score)
i = i+1
workbook.close()
pr_file.close()
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment