Git Product home page Git Product logo

sst's Introduction

News: I've released my new work on MOT. This tracker is named as Deep Motion Modeling Network (DMMN) which can simultaneously perform detection, feature modeling, association, and even prediction. Besides, this work is based on the framework of SSD, which can be extended to the framework of Faster RCNN, YOLO v3/4.

DAN (Deep Affinity Network)

Table Of Content

Purpose

DAN is an end-to-end deep learning network during train phase, whose purpose is to extract the predetected objects' feature and performs pairing permutations of those features in any two frames to infer object affinities. Besides, DAN also accounts for multiple objects appearing and disappearing between video frames.

Note: The repository was built with the name "SST". For the brevity and easy understanding, we change the repository name by "DAN".

Deep Affinity Network (DAN)

The network can be divided into two parts: feature extractor and affinity extractor. The feature extractor extracts each detected objects' features. The affinity extractor leverage those features to compute object data association matrix.

Deep tracking with DAN deployment. The DAN extracts the feature of each detected object provided by the Detector, and also estimate the affinity matrices.

The input & output of network

Training phase

Name Items
Input - Two video frames (with any interval frame)
- Center of the pre-detected boxes
- Binary data association matrix
Output - Loss

Testing phase

Name Items
Input - Two video frames (with any interval frame)
- Center of the pre-detected boxes
Output - Features of pre-detected boxes
- Predicted matrices used to compute object affinities

Task

Current Task

Title Start Due Detail Status
Update the result of DPM 2018/10/31 - Update the result of DPM of MOT17 Continuing

History Task

Title Start Due Detail Status
Update ReadMe 2018/10/28 2018/10/31 Update the README according paper Finish
Evaluate MOT15 2018/09/15 2018/10/20 Evaluate on MOT15 Finish
Re-evaluate MOT17 2018/08/10 2018/09/01 Re-evaluate on MOT17 Finish
Fix Result of UA-DETRAC 2018/08/01 2018/09/13 Fix the result of UA-DETRAC Finish
Start UA-DETRAC 2018/04/23 2018/09/13 Evaluate on UA-DETRAC Finish
KITTI 2018/04/11 2018/04/23 Training, Optimize Give up:(
Re-Train KITTI 2018/04/18 2018/04/20 with gap frame 5 Finish
Continue Train KITTI 2018/04/16 2018/04/18 Continue training KITTI Finish
Training KITTI dataset 2018/04/11 2018/04/16 Training KITTI dataset Finish
Evaluate On MOT17 2018/02 2018/03/28 Top 1 at MOT17 :) Finish
Design Framework 2017/11/15 2018/01/14 The tracking framework Finish
Select Dataset 2017/11/10 2017/11/15 MOT17, KITTI, UA-DETRAC Finish
Designing network 2017/10/15 2017/11/15 Designing the network for training Finish
Start the project 2017/10/01 2017/10/15 Start the idea based on SSD Finish

Requirement

The requirement as follows:

Name Version
cuda 8.0
python 3.5
pytorch 0.3.1

Before going on, we recommend minconda. After you install miniconda, then create a new environment named DAN, then run the following script:

conda create -n DAN python=3.5
source activate DAN

Run the following script to install the required python packages:

If you're in China, you'd better run the following script in order to speed up the downloading.

pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
cd SST
pip install -r requirement.txt

SST is the path of our repository folder.

Dataset

Our method can be evaluated on MOT17, MOT15 and UA-DETRAC.

MOT15 and MOT17 is for pedestrian tracking.

UA-DETRAC focuses is for vehicle tracking.

Train & Test On MOT17

For the simplity, we only introduce how to train and evaluate on MOT17

Download dataset

  1. Download the mot 17 dataset 5.5 GB and development kit 0.5 MB.

  2. Unzip this the dataset. Here is my file structure.

    MOT17
    ├── test
    └── train

