pull/17783/head
parent
524a2fffe9
commit
27f1ab5a70
1 changed files with 99 additions and 0 deletions
@ -0,0 +1,99 @@ |
|||||||
|
#!/usr/bin/env python3 |
||||||
|
|
||||||
|
import sys |
||||||
|
import subprocess |
||||||
|
import re |
||||||
|
from enum import Enum |
||||||
|
|
||||||
|
## Helper functions ################################################## |
||||||
|
## |
||||||
|
def fmt_bool(x): |
||||||
|
return ("true" if x else "false") |
||||||
|
|
||||||
|
def fmt_bin(base, prec, model): |
||||||
|
return "%s/%s/%s/%s.xml" % (base, model, prec, model) |
||||||
|
|
||||||
|
## The script itself ################################################# |
||||||
|
## |
||||||
|
if len(sys.argv) != 3: |
||||||
|
print("Usage: %s /path/to/input/video /path/to/models" % sys.argv[0]) |
||||||
|
exit(1) |
||||||
|
|
||||||
|
input_file_path = sys.argv[1] |
||||||
|
intel_models_path = sys.argv[2] |
||||||
|
|
||||||
|
app = "bin/example_gapi_privacy_masking_camera" |
||||||
|
intel_fd_model = "face-detection-retail-0005" |
||||||
|
intel_lpd_model = "vehicle-license-plate-detection-barrier-0106" |
||||||
|
output_file = "out_results.csv" |
||||||
|
|
||||||
|
tgts = [ ("CPU", "INT8") |
||||||
|
, ("CPU", "FP32") |
||||||
|
, ("GPU", "FP16") |
||||||
|
] |
||||||
|
|
||||||
|
class Policy(Enum): |
||||||
|
Traditional = 1 |
||||||
|
Streaming = 2 |
||||||
|
|
||||||
|
# From mode to cmd arg |
||||||
|
mods = [ (Policy.Traditional, True) |
||||||
|
, (Policy.Streaming, False) |
||||||
|
] |
||||||
|
|
||||||
|
class UI(Enum): |
||||||
|
With = 1 |
||||||
|
Without = 2 |
||||||
|
|
||||||
|
# From mode to cmd arg |
||||||
|
ui = [ (UI.With, False) |
||||||
|
, (UI.Without, True) |
||||||
|
] |
||||||
|
|
||||||
|
fd_fmt_bin = lambda prec : fmt_bin(intel_models_path, prec, intel_fd_model) |
||||||
|
lpd_fmt_bin = lambda prec : fmt_bin(intel_models_path, prec, intel_lpd_model) |
||||||
|
|
||||||
|
# Performance comparison table |
||||||
|
table={} |
||||||
|
|
||||||
|
# Collect the performance data |
||||||
|
for m in mods: # Execution mode (trad/stream) |
||||||
|
for u in ui: # UI mode (on/off) |
||||||
|
for f in tgts: # FD model |
||||||
|
for p in tgts: # LPD model |
||||||
|
cmd = [ app |
||||||
|
, ("--input=%s" % input_file_path) # input file |
||||||
|
, ("--faced=%s" % f[0]) # FD device target |
||||||
|
, ("--facem=%s" % fd_fmt_bin(f[1])) # FD model @ precision |
||||||
|
, ("--platd=%s" % p[0]) # LPD device target |
||||||
|
, ("--platm=%s" % lpd_fmt_bin(p[1])) # LPD model @ precision |
||||||
|
, ("--trad=%s" % fmt_bool(m[1])) # Execution policy |
||||||
|
, ("--noshow=%s" % fmt_bool(u[1])) # UI mode (show/no show) |
||||||
|
] |
||||||
|
out = str(subprocess.check_output(cmd)) |
||||||
|
match = re.search('Processed [0-9]+ frames \(([0-9]+\.[0-9]+) FPS\)', out) |
||||||
|
fps = float(match.group(1)) |
||||||
|
print(cmd, fps, "FPS") |
||||||
|
table[m[0],u[0],f,p] = fps |
||||||
|
|
||||||
|
# Write the performance summary |
||||||
|
# Columns: all other components (mode, ui) |
||||||
|
with open(output_file, 'w') as csv: |
||||||
|
# CSV header |
||||||
|
csv.write("FD,LPD,Serial(UI),Serial(no-UI),Streaming(UI),Streaming(no-UI),Effect(UI),Effect(no-UI)\n") |
||||||
|
|
||||||
|
for f in tgts: # FD model |
||||||
|
for p in tgts: # LPD model |
||||||
|
row = "%s/%s,%s/%s" % (f[0], f[1], p[0], p[1]) # FD precision, LPD precision |
||||||
|
row += ",%f" % table[Policy.Traditional,UI.With, f,p] # Serial/UI |
||||||
|
row += ",%f" % table[Policy.Traditional,UI.Without,f,p] # Serial/no UI |
||||||
|
row += ",%f" % table[Policy.Streaming, UI.With, f,p] # Streaming/UI |
||||||
|
row += ",%f" % table[Policy.Streaming, UI.Without,f,p] # Streaming/no UI |
||||||
|
|
||||||
|
effect_ui = table[Policy.Streaming,UI.With, f,p] / table[Policy.Traditional,UI.With, f,p] |
||||||
|
effect_noui = table[Policy.Streaming,UI.Without,f,p] / table[Policy.Traditional,UI.Without,f,p] |
||||||
|
row += ",%f,%f" % (effect_ui,effect_noui) |
||||||
|
row += "\n" |
||||||
|
csv.write(row) |
||||||
|
|
||||||
|
print("DONE: ", output_file) |
Loading…
Reference in new issue