if not os.path.exists(os.path.join('save', model_name, adv+'-'+str(eps)+'-'+str(int(n))+'-'+str(eps_iter))): os.makedirs(os.path.join('save', model_name, adv+'-'+str(eps)+'-'+str(int(n))+'-'+str(eps_iter))) with open(os.path.join('dataset', 'random1024', 'whole_data_and_whole_label.pkl'), 'rb') as fid: whole_data, whole_label = pkl.load(fid) if model_name == 'PointNet': from pointnet.model import PointNetCls model = PointNetCls(k=40, feature_transform=True, predict_logit=True) checkpoint = 'pointnet/cls_model_201.pth' else: print('No such model architecture') assert False model = model.to(device) model.load_state_dict(torch.load(checkpoint)) model.eval() pytorch_utils.requires_grad_(model, False) print("Model name\t%s" % model_name) cnt = 0 # adv pointcloud successfully attacked CNT = 0 # clean pointcloud correctly classified for idx in tqdm(range(len(whole_data))): x = whole_data[idx] label = whole_label[idx] with torch.no_grad():
num_workers=int(opt.workers)) print(len(dataset), len(test_dataset)) num_classes = len(dataset.classes) print('classes', num_classes) try: os.makedirs(opt.outf) except OSError: pass classifier = PointNetCls(k=num_classes, feature_transform=opt.feature_transform) if opt.gpu != -1: classifier = torch.nn.DataParallel(classifier).to(device) else: classifier.to(device) if opt.model != '': classifier.load_state_dict(torch.load(opt.model)) optimizer = optim.Adam(classifier.parameters(), lr=0.001, betas=(0.9, 0.999)) scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=20, gamma=0.5) num_batch = len(dataset) / opt.batchSize for epoch in range(opt.nepoch): scheduler.step() for i, data in enumerate(dataloader, 0): points, target = data