Test

  1. Download the weigths from Dropbox or BaiYunPan to the SST/weights folder

  2. Modify SST/config/config.py as follows:

    # You need to modify line 8, 72, 73 and 74.
    8	current_select_configure = 'init_test_mot17' # need use 'init_test_mot17'
    ...	...
    70	def init_test_mot17():
    71        config['resume'] = './weights/sst300_0712_83000.pth'
    72        config['mot_root'] = 'replace by your dataset folder' 
    73		  config['save_folder'] = 'replace by your save folder'
    74        config['log_folder'] = 'replace by your log folder'
    75        config['batch_size'] = 1
    76        config['write_file'] = True
    77        config['tensorboard'] = True
    78        config['save_combine'] = False
    79        config['type'] = 'test' # or 'train'
  3. run test_mot17.py

    cd <SST>
    python test_mot17.py

    The result is shown as follows

    The title of each detected boxes represents (track id, detection id)

Train

  1. Download the vgg weights from Dropbox or BaiYunPan to the weights folder

  2. Modify SST/config/config.py as follows:

    # you need to modify line 8, 87, 89, 90 and 91.
    8	current_select_configure = 'init_train_mot17' # need use 'init_train_mot17'
    ...	...
    85	def init_train_mot17():
    86		config['epoch_size'] = 664
    87		config['mot_root'] = 'replace by your mot17 dataset folder'
    88		config['base_net_folder'] = './weights/vgg16_reducedfc.pth'
    89		config['log_folder'] = 'replace by your log folder'
    90		config['save_folder'] = 'replace by your save folder'
    91		config['save_images_folder'] = 'replace by your image save folder'
    92		config['type'] = 'train'
    93		config['resume'] = None # None means training from sketch.
    94		config['detector'] = 'DPM'
    95		config['start_iter'] = 0
    96		config['iteration_epoch_num'] = 120
    97		config['iterations'] = config['start_iter'] + config['epoch_size'] *     config['iteration_epoch_num'] + 50
    98		config['batch_size'] = 4
    99		config['learning_rate'] = 1e-2
    100		config['learning_rate_decay_by_epoch'] = (50, 80, 100, 110)
    101		config['save_weight_every_epoch_num'] = 5
    102		config['min_gap_frame'] = 0
    103		config['max_gap_frame'] = 30
    104		config['false_constant'] = 10
    105		config['num_workers'] = 16
    106		config['cuda'] = True
    107		config['max_object'] = 80
    108		config['min_visibility'] = 0.3
  3. Run train_mot17.py

    cd <SST>
    python train_mot17.py

Citation

If you use this source code or part of the source code. It is necessary to cite the following paper:

Sun. S., Akhtar, N., Song, H., Mian A., & Shah M. (2018). Deep Affinity Network for Multiple Object Tracking, Retrieved from https://arxiv.org/abs/1810.11780

Acknowledge

This code is based on ssd.pytorch

License

The methods provided on this page are published under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License . This means that you must attribute the work in the manner specified by the authors, you may not use this work for commercial purposes and if you alter, transform, or build upon this work, you may distribute the resulting work only under the same license. If you are interested in commercial usage you can contact us for further options.

Cool Examples

sst's People

Contributors

rainybluesky avatar shijies avatar yanteng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sst's Issues

Two important parameters

Mentioned in the paper "We use multiples of three in the range [3,30] to form the grid, based on which δw = 12 and δb = 15 are selected in the final implementation." What do the two parameters correspond to in the code?

Issues on Track age

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
def add_node(self, frame_index, recorder, node):
# iou judge
if len(self.nodes) > 0:
n = self.nodes[-1]
iou = n.get_iou(frame_index, recorder, node.id)
delta_frame = frame_index - n.frame_index
if delta_frame in TrackerConfig.min_iou_frame_gap:
iou_index = TrackerConfig.min_iou_frame_gap.index(delta_frame)
# if iou < TrackerConfig.min_iou[iou_index]:
if iou < TrackerConfig.min_iou[-1]:
return False
self.nodes.append(node)
self.reset_age()
return True
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
I am confused abut ’‘self.reset_age()’‘ .
My confusion is when to grow the age of this track because everytime when executing add_node , the age of this track would be reset to 0 ?

