示例#1
0
def init(model_path, device_id=0):
    '''
    初始化网络
    :return:
    '''
    print('start initialize network ...')
    if torch.cuda.is_available():
        torch.set_default_tensor_type('torch.cuda.FloatTensor')
        torch.cuda.set_device(device_id)
    else:
        torch.set_default_tensor_type('torch.FloatTensor')
    net = build_ssd('test', 300, 21)
    net.load_weights(model_path)
    print(net)
    return net
示例#2
0
    def _init(self):
        '''
        网络初始化
        :param opt:
        :return:
        '''
        if torch.cuda.is_available():
            torch.set_default_tensor_type(
                'torch.cuda.FloatTensor'
            )  # f**k, this line let me debug a half day
            torch.cuda.set_device(self.opt.gpu_id)
        else:
            torch.set_default_tensor_type('torch.FloatTensor')

        if 'only_reid' not in self.opt or not self.opt.only_reid:
            print('start initialize ssd network ...')
            net = build_ssd('test', 300, 21)
            net.load_weights(self.opt.ssd_model)
            print(net)
            self.ssd_model = net

        print('start initialize reid network ...')
        if self.opt.use_dense:
            model_structure = ft_net_dense(751)
        else:
            model_structure = ft_net(751)
        if self.opt.PCB:
            model_structure = PCB(751)
        model = self.load_network(model_structure, self.opt.reid_model)

        if not self.opt.PCB:
            model.model.fc = nn.Sequential()
            model.classifier = nn.Sequential()
        else:
            model = PCB_test(model)
        model = model.eval()
        if torch.cuda.is_available():
            model = model.cuda()
        print(model)
        self.reid_model = model
示例#3
0
 def __init__(self):
     self._net = ssd.build_ssd('test', 300, 21)
     self._net.load_weights(namespace.FILEPATH_SSD_WEIGHT)
     return
示例#4
0
        state = {'img_num': num_images, 'all_boxes': all_boxes}
        with open(det_file, 'wb') as fp:
            torch.save(state, fp)

    print('Evaluating detections')
    evaluate_detections(all_boxes, output_dir, dataset)


def evaluate_detections(box_list, output_dir, dataset):
    # write_voc_results_file(box_list, dataset)
    do_python_eval(box_list, dataset, output_dir)


if __name__ == '__main__':
    # load net
    net = build_ssd('test', 300, num_classes)  # initialize SSD
    net.load_state_dict(torch.load(args.trained_model))
    net.eval()
    print('Finished loading model!')
    # load data
    # dataset = VOCDetection(VOCroot, set_type, None, AnnotationTransform())
    print('Loading test data...')
    testset = VisualGenomeLoader(args.data,
                                 transform=None,
                                 additional_transform=transforms.Compose([
                                     ResizeTransform((300, 300)),
                                     transforms.ToTensor(),
                                     transforms.Normalize(
                                         mean=[0.485, 0.456, 0.406],
                                         std=[0.229, 0.224, 0.225])
                                 ]),
rgb_means = (104, 117, 123)  # only support voc now
num_classes = 21
batch_size = args.batch_size
accum_batch_size = 32
iter_size = accum_batch_size / batch_size
max_iter = 120000
weight_decay = 0.0005
stepvalues = (80000, 100000, 120000)
gamma = 0.1
momentum = 0.9

if args.visdom:
    import visdom
    viz = visdom.Visdom()

net = build_ssd('train', 300, 21)
vgg_weights = torch.load(args.save_folder + args.basenet)
print('Loading base network...')
net.vgg.load_state_dict(vgg_weights)

if args.cuda:
    net.cuda()
    cudnn.benchmark = True


def xavier(param):
    init.xavier_uniform(param)


def weights_init(m):
    if isinstance(m, nn.Conv2d):
示例#6
0
import numpy as np
import torch

from ssd.data import VOC_CLASSES as voc_labels
from ssd.ssd import build_ssd
from ssd_utils import draw_detections
from ssd_utils import postprocess_detections
from ssd_utils import ssd_preprocess


if __name__ == '__main__':

    if torch.cuda.is_available():
        torch.set_default_tensor_type('torch.cuda.FloatTensor')

    net = build_ssd('test', size=300, num_classes=21)  # initialize SSD
    net.load_weights('/media/minotauro/DATA/ai4automotive/ssd300_mAP_77.43_v2.pth')
    if torch.cuda.is_available():
        net = net.cuda()

    net.eval()

    frames_dir = Path('/media/minotauro/DATA/ai4automotive/frames')
    for i, f_path in enumerate(sorted(frames_dir.glob('*.jpg'))):

        # f_path = '/media/minotauro/DATA/ai4automotive/frames/001810.jpg'
        image = cv2.imread(str(f_path))
        image = cv2.resize(image, dsize=None, fx=0.5, fy=0.5)

        x = ssd_preprocess(image, resize_dim=300)
示例#7
0
                                additional_transform=transforms.Compose([
                                    ResizeTransform((300, 300)),
                                    transforms.ToTensor(),
                                    transforms.Normalize(
                                        mean=[0.485, 0.456, 0.406],
                                        std=[0.229, 0.224, 0.225])
                                ]),
                                target_transform=AnnotationTransform(),
                                train=False,
                                top=args.num_classes,
                                group=group)

if not osp.exists(args.save_folder):
    os.makedirs(args.save_folder)

net = build_ssd('train', ssd_dim, num_classes)

print('Loading base network...')

# vgg_weights = torch.load(osp.join(args.save_folder, args.basenet))
# # print('Loading base network...')
# net.vgg.load_state_dict(vgg_weights)

#     net.cuda()
#     cudnn.benchmark = True

vgg = models.vgg16(pretrained=True).state_dict()

state_dict = net.state_dict()
for layer in vgg:
    if layer.startswith('features'):