mirror of https://github.com/alibaba/MNN.git
185 lines
6.0 KiB
Python
Executable File
185 lines
6.0 KiB
Python
Executable File
#!/usr/bin/python
|
|
#-- coding:utf8 --
|
|
import sys
|
|
import os
|
|
|
|
model_root_dir = sys.argv[1]
|
|
|
|
forwardType = " 0 "
|
|
if len(sys.argv) > 2:
|
|
forwardType = ' ' + sys.argv[2] + ' '
|
|
thredhold = ' 0.001 '
|
|
if len(sys.argv) > 3:
|
|
thredhold = ' ' + sys.argv[3] + ' '
|
|
precision = ' 1 '
|
|
if len(sys.argv) > 4:
|
|
precision = ' ' + sys.argv[4] + ' '
|
|
|
|
runStatic = False
|
|
if len(sys.argv) > 5:
|
|
runStatic = True
|
|
|
|
input_dims = ''
|
|
if len(sys.argv) > 6:
|
|
input_dims = ' ' + sys.argv[6] + ' '
|
|
parameters = forwardType + thredhold + precision + input_dims
|
|
print("all parameters: ", parameters)
|
|
|
|
gWrong = []
|
|
|
|
convert = ('MNNConvert.exe' if os.name == 'nt' else './MNNConvert') + ' -f MNN --bizCode MNN --saveStaticModel --modelFile '
|
|
tmpModel = '__tmpModel__.mnn'
|
|
dynamic_size = 0
|
|
static_size = 0
|
|
total_num = 0
|
|
# total model test
|
|
command = 'testModel.out.exe' if os.name == 'nt' else './testModel.out'
|
|
root_dir = os.path.join(model_root_dir, 'TestResource')
|
|
print('root: ' + root_dir + '\n')
|
|
|
|
message = ""
|
|
def run_cmd(args):
|
|
cmd = args[0]
|
|
for i in range(1, len(args)):
|
|
cmd += ' ' + args[i]
|
|
print(cmd)
|
|
stdout = os.popen(cmd).read()
|
|
global total_num
|
|
total_num += 1
|
|
return stdout
|
|
|
|
for name in os.listdir(root_dir):
|
|
if name == '.DS_Store':
|
|
continue
|
|
modelName = os.path.join(root_dir, name, 'temp.bin')
|
|
inputName = os.path.join(root_dir, name, 'input_0.txt')
|
|
outputName = os.path.join(root_dir, name, 'output.txt')
|
|
print(modelName)
|
|
|
|
if runStatic:
|
|
cmd = convert + modelName + ' ' + ' --MNNModel ' + tmpModel
|
|
print(cmd)
|
|
message = os.popen(cmd).read()
|
|
if (message.find('Converted Success') == -1):
|
|
gWrong.append(modelName)
|
|
continue
|
|
print(message)
|
|
dynamic_size += os.path.getsize(modelName)/1024.0
|
|
static_size += os.path.getsize(tmpModel)/1024.0
|
|
message = run_cmd([command, tmpModel, inputName, outputName, parameters])
|
|
else:
|
|
message = run_cmd([command, modelName, inputName, outputName, parameters])
|
|
if (message.find('Correct') == -1):
|
|
gWrong.append(modelName)
|
|
print(message)
|
|
|
|
# model test for op
|
|
command = 'testModel.out.exe' if os.name == 'nt' else './testModel.out'
|
|
root_dir = os.path.join(model_root_dir, 'OpTestResource')
|
|
print('Model Root Path For OpTest: ' + root_dir + '\n')
|
|
|
|
for name in os.listdir(root_dir):
|
|
if name == '.DS_Store':
|
|
continue
|
|
modelName = os.path.join(root_dir, name, 'temp.bin')
|
|
inputName = os.path.join(root_dir, name, 'input_0.txt')
|
|
outputName = os.path.join(root_dir, name, 'output_0.txt')
|
|
print(modelName)
|
|
|
|
if runStatic:
|
|
cmd = convert + modelName + ' ' + ' --MNNModel ' + tmpModel
|
|
print(cmd)
|
|
message = os.popen(cmd).read()
|
|
if (message.find('Converted Success') == -1):
|
|
gWrong.append(modelName)
|
|
continue
|
|
print(message)
|
|
dynamic_size += os.path.getsize(modelName)/1024.0
|
|
static_size += os.path.getsize(tmpModel)/1024.0
|
|
message = run_cmd([command, tmpModel, inputName, outputName, parameters])
|
|
print(message)
|
|
else:
|
|
message = run_cmd([command, modelName, inputName, outputName, parameters])
|
|
print(message)
|
|
if (message.find('Correct') == -1):
|
|
gWrong.append(modelName)
|
|
|
|
# total model test
|
|
command = 'testModelWithDescribe.out.exe' if os.name == 'nt' else './testModelWithDescribe.out'
|
|
root_dir = os.path.join(model_root_dir, 'TestWithDescribe')
|
|
print('Model Root Path: ' + root_dir + '\n')
|
|
|
|
for name in os.listdir(root_dir):
|
|
if name == '.DS_Store':
|
|
continue
|
|
modelName = os.path.join(root_dir, name, 'temp.bin')
|
|
if not os.path.exists(modelName):
|
|
continue
|
|
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Running...")
|
|
print(modelName)
|
|
config = os.path.join(root_dir, name, 'config.txt')
|
|
|
|
if runStatic:
|
|
cmd = convert + modelName + ' ' + ' --MNNModel ' + tmpModel + ' --inputConfigFile ' + config
|
|
print(cmd)
|
|
message = os.popen(cmd).read()
|
|
if (message.find('Converted Success') == -1):
|
|
gWrong.append(modelName)
|
|
continue
|
|
print(message)
|
|
dynamic_size += os.path.getsize(modelName)/1024.0
|
|
static_size += os.path.getsize(tmpModel)/1024.0
|
|
message = run_cmd([command, tmpModel, config, parameters])
|
|
else:
|
|
message = run_cmd([command, modelName, config, parameters])
|
|
if (message.find('Correct') == -1):
|
|
gWrong.append(modelName)
|
|
print(message)
|
|
|
|
# model test for train
|
|
command = 'testTrain.out.exe' if os.name == 'nt' else './testTrain.out'
|
|
root_dir = os.path.join(model_root_dir, 'TestTrain')
|
|
print('Model Root Path For Train: ' + root_dir + '\n')
|
|
|
|
for name in os.listdir(root_dir):
|
|
print(name)
|
|
if name == '.DS_Store':
|
|
continue
|
|
jsonName = os.path.join(root_dir, name, 'train.json')
|
|
message = run_cmd([command, jsonName, os.path.join(root_dir, name)])
|
|
if (message.find('Correct') == -1):
|
|
gWrong.append("Train:" + name)
|
|
print(message)
|
|
|
|
# model test for module
|
|
command = 'testModel_expr.out.exe' if os.name == 'nt' else './testModel_expr.out'
|
|
root_dir = os.path.join(model_root_dir, 'TestModule')
|
|
print('Model Root Path For Train: ' + root_dir + '\n')
|
|
|
|
for name in os.listdir(root_dir):
|
|
print(name)
|
|
if name == '.DS_Store':
|
|
continue
|
|
moduleName = os.path.join(root_dir, name, 'model.mnn')
|
|
inputName = os.path.join(root_dir, name, 'input.mnn')
|
|
outputName = os.path.join(root_dir, name, 'output.mnn')
|
|
message = run_cmd([command, moduleName, inputName, outputName])
|
|
if (message.find('Correct') == -1):
|
|
gWrong.append("Module:" + name)
|
|
print(message)
|
|
|
|
print('Wrong: ', len(gWrong))
|
|
for w in gWrong:
|
|
print(w)
|
|
|
|
flag = ''
|
|
if runStatic:
|
|
flag = 'STATIC'
|
|
print('TEST_NAME_MODEL%s: 模型测试%s\nTEST_CASE_AMOUNT_MODEL%s: {\"blocked\":0,\"failed\":%d,\"passed\":%d,\"skipped\":0}\n'%(flag, flag, flag, len(gWrong), total_num - len(gWrong)))
|
|
if len(gWrong) > 0:
|
|
exit(1)
|
|
|
|
if runStatic:
|
|
print('Total Dynamic Model Size: ', dynamic_size/1024.0, 'M')
|
|
print('Total Static Model Size: ', static_size/1024.0, 'M')
|