All_similarity and all_iou

Is line 296 in tracker.py "self.all_similarity[frame_index][pre_index] = iou" a type error ?

Should it be "self.all_iou[frame_index][pre_index] = iou" instead of "self.all_similarity[frame_index][pre_index] = iou" ?

Thanks for reply.

issues in mot.py

very nice work, but I'd like to say there are some mistakes with your code. In your original code, the images and the bounding boxes are not corresponding.
mot.py, line 113: current = self.recorder[frame_index]
should be: current = self.recorder[frame_index-1]
mot.py, line 152: next = self.recorder[next_frame_index]
should be: next = self.recorder[next_frame_index-1]
OR:
mot.py, line 99:
image_path = os.path.join(self.folder, 'img1/{0:06}.jpg'.format(frame_index))
modified version:
image_path = os.path.join(self.folder, 'img1/{0:06}.jpg'.format(frame_index+1))

Get Bad results when retraining the DAN on MOT17?

@shijieS
Thanks for your great work. I have not modified any parameters when training the model on MOT17. After training, I obtain the model "sst300_0712_79680.pth". However, the predicted trajectories are wrong, but the model provided by the authors can produce the precise trajectories. The problem is same with 51 @hanshong . Hope to your reply, thanks.

why not using size (n_pre, n_cur) as the input to the Affinity Net?

Hi,

Thanks for sharing the code.
In your code, the output features of selector are with shape (80, 520) and the inputs to affinity net are with shape(1040, 80, 80).
Why not set the output features of selector as (n_obj, 520), and then the inputs to affinity net will be with shape (1040, n_pre, n_cur). It seems okay with variable input size to FCN. And it will save time for training and inference.

how to get EB

HI
thank you for provide the code .
when i do the 'test' on UA,i can not find 'config['ua_detection_root'] = '/media/ssm/seagate/dataset/UA-DETRAC/EB' ' EB.how to get it?thank you a lot.

UserWarning

UserWarning: indexing with dtype torch.uint8 is now deprecated, please use a dtype torch.bool instead
请问怎样处理?

Issues with training

Hello,

Thank you for providing open-source code for SST tracker. I am trying to retrain this tracker on MOT17 and I am running into issues. I get this traceback:

Traceback (most recent call last):
File "train_mot17.py", line 234, in
train()
File "train_mot17.py", line 142, in train
batch_iterator = iter(data_loader)
File "/home/shashank/anaconda3/envs/SST/lib/python3.5/site-packages/torch/utils/data/dataloader.py", line 417, in iter
return DataLoaderIter(self)
File "/home/shashank/anaconda3/envs/SST/lib/python3.5/site-packages/torch/utils/data/dataloader.py", line 242, in init
self._put_indices()
File "/home/shashank/anaconda3/envs/SST/lib/python3.5/site-packages/torch/utils/data/dataloader.py", line 290, in _put_indices
indices = next(self.sample_iter, None)
File "/home/shashank/anaconda3/envs/SST/lib/python3.5/site-packages/torch/utils/data/sampler.py", line 119, in iter
for idx in self.sampler:
File "/home/shashank/anaconda3/envs/SST/lib/python3.5/site-packages/torch/utils/data/sampler.py", line 50, in iter
return iter(torch.randperm(len(self.data_source)).long())
RuntimeError: invalid argument 1: must be strictly positive at /pytorch/torch/lib/TH/generic/THTensorMath.c:2247

I changed the configurations appropriately in the config file before trying to train and I made sure that the dataset paths is configured correctly.

Why the accuracy and speed of retrained model is not as good as the sst300_0712_83000.pth which is given by author?

