noise = 0.0
parser = argparse.ArgumentParser()
parser.add_argument('-io',
                    '--filename_obj',
                    type=str,
                    default=os.path.join(data_dir, '{}.obj'.format(obj_name)))
parser.add_argument('-or',
                    '--filename_output',
                    type=str,
                    default=os.path.join(data_dir,
                                         'example5_resultR_render_1.gif'))
parser.add_argument('-mr', '--make_reference_image', type=int, default=0)
parser.add_argument('-g', '--gpu', type=int, default=0)
args = parser.parse_args()

model = Myresnet50(filename_obj=args.filename_obj)

model.to(device)

model.train(True)
bool_first = True
lr = 0.001

criterion = nn.BCELoss(
)  #nn.BCELoss()   #nn.CrossEntropyLoss()  define the loss (MSE, Crossentropy, Binarycrossentropy)
#
#  ------------------------------------------------------------------

train_renderV2(model, train_dataloader, test_dataloader, n_epochs, criterion,
               date4File, cubeSetName, batch_size, fileExtension, device,
               obj_name, noise, number_train_im)
parser.add_argument('-io',
                    '--filename_obj',
                    type=str,
                    default=os.path.join(data_dir, '{}.obj'.format(obj_name)))
parser.add_argument('-or',
                    '--filename_output',
                    type=str,
                    default=os.path.join(
                        result_dir,
                        'ResultRender_{}.gif'.format(file_name_extension)))
parser.add_argument('-mr', '--make_reference_image', type=int, default=0)
parser.add_argument('-g', '--gpu', type=int, default=0)
args = parser.parse_args()

model = Myresnet50(filename_obj=args.filename_obj,
                   pretrained=True,
                   cifar=False,
                   modelName=modelName)
model.eval()
model.to(device)

#  ------------------------------------------------------------------

# test the model
print("Start timer")
start_time = time.time()

Step_Val_losses = []
current_step_loss = []
current_step_Test_loss = []
Test_losses = []
Epoch_Val_losses = []
parser = argparse.ArgumentParser()
parser.add_argument('-io', '--filename_obj', type=str, default=os.path.join(data_dir, '{}.obj'.format(obj_name)))
parser.add_argument('-or', '--filename_output', type=str,default=os.path.join(data_dir, 'example5_resultR_render_1.gif'))
parser.add_argument('-mr', '--make_reference_image', type=int, default=0)
parser.add_argument('-g', '--gpu', type=int, default=0)
args = parser.parse_args()

# shall we continue training an existing model or start from scratch?
if useOwnPretrainedModel:
    if ResnetOutput == 't':  # resnet predict only translation parameter
        print('own model used is t')
        model = Myresnet50_t(filename_obj=args.filename_obj, cifar = False, modelName=modelName)

    if ResnetOutput == 'Rt':  # resnet predict rotation and translation
        print('own model used is Rt')
        model = Myresnet50(filename_obj=args.filename_obj, cifar = False, modelName=modelName)
else:
    if ResnetOutput == 't': #resnet predict only translation parameter
        print('train model used is t')
        model = Myresnet50_t(filename_obj=args.filename_obj)

    if ResnetOutput == 'Rt': #resnet predict rotation and translation
        print('train model used is Rt')
        model = Myresnet50(filename_obj=args.filename_obj)



#camera setting and renderer are part of the model, (model.renderer to reach the renderer function)
# model = Myresnet50(filename_obj=args.filename_obj)
# model = Myresnet50(filename_obj=args.filename_obj, cifar = False, modelName='211119_100epochtest2_FinalModel_train_Shaft_444_images3_2batchs_20epochs_Noise0.0_100epochtest2_RenderRegr')
# model = Myresnet50(filename_obj=args.filename_obj, cifar = False, modelName='211119_100epochtest2_FinalModel_train_Shaft_444_images3_2batchs_101epochs_Noise0.0_100epochtest2_RenderRegrSav')
parser = argparse.ArgumentParser()
parser.add_argument('-io',
                    '--filename_obj',
                    type=str,
                    default=os.path.join(data_dir, '{}.obj'.format(obj_name)))
parser.add_argument('-or',
                    '--filename_output',
                    type=str,
                    default=os.path.join(data_dir,
                                         'example5_resultR_render_1.gif'))
parser.add_argument('-mr', '--make_reference_image', type=int, default=0)
parser.add_argument('-g', '--gpu', type=int, default=0)
args = parser.parse_args()

#camera setting and renderer are part of the model, (model.renderer to reach the renderer function)
model = Myresnet50(filename_obj=args.filename_obj)
# model = Myresnet50(filename_obj=args.filename_obj, cifar = False, modelName='FinalModel_train_15111render_121epochs_testlossdivision')
# model = Myresnet50(filename_obj=args.filename_obj, cifar = False, modelName='211119_100epochtest2_FinalModel_train_Shaft_444_images3_2batchs_101epochs_Noise0.0_100epochtest2_RenderRegrSav')
model = Myresnet50(
    filename_obj=args.filename_obj,
    cifar=False,
    modelName=
    '151119_test_FinalModel_train_Shaft_444_images3_2batchs_100epochs_Noise0.0_test_RenderRegrSave'
)  #good reg result
# model = Myresnet50(filename_obj=args.filename_obj, cifar = False, modelName='FinalModel_train_15111regression_100epochs_test')
# 151119_test_FinalModel_train_Shaft_444_images3_2batchs_100epochs_Noise0.0_test_RenderRegrSave
# 211119_100epochtest2_FinalModel_train_Shaft_444_images3_2batchs_20epochs_Noise0.0_100epochtest2_RenderRegr

# 211119_100epochtest2_FinalModel_train_Shaft_444_images3_2batchs_101epochs_Noise0.0_100epochtest2_RenderRegrSav
model.to(device)