54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
import os
|
|
import torch
|
|
from torch.autograd import Variable as V
|
|
from torch import nn
|
|
from torchvision import transforms as T
|
|
from Normalize import Normalize, TfNormalize
|
|
from torch.utils.data import DataLoader
|
|
from torch_nets import (
|
|
tf_inception_v3,
|
|
tf_resnet_v2_50,
|
|
tf_resnet_v2_101,
|
|
)
|
|
from dataset import CNNDataset
|
|
batch_size = 10
|
|
adv_dir = './advimages/model_pit_b_224-method'
|
|
os.environ["CUDA_VISIBLE_DEVICES"] = '5'
|
|
|
|
def get_model(net_name, model_dir):
|
|
model_path = os.path.join(model_dir, net_name + '.npy')
|
|
if net_name == 'tf2torch_inception_v3':
|
|
net = tf_inception_v3
|
|
elif net_name == 'tf2torch_resnet_v2_50':
|
|
net = tf_resnet_v2_50
|
|
elif net_name == 'tf2torch_resnet_v2_101':
|
|
net = tf_resnet_v2_101
|
|
else:
|
|
print('Wrong model name!')
|
|
model = nn.Sequential(
|
|
TfNormalize('tensorflow'),
|
|
net.KitModel(model_path).eval().cuda(),)
|
|
return model
|
|
|
|
def verify(model_name, path):
|
|
model = get_model(model_name, path)
|
|
dataset = CNNDataset("inc-v3", adv_dir)
|
|
data_loader = DataLoader(dataset, batch_size=batch_size, shuffle=False, num_workers=0)
|
|
sum = 0
|
|
for batch_idx, batch_data in enumerate(data_loader):
|
|
batch_x = batch_data[0].cuda()
|
|
batch_y = batch_data[1].cuda()
|
|
batch_name = batch_data[2]
|
|
with torch.no_grad():
|
|
sum += (model(batch_x)[0].argmax(1) != batch_y+1).detach().sum().cpu()
|
|
print(model_name + ' acu = {:.2%}'.format(sum / 1000.0))
|
|
|
|
def main():
|
|
model_names = ['tf2torch_inception_v3','tf2torch_resnet_v2_50','tf2torch_resnet_v2_101']
|
|
models_path = './models/'
|
|
for model_name in model_names:
|
|
verify(model_name, models_path)
|
|
print("===================================================")
|
|
|
|
if __name__ == '__main__':
|
|
main() |