For training on MOT17, I have not modified any parameters except batch_size=2 and num_workers=0. And I am not sure whether the learning rate(1e-6) is too low that the loss is non-convergent and always between 1.4-2.6 in the training process. In the generated images, the connection lines between the front and back frame's objects disappears, or all lines points to the same object in the back frame.
For testing on MOT17, the predict trajectories are scattered and wrong straight lines while sst300_0712_83000 can generate great and precise trajectories.

Are there some parameters that need to be adjusted when retraining on MOT17? Hope for response, thanks.

How to track multiple objects in video file

Hello, I want to test on my own video.

I write the code like this to select two ROIs for query:

from tracker import SSTTracker, TrackerConfig, Track
# from sst_tracker import TrackSet as SSTTracker
import cv2
from data.mot_data_reader import MOTDataReader
import numpy as np
from config.config import config
from utils.timer import Timer
import argparse
import os

parser = argparse.ArgumentParser(description='Demo images creating')
parser.add_argument('--version', default='v1', help='current version')
parser.add_argument('--mot_root', default=config['mot_root'], help='MOT ROOT')
parser.add_argument('--type', default=config['type'], help='train/test')
parser.add_argument('--show_image', default=True, help='show image if true, or hidden')
parser.add_argument('--log_folder', default=config['log_folder'], help='video saving or result saving folder')
parser.add_argument('--mot_version', default=17, help='mot version')
parser.add_argument('--video', required=True)
args = parser.parse_args()


selected_frames = [100+5*i for i in range(6)]
#image_folder = os.path.join(args.mot_root, 'train/MOT17-09-FRCNN/img1')
#detection_file_name = os.path.join(args.mot_root, 'train/MOT17-09-FRCNN/det/det.txt')

def create(c,video_path):
    if not os.path.exists(args.log_folder):
        os.mkdir(args.log_folder)

    tracker = SSTTracker()
    '''
    reader = MOTDataReader(image_folder=image_folder,
                  detection_file_name=detection_file_name,
                           min_confidence=0.0)
    
    select_squences = [402, 404, 410, 422]
    '''
    cap = cv2.VideoCapture(args.video)
    frame_index = 0
    new_bboxes=[]
    bbox = [0]*4
    while True:
        ok, img = cap.read()
        if img is None or os is False:
            continue
        frame_index = frame_index+1
        if frame_index < 200:
            continue
        if frame_index == 200:
            x1, y1, w1, h1 = cv2.selectROI("SST", img, fromCenter=False)
            x2, y2, w2, h2 = cv2.selectROI("SST", img, fromCenter=False)
            bbox[0] = x1
            bbox[1] = y1
            bbox[2] = x1 + w1
            bbox[3] = y1 + h1
            new_bboxes.append(bbox)
            bbox[0] = x2
            bbox[1] = y2
            bbox[2] = x2 + w2
            bbox[3] = y2 + h2
            new_bboxes.append(bbox)

        image_org = tracker.update(img, np.array(new_bboxes), args.show_image, frame_index)
        print("OK")
        frame_index += 1

        if args.show_image and not image_org is None:
            # det[:, [2, 4]] *= float(w)
            # det[:, [3, 5]] *= float(h)
            # boxes = det[:, 2:6].astype(int)
            # for bid, b in enumerate(boxes):
            #     image_org = cv2.putText(image_org, '{}'.format(bid), tuple(b[:2]), cv2.FONT_HERSHEY_SIMPLEX, 1,
            #                             (0, 0, 0), 2)
            cv2.imshow('res', image_org)
            cv2.imwrite(os.path.join(args.log_folder, '{0:06}.jpg'.format(i)), image_org)
            # cv2.waitKey(0)
            print('frame: {}'.format(i))



if __name__ == '__main__':
    c = (0, 0, 4, -1, 5, 4)
    TrackerConfig.set_configure(c)

    create(c, args.video)

However, I cannot launch the tracker query and quit with failure:

