MoCov2代码的改进部分
多GPU改单GPU
builder部分的forward()
注释掉的部分
dequeue and equeue部分
main_moco部分
注释此raise
是否分布,改为False
自定义的取样Sampler
main_moco.py
main_worker部分:
生成sampler和dataloader
传参数到train()
此处取得的img需要再[0]
关于sampler.py内容
再对图片取样时,随意取该帧,并取该帧的后一帧,替换[1],并按原格式返回
import random
import torch.utils.data
from collections import OrderedDict
import torch
import copy
def no_processing(data):
return data
class TrackingSampler(torch.utils.data.Dataset):
def __init__(self, datasets, processing=no_processing):
self.datasets = datasets
# If p not provided, sample uniformly from all videos
self.processing = processing
def __len__(self):
return 7872
def __getitem__(self, index):
# Select a dataset
dataset = self.datasets
# seq_id and frames
seq_frame=random.randint(0,7873)
q=dataset[seq_frame]
k=dataset[seq_frame+3]
q[0][1]=k[0][1]
return q
class MOCOSampler(TrackingSampler):
""" See TrackingSampler."""
def __init__(self, datasets,processing=no_processing):
super().__init__(datasets=datasets, processing=processing)
加了focal_loss
# define loss function (criterion) and optimizer
criterion_focal = FocalLoss().cuda(args.gpu)
criterion = nn.CrossEntropyLoss().cuda(args.gpu)