use configure: init_test_mot17
Select a ROI and then press SPACE or ENTER button!
Cancel the selection process by pressing c button!
Select a ROI and then press SPACE or ENTER button!
Cancel the selection process by pressing c button!
OK
ASSERT: "false" in file qasciikey.cpp, line 501
Aborted

My question is what is the root cause of my failure?

How can I fix the problem?

Thanks for sharing your idea.

Regards!

CUDA memory error

Can you help me, I am new to pytorch.

**Traceback (most recent call last):
File "SST/train_ua.py", line 246, in
train()
File "SST/train_ua.py", line 184, in train
out = net(img_pre, img_next, boxes_pre, boxes_next, valid_pre, valid_next)
File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 493, in call
result = self.forward(*input, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/torch/nn/parallel/data_parallel.py", line 150, in forward
return self.module(*inputs[0], **kwargs[0])
File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 493, in call
result = self.forward(*input, **kwargs)
File "/content/SST/layer/sst.py", line 68, in forward
x_next = self.forward_vgg(x_next, self.vgg, sources_next)
File "/content/SST/layer/sst.py", line 179, in forward_vgg
x = vggk
File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 493, in call
result = self.forward(*input, kwargs)
File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/conv.py", line 338, in forward
self.padding, self.dilation, self.groups)
RuntimeError: CUDA out of memory. Tried to allocate 1.55 GiB (GPU 0; 11.17 GiB total capacity; 9.28 GiB already allocated; 1.12 GiB free; 448.72 MiB cached)

Parameters initilization of BatchNorm

Should parametres in BatchNorm not be initialized ? I just read the way of initializing for the params in Conv2d like follows :
"""
def weights_init(m):
if isinstance(m, nn.Conv2d):
xavier(m.weight.data)
m.bias.data.zero_()
"""
What about the initialization for the params in BN ? But I did read the net construction with
"def add_extras(cfg, i, batch_norm=True):"
and
"def selector(vgg, extra_layers, batch_normal=True):"
and corresponding calling to them
"return SST(phase, *selector(vgg(base[str(size)], 3),add_extras(extras[str(size)],
1024)),add_final(final[str(size)]), use_gpu )",
or is there something that I mistook ? Welcom to leave your perspectives , thanks a lot.

Possible mistake in the paper

Hi,
in your paper you say regarding MOT15 that

The provided ground truth detections do not consider object occlusions and a bounding box for a completely occluded object of interest is provided for training anyway

But this is also true for MOT17, as you can see in this frame here (frame number 421 of MOT17-02-DPM) where I have superimposed the ground truth over the image:

000421

This is also described in the MOT16 dataset paper, look at TABLE 1, that describes the criteria for the dataset annotation:
screenshot from 2019-01-16 11-43-20

Under "Occlusions" they clearly state:

Always annotate during occlusions if the position can be determined unambiguously.

Thus, your model trains fine even though bounding boxes for completely occluded objects are provided :)

How to track objects using SST for YOLO?

I'm trying to write code for object tracking using yolo detection results in a .txt file. But, I got stuck at writing code for DataReader. Can some help me out?

the yolo output looks kinda similar to the below line:

/home/anil/yolo/yolo_test/22_march_4f00910.jpg, Motorcycle, 0.548347, 0.713307, 0.199746, 0.2855
(path to the image directory, predicted class, x,y,w, h)

This is not a issue its just a qustion

Hello @yanteng @shijieS @ZhangBin1993

  1. I have a video of people walking and crossing each other I am trying to give a unique id to them even if they cross each other.
  2. Is it possible to give the same id for the object which was available in camera 1 and camera 2.
    If not do anyone knows how to solve these problems

The final affinity matrix

As is illustrated in the paper, in training phase two affinity matrices are processd by row-wise or column-wise softmax. In test phase, how's the final affinity matrix computed since only one matrix is needed?

bug: get_all_choices_max_track_node

Hey,

Thanks for your pretty job.

I find the function get_all_choices_max_track_node in tracker.py/TrackerConfig is same with get_all_choices_decay(). Is that wrong? Maybe it should be:

def get_all_choices_max_track_node():
        # ???
        return [(1, 0, 0, 0, i5, 2) for i5 in range(11)]

Or is there something I missed?

I'm trying to understand the code

Hello!
First of all thanks for uploading the code of the project. I'm trying to understand the code while reading the paper and I have two questions.

1- In the line bellow, you add the layer from the extension network to sources if the index%6 = 3. From what I understand, sources is a list with the nine layers you keep for the dimensionality reduction but in the paper you are keeping layers with index%6 = 5. Why is there this index difference?

if k % 6 == 3: #done: should select the output of BatchNormalization (-> k%6==2)

2- When training in train_mot17 you have two variables net and sst_net. It seems like you are using net for training and sst_net for saving and loading the model. What is the reason for that?

possible mistake in the implementation of sst loss

@shijieS Hi, I find the implementation of sst loss may exist mistake
in sst_loss.py, the forward function looks like this:

def forward(self, input, target, mask0, mask1):
        set_trace()
        mask_pre = mask0[:, :, :]
        mask_next = mask1[:, :, :]
        mask0 = mask0.unsqueeze(3).repeat(1, 1, 1, self.max_object+1)
        mask1 = mask1.unsqueeze(2).repeat(1, 1, self.max_object+1, 1)
        mask0 = Variable(mask0.data)
        mask1 = Variable(mask1.data)
        target = Variable(target.byte().data)

        if self.use_gpu:
            mask0 = mask0.cuda()
            mask1 = mask1.cuda()

        mask_region = (mask0 * mask1).float() # the valid position mask
        mask_region_pre = mask_region.clone() #note: should use clone (fix this bug)
        mask_region_pre[:, :, self.max_object, :] = 0 
        mask_region_next = mask_region.clone() #note: should use clone (fix this bug)
        mask_region_next[:, :, :, self.max_object] = 0 
        mask_region_union = mask_region_pre*mask_region_next

        input_pre = nn.Softmax(dim=3)(mask_region_pre*input)
        input_next = nn.Softmax(dim=2)(mask_region_next*input)
        input_all = input_pre.clone()

here, mask_region_pre and mask_region_next correspond to M1 and M2 matrixes in the paper respectively, so input_pre should be computed by applying softmax along dim=2 rather than 3, and input_next should be computed by applying softmax along dim=3 rather 2.
Please correct me if I'm wrong

Probles about the features uesd to concatenate

Thanks for your great work . I don't make sense the process of converting reducted features to concatenated ones. For example ,red dot on the feature map to gain the red line feature. Specially,the last layer 3320 gain Nm*20.Could you help me understand it ?

Download failed

Failed to download test weights from both dropbox and BaiYunPan. Can you update the weights?

Question about fps

Hi,
I have retried your project on the MOT17 dataset,but found that the processing efficiency is too low , can you tell me you final FPS?
Best,

Apply for License

Hello shijieS:
Thanks for your sharing. I am wondering if I can refactor the DAN code framework into my repo. I will cite your repo and paper.

What does augmentation does?

I review the code of augmentation in utils/augmentation.py, and I want to ask: does augmentation generates more pictures? or just process the picture and the number of picture remains the same?

Why DAN get high IDSW score?

Hi, thanks for your great work in MOT field.

After reading your paper, I'm confused about the IDSW score of DAN's. In the table 6, we can find that the IDSW of DAN is 8431, that is the largest one among all offline and online methods.

I understand the main contribution of DAN is to improve the tracking association results by using deep learning technique, in that case, can't we get lower IDSW number due to good association results?

I'm not sure whether I missed something.

ToPercentCoords

Why do I think there is a tiny inaccurate place in Fuction ToPercentCoords in utils/augmentations.py in line 85-96 ?

It feels like the following lines
"""
boxes_pre[:, 0] /= width
boxes_pre[:, 2] /= width
boxes_pre[:, 1] /= height
boxes_pre[:, 3] /= height
boxes_next[:, 0] /= width
boxes_next[:, 2] /= width
boxes_next[:, 1] /= height
boxes_next[:, 3] /= height
"""
should be corrected as:
"""
boxes_pre[:, 0] /= width-1
boxes_pre[:, 2] /= width-1
boxes_pre[:, 1] /= height-1
boxes_pre[:, 3] /= height-1
boxes_next[:, 0] /= width-1
boxes_next[:, 2] /= width-1
boxes_next[:, 1] /= height-1
boxes_next[:, 3] /= height-1
"""
cause when I used the original codes as an example to extract a specific number in a tensor by means of function torch.nn.functional.grid_sample, it wouldn't get the expected number, but when I changed width/height to width-1/height-1 , it came out the expected number.
Does anyone have the same confusion?

How to generate one dimension feature of a person by using feature map?

Hello,may I ask you a question? In your algorithm,a center point presents a person and then extract its feature by using the point. I wonder if I can use a feature map of of one person to generate its one dimension feature without using the center point information. If it may work ,how could it be done?

How to train and evaluate on UA dataset

Hi,

If there is any instructions on training/testing UA datasets?

I find UA-DETRAC/Insight-MVT_Annotation_Train and UA-DETRAC/gt in your config.py, but don't know what exactly it is.

Best,

Base network selection

As there are more popular and high-efficient base networks, i.e. ResNetX, why select VGG as the feature extractor? As we know, it enjoys tremendous parameters that slow down the computation speed and requires increasing memory.

Inference on my own video

Hello,

i want to perform tracking on my own video. Do I need to transform the image or do I have to pass the image without transformation as it is read with cv2.imread() ?

Moreover: which are the ways to improve the performances? Are there some parameters one may tune to improve overall performance and avoid ID switches between people detected?

Thanks for this repository and for the support

Incorrect ID assignments in the project

When run test_mot17.py
cd
python test_mot17.py
The result is shown as follows. The title of each detected boxes represents (track id, detection id). However, it seems that in the results all ID assignments are incorrect as track id and detection id don't match. Do the results indicate failures of tracking?
mot_tracking_demo

Problems about the results of MOT17

It is great work to open source code in MOT field. I really appreciate it. However I find that the tracking results with DPM is same with that with SDP in MOT17 ranking list about your tracker. Are there something wrong with the system?

disable the gpu

I have an computer which doesn't have an valid gpu for cuda. Is it possible to test on my own data without installing cuda?

Question about the MOT17 evaluation score

I use your model 'sst300_0712_83000.pth',test MOT17 and send the result to MOT Challenge,but I got a little lower score than you,can you tell why?This is the result bellow:

MOTA | IDF1 | MT | ML | FP | FN | ID Sw. | Frag | HZ
43.2±14.8 | 44.3 | 13.6% | 40.0% | 30,178 | 283,542 | 6,869 (138.1) | 14,822 (297.9) | 1.2 |  

About FPS

Hi,I run the test_mot17.py in RTX2080Ti, and the FPS is 1.82.But in your paper,the FPS is 6.3.Can you tell me the reason and your computer configuration,thank you.

Couldn't reproduce paper results

Hi,

I have managed to install and run the network on the MOT17 dataset.
I tried submitting the results on the evaluation server (the results won't appear in the leaderboard, of course) to see if I have configured everything correctly.
But I got only 44.3 MOTA, while the paper claims a 52.4 MOTA score.
Is there some config I need to change to reproduce the paper results?

Center coordinates

I am confused about center coordinates of boxes ,

in utils/augmentations.py/FormatBoxes , center = boxes[:,:2] + boxes[:, 2:] -1

but in tracker.py/TrackUtil/convert_detection, center = 2 * boxes[:,:2] + boxes[:, 2:] -1

can someone explain why it is like this or it's just a type error ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.