Git Product home page Git Product logo

maudzung / complex-yolov4-pytorch Goto Github PK

View Code? Open in Web Editor NEW
1.2K 27.0 260.0 6.68 MB

The PyTorch Implementation based on YOLOv4 of the paper: "Complex-YOLO: Real-time 3D Object Detection on Point Clouds"

Home Page: https://arxiv.org/pdf/1803.06199.pdf

License: GNU General Public License v3.0

Python 99.70% Shell 0.30%
yolov4 object-detection real-time multiprocessing data-parallel-computing lidar lidar-point-cloud complex-yolo 3d-object-detection mish

complex-yolov4-pytorch's Introduction

Complex YOLOv4

python-image pytorch-image

The PyTorch Implementation based on YOLOv4 of the paper: Complex-YOLO: Real-time 3D Object Detection on Point Clouds


Features

demo

Youtube link

2. Getting Started

2.1. Requirement

pip install -U -r requirements.txt

For mayavi and shapely libraries, please refer to the installation instructions from their official websites.

2.2. Data Preparation

Download the 3D KITTI detection dataset from here.

The downloaded data includes:

  • Velodyne point clouds (29 GB): input data to the Complex-YOLO model
  • Training labels of object data set (5 MB): input label to the Complex-YOLO model
  • Camera calibration matrices of object data set (16 MB): for visualization of predictions
  • Left color images of object data set (12 GB): for visualization of predictions

Please make sure that you construct the source code & dataset directories structure as below.

For 3D point cloud preprocessing, please refer to the previous works:

2.3. Complex-YOLO architecture

architecture

This work has been based on the paper YOLOv4: Optimal Speed and Accuracy of Object Detection.

Please refer to several implementations of YOLOv4 using PyTorch DL framework:

2.4. How to run

2.4.1. Visualize the dataset (both BEV images from LiDAR and camera images)

cd src/data_process
  • To visualize BEV maps and camera images (with 3D boxes), let's execute (the output-width param can be changed to show the images in a bigger/smaller window):
python kitti_dataloader.py --output-width 608
  • To visualize mosaics that are composed from 4 BEV maps (Using during training only), let's execute:
python kitti_dataloader.py --show-train-data --mosaic --output-width 608 

By default, there is no padding for the output mosaics, the feature could be activated by executing:

python kitti_dataloader.py --show-train-data --mosaic --random-padding --output-width 608 
  • To visualize cutout augmentation, let's execute:
python kitti_dataloader.py --show-train-data --cutout_prob 1. --cutout_nholes 1 --cutout_fill_value 1. --cutout_ratio 0.3 --output-width 608

2.4.2. Inference

Download the trained model from here, then put it to ${ROOT}/checkpoints/ and execute:

python test.py --gpu_idx 0 --pretrained_path ../checkpoints/complex_yolov4/complex_yolov4_mse_loss.pth --cfgfile ./config/cfg/complex_yolov4.cfg --show_image

2.4.3. Evaluation

python evaluate.py --gpu_idx 0 --pretrained_path <PATH> --cfgfile <CFG> --img_size <SIZE> --conf-thresh <THRESH> --nms-thresh <THRESH> --iou-thresh <THRESH>

(The conf-thresh, nms-thresh, and iou-thresh params can be adjusted. By default, these params have been set to 0.5)

2.4.4. Training

2.4.4.1. Single machine, single gpu
python train.py --gpu_idx 0 --batch_size <N> --num_workers <N>...
2.4.4.2. Multi-processing Distributed Data Parallel Training

We should always use the nccl backend for multi-processing distributed training since it currently provides the best distributed training performance.

  • Single machine (node), multiple GPUs
python train.py --dist-url 'tcp://127.0.0.1:29500' --dist-backend 'nccl' --multiprocessing-distributed --world-size 1 --rank 0
  • Two machines (two nodes), multiple GPUs

First machine

python train.py --dist-url 'tcp://IP_OF_NODE1:FREEPORT' --dist-backend 'nccl' --multiprocessing-distributed --world-size 2 --rank 0

Second machine

python train.py --dist-url 'tcp://IP_OF_NODE2:FREEPORT' --dist-backend 'nccl' --multiprocessing-distributed --world-size 2 --rank 1

To reproduce the results, you can run the bash shell script

./train.sh

Tensorboard

  • To track the training progress, go to the logs/ folder and
cd logs/<saved_fn>/tensorboard/
tensorboard --logdir=./

2.5. List of usage for Bag of Freebies (BoF) & Bag of Specials (BoS) in this implementation

Backbone Detector
BoF [x] Dropblock
[x] Random rescale, rotation (global)
[x] Mosaic/Cutout augmentation
[x] Cross mini-Batch Normalization
[x] Dropblock
[x] Random training shapes
BoS [x] Mish activation
[x] Cross-stage partial connections (CSP)
[x] Multi-input weighted residual connections (MiWRC)
[x] Mish activation
[x] SPP-block
[x] SAM-block
[x] PAN path-aggregation block
[x] GIoU loss
[ ] CIoU loss

Contact

If you think this work is useful, please give me a star!
If you find any errors or have any suggestions, please contact me (Email: [email protected]).
Thank you!

Citation

@article{Complex-YOLO,
  author = {Martin Simon, Stefan Milz, Karl Amende, Horst-Michael Gross},
  title = {Complex-YOLO: Real-time 3D Object Detection on Point Clouds},
  year = {2018},
  journal = {arXiv},
}

@article{YOLOv4,
  author = {Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao},
  title = {YOLOv4: Optimal Speed and Accuracy of Object Detection},
  year = {2020},
  journal = {arXiv},
}

Folder structure

${ROOT}
└── checkpoints/    
    ├── complex_yolov3/
    └── complex_yolov4/
└── dataset/    
    └── kitti/
        ├──ImageSets/
        │   ├── train.txt
        │   └── val.txt
        ├── training/
        │   ├── image_2/ <-- for visualization
        │   ├── calib/
        │   ├── label_2/
        │   └── velodyne/
        └── testing/  
        │   ├── image_2/ <-- for visualization
        │   ├── calib/
        │   └── velodyne/ 
        └── classes_names.txt
└── src/
    ├── config/
    ├── cfg/
        │   ├── complex_yolov3.cfg
        │   ├── complex_yolov3_tiny.cfg
        │   ├── complex_yolov4.cfg
        │   ├── complex_yolov4_tiny.cfg
    │   ├── train_config.py
    │   └── kitti_config.py
    ├── data_process/
    │   ├── kitti_bev_utils.py
    │   ├── kitti_dataloader.py
    │   ├── kitti_dataset.py
    │   ├── kitti_data_utils.py
    │   ├── train_val_split.py
    │   └── transformation.py
    ├── models/
    │   ├── darknet2pytorch.py
    │   ├── darknet_utils.py
    │   ├── model_utils.py
    │   ├── yolo_layer.py
    └── utils/
    │   ├── evaluation_utils.py
    │   ├── iou_utils.py
    │   ├── logger.py
    │   ├── misc.py
    │   ├── torch_utils.py
    │   ├── train_utils.py
    │   └── visualization_utils.py
    ├── evaluate.py
    ├── test.py
    ├── test.sh
    ├── train.py
    └── train.sh
├── README.md 
└── requirements.txt

Usage

usage: train.py [-h] [--seed SEED] [--saved_fn FN] [--working-dir PATH]
                [-a ARCH] [--cfgfile PATH] [--pretrained_path PATH]
                [--img_size IMG_SIZE] [--hflip_prob HFLIP_PROB]
                [--cutout_prob CUTOUT_PROB] [--cutout_nholes CUTOUT_NHOLES]
                [--cutout_ratio CUTOUT_RATIO]
                [--cutout_fill_value CUTOUT_FILL_VALUE]
                [--multiscale_training] [--mosaic] [--random-padding]
                [--no-val] [--num_samples NUM_SAMPLES]
                [--num_workers NUM_WORKERS] [--batch_size BATCH_SIZE]
                [--print_freq N] [--tensorboard_freq N] [--checkpoint_freq N]
                [--start_epoch N] [--num_epochs N] [--lr_type LR_TYPE]
                [--lr LR] [--minimum_lr MIN_LR] [--momentum M] [-wd WD]
                [--optimizer_type OPTIMIZER] [--burn_in N]
                [--steps [STEPS [STEPS ...]]] [--world-size N] [--rank N]
                [--dist-url DIST_URL] [--dist-backend DIST_BACKEND]
                [--gpu_idx GPU_IDX] [--no_cuda]
                [--multiprocessing-distributed] [--evaluate]
                [--resume_path PATH] [--conf-thresh CONF_THRESH]
                [--nms-thresh NMS_THRESH] [--iou-thresh IOU_THRESH]

The Implementation of Complex YOLOv4

optional arguments:
  -h, --help            show this help message and exit
  --seed SEED           re-produce the results with seed random
  --saved_fn FN         The name using for saving logs, models,...
  --working-dir PATH    The ROOT working directory
  -a ARCH, --arch ARCH  The name of the model architecture
  --cfgfile PATH        The path for cfgfile (only for darknet)
  --pretrained_path PATH
                        the path of the pretrained checkpoint
  --img_size IMG_SIZE   the size of input image
  --hflip_prob HFLIP_PROB
                        The probability of horizontal flip
  --cutout_prob CUTOUT_PROB
                        The probability of cutout augmentation
  --cutout_nholes CUTOUT_NHOLES
                        The number of cutout area
  --cutout_ratio CUTOUT_RATIO
                        The max ratio of the cutout area
  --cutout_fill_value CUTOUT_FILL_VALUE
                        The fill value in the cut out area, default 0. (black)
  --multiscale_training
                        If true, use scaling data for training
  --mosaic              If true, compose training samples as mosaics
  --random-padding      If true, random padding if using mosaic augmentation
  --no-val              If true, dont evaluate the model on the val set
  --num_samples NUM_SAMPLES
                        Take a subset of the dataset to run and debug
  --num_workers NUM_WORKERS
                        Number of threads for loading data
  --batch_size BATCH_SIZE
                        mini-batch size (default: 4), this is the totalbatch
                        size of all GPUs on the current node when usingData
                        Parallel or Distributed Data Parallel
  --print_freq N        print frequency (default: 50)
  --tensorboard_freq N  frequency of saving tensorboard (default: 20)
  --checkpoint_freq N   frequency of saving checkpoints (default: 2)
  --start_epoch N       the starting epoch
  --num_epochs N        number of total epochs to run
  --lr_type LR_TYPE     the type of learning rate scheduler (cosin or
                        multi_step)
  --lr LR               initial learning rate
  --minimum_lr MIN_LR   minimum learning rate during training
  --momentum M          momentum
  -wd WD, --weight_decay WD
                        weight decay (default: 1e-6)
  --optimizer_type OPTIMIZER
                        the type of optimizer, it can be sgd or adam
  --burn_in N           number of burn in step
  --steps [STEPS [STEPS ...]]
                        number of burn in step
  --world-size N        number of nodes for distributed training
  --rank N              node rank for distributed training
  --dist-url DIST_URL   url used to set up distributed training
  --dist-backend DIST_BACKEND
                        distributed backend
  --gpu_idx GPU_IDX     GPU index to use.
  --no_cuda             If true, cuda is not used.
  --multiprocessing-distributed
                        Use multi-processing distributed training to launch N
                        processes per node, which has N GPUs. This is the
                        fastest way to use PyTorch for either single node or
                        multi node data parallel training
  --evaluate            only evaluate the model, not training
  --resume_path PATH    the path of the resumed checkpoint
  --conf-thresh CONF_THRESH
                        for evaluation - the threshold for class conf
  --nms-thresh NMS_THRESH
                        for evaluation - the threshold for nms
  --iou-thresh IOU_THRESH
                        for evaluation - the threshold for IoU

complex-yolov4-pytorch's People

Contributors

ben-milanko avatar cclauss avatar dependabot[bot] avatar maudzung 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

complex-yolov4-pytorch's Issues

resume from a checkpoint

i was wondering if anyone knows how to resume the training after 20 epochs for example, do we use the --pretrained_path and insert the model or the --resume_path

Overload resolution failed

Can anyone help me with the errors that come up when I try to use the test.py file (python test.py --gpu_idx 0 --pretrained_path ../checkpoints/complex_yolov4/complex_yolov4_mse_loss.pth --cfgfile ./config/cfg/complex_yolov4. cfg --show_image)?

  • Can't parse 'pt1'. Sequence item with index 0 has a wrong type
  • Can't parse 'pt1'. Sequence item with index 0 has a wrong type

AP for Hard, medium and easy

Evaulate.py give f1, precision, AP and recall for classes car, pedestrian and cyclist but how to get the same for easy, medium and hard category wise within a class??

Calibration of Camera images

Hello, the inference on my own dataset works very good. The bounding boxes in point cloud are exact. But the transformation to my camera data is not good. Where do I have to adjust the values ? In kitti_bev_utils.py I´m able to have influence on the boxes in camera image but it doesnt look good.

AssertionError: scalar should be 0D

I've put the figures by referring to the train.sh file.
image
$ python train.py --gpu_idx 0 --multiscale_training --batch_size 4 --num_workers 4
and this error occur
image
It seems to be a dimension problem in the np, is there any py file that needs to be modified?

Clarification about Heightmap

As per the Complex Yolo paper, in the G field of RGB map of point cloud maximum height is encoded.
zg (Sj ) = max(PΩi→j · [0, 0, 1]T )

However, it seems that in this implementation it is normalized height:

max_height = float(np.abs(bc['maxZ'] - bc['minZ']))
heightMap[np.int_(PointCloud_frac[:, 0]), np.int_(PointCloud_frac[:, 1])] = PointCloud_frac[:, 2] / max_height

Could you please clarify this?

Hard coded calibration parameters & using a custom dataset

Hi,
I've had some success using a custom dataset converted to KITTI format for training. Your repo is generally easy to use so thanks for that.

However I noticed that some of the hard-coded KITTI calibration matrices are being used in augmentation. The dataset loader seems to load calibration files properly(?), but some functions use the "average KITTI value" defined here https://github.com/maudzung/Complex-YOLOv4-Pytorch/blob/master/src/config/kitti_config.py . I could change those matrices but that wouldn't scale well, so I modified the code to make sure the proper calibration values were being passed to the augmentation function.

In the end, that had a small, negative impact on my results; do you have any idea why that is? Why were things even working with the hard coded KITTI params, when I'm using a dataset completely unlike KITTI? Can you explain how the hard-coded values were used and how it would impact a custom dataset?

I'm worried I somehow broke some augmentation code in the process; do you have any suggestions with debugging this repo? (making sure the boxes are TF'd properly, data augmentation is working properly, and so on..)?

test.py Runtime Error

Traceback (most recent call last):
  File "test.py", line 98, in <module>
    model.load_state_dict(torch.load(configs.pretrained_path))
  File "/home/chaejin/anaconda3/envs/complex-yolov4/lib/python3.8/site-packages/torch/serialization.py", line 593, in load
    return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
  File "/home/chaejin/anaconda3/envs/complex-yolov4/lib/python3.8/site-packages/torch/serialization.py", line 773, in _legacy_load
    result = unpickler.load()
  File "/home/chaejin/anaconda3/envs/complex-yolov4/lib/python3.8/site-packages/torch/serialization.py", line 729, in persistent_load
    deserialized_objects[root_key] = restore_location(obj, location)
  File "/home/chaejin/anaconda3/envs/complex-yolov4/lib/python3.8/site-packages/torch/serialization.py", line 178, in default_restore_location
    result = fn(storage, location)
  File "/home/chaejin/anaconda3/envs/complex-yolov4/lib/python3.8/site-packages/torch/serialization.py", line 154, in _cuda_deserialize
    device = validate_cuda_device(location)
  File "/home/chaejin/anaconda3/envs/complex-yolov4/lib/python3.8/site-packages/torch/serialization.py", line 144, in validate_cuda_device
    raise RuntimeError('Attempting to deserialize object on CUDA device '
RuntimeError: Attempting to deserialize object on CUDA device 2 but torch.cuda.device_count() is 1. Please use torch.load with map_location to map your storages to an existing device.

I got this Runtime Error.

image
Nvidia GPU was operating well,,
I don't know why this program was not operated
Ofcourse, i gave arg map_location = "cuda:0". result was same
Please test or review this program..

image

Trouble evaluating mAP

I trained the model with only pedestrians. I tested it and noticed a lot of false positives, I didn't train for too long so I was expecting this. When I run evaluate.py I get a mAP of 0. Any guesses as to why/advice?

Thanks

cuda deserialization issue

Attempting to deserialize object on CUDA device 2 but torch.cuda.device_count() is 1. Please use torch.load with map_location to map your storages to an existing device.

what to do?

i am running pretrained model

train time

how long does it take for the author to train 300 epoch?

Real time Detection

I have some unlabeled files in kitti format, so I would like to see the predictions in real time, how does it work. How to start the real time detection ?

Doubt in density map

In the paper formula used for density map is as follows:
zr (Sj ) = min (1.0, log(N + 1)/64)

But in the code it is:

normalizedCounts = np.minimum(1.0, np.log(counts + 1) / np.log(64))

Are both same? Shouldn't it be like this?:

normalizedCounts = np.minimum(1.0, np.log((counts + 1) / 64))

Results output

How can I extract the resulting predicted files of test.py ? Like the coordinates of the bounding box etc.

TensorRT conversion

@maudzung
Hi,Maudzung, nice work! I'm trying to use TensorRT to speed up the inference. Do you have some scripts that transfer the Complex-YOLOv4-Pytorch from pytorch(pth file) to TensorRT?

Thanks!

test.py

2021-10-22 13-27-54 的屏幕截图
When I run the test. py file, there is no result output, and the code does not stop? What is the reason?

How to run as a live feed?

Is there a way to display the output as a live continuous feed?

I wanted to make a live lidar object detector to detect pedestrians, etc. Is it possible?

Did you compare speed and accuracy of Complex-YOLOv4 vs other algorithms on Kitti dataset?

What are the differences between single machines and tow machines?

I am currently working on this.
Single machine (node), multiple GPUs
$ python train.py --dist-url 'tcp://127.0.0.1:29500' --dist-backend 'nccl' --multiprocessing-distributed --world-size 1 --rank 0
I use a titian RTX. Is it right use this code? What are the differences between single machines and tow machines?
image

......................................................................................................

image
this error occur.....
Do i have to use single gpu?

can't run because of low Vram

RuntimeError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 3.79 GiB total capacity; 2.48 GiB already allocated; 25.50 MiB free; 2.52 GiB reserved in total by PyTorch)

I tried to lower the batch_size to 1 in train_config but i still have not enough memory.
is there any parameter to change so it becomes less memory hungry?
what do you suggest?

opencv-python version problem

I found a strange problem, using the latest version of opencv-python-4.3.0.36 will cause segmentation fault. I located the problem in kitti_dataloader.py at line 164 cv2.imshow().

env:

Ubuntu 18.04; Python3.6

output:

[1] 21406 segmentation fault (core dumped) python kitti_dataloader.py --output-width 608

If someone has the same problem, you can uninstall opencv-python and execute pip install opencv-python==4.2.0.34.
Thanks for the excellent work!

cuda out of memory

hi, i was wondering if anyone knows how to solve this cuda out of memory problem, i've tried everything, lowering the batch size to 1, lowering the epoch number, nothing works, but at the same time i've tried other programs and they worked fine with cuda and with even normal batch=2, so i don't what to do next if anyone have any solution please help

How to train with a smaller kitti dataset?

Say if I want to train with 1000 bin files, what modifications should be done in the code?

  • I tried changing this, did now work.

image

  • I also changed the train.txt file, which did not help

image

What else can I try?

I want to know the development environment.

Thank you for sharing the source
I want to know your development environment. ubuntu, cuda, cudnn etc..
Can you tell me the program versions i need to run the program?
Are you use anaconda environment?

Ground Truth Process

Hi, i am new at Machine Learning, you have a good work. I want to ask, there a labels kitti dataset with 15 coordinate, but when we running test.py i see there are "x, y, w, l, im, re, cls_pred". Can you explain me how the process of the labels becomes like this on test.py? thank you, and i am sorry for my bad english.

train point cloud with 3D Yolo with single frame

I have a point cloud of a scene that contains some 3D objects in pcd, ply or bin format and without the jpg images, only the point cloud. I have created a labeling of 2 different classes using a toolbox. It is possible to train a 3D-YOLOv4 model, someone can help me with the process with a tutorial, I can pay for it, I need this part for my degree project.

Thank you.

RuntimeError: Error(s) in loading state_dict for Darknet:

I succeeded in step 2.4.1.
image

I'm currently working on step 2.4.2.
2.4.2. Inference
python test.py --gpu_idx 0 --pretrained_path ...

In this step I think pretrained_path means complex_yolov3.pth so I made file and put complex_yolov3.pth
image

And run python test.py --gpu_idx 0 --pretrained_path /home/kaai/Complex-YOLOv4-Pytorch/ab/complex_yolov3.pth

image
image

Is there anything wrong with my progress?

How many figures should I put in?

I tried
$ python train.py --gpu_idx 0 --multiscale_training --batch_size 128 --num_workers 0...
$ python train.py --gpu_idx 0 --multiscale_training --batch_size 128 --num_workers 1...
$ python train.py --gpu_idx 0 --multiscale_training --batch_size 128 --num_workers 16...

but train.py: error: argument --num_workers: invalid int value: '0...' this error occur
train.py: error: argument --num_workers: invalid int value: '1...' this error occur
train.py: error: argument --num_workers: invalid int value: '16...' this error occur

train.py file (command)

can someone please finish the command of the train.py file, because there is a train.py --gpu_idx 0 --batch_size --num_workers ... and i don't know what is the rest of that command or what to put instead of the N, i am still learning, thank you.

Can't parse 'pt1'. Sequence item with index 0 has a wrong type

Bug in src/data_process/kitti_bev_utils.py; function drawRotatedBox(); line 168

I had to cast every one of these values from "corners_int" variable to int as there were actually floats. cv2.line() then raised an Exception.

image

cv2.line(img, (corners_int[0, 0], corners_int[0, 1]), (corners_int[3, 0], corners_int[3, 1]), (255, 255, 0), 2)
changed to:
cv2.line(img, (int(corners_int[0, 0]), int(corners_int[0, 1])), (int(corners_int[3, 0]), int(corners_int[3, 1])), (255, 255, 0), 2)

This error occurred whenever I tried to execute:
python kitti_dataloader.py --show-train-data --cutout_prob 1. --cutout_nholes 1 --cutout_fill_value 1. --cutout_ratio 0.3 --output-width 608

cuda out of memory

i've tried the code on a computer with graphic card GTX 1050 Ti and i still got the Cuda out of memory error, when i tried to lowed the batch size, it worked for a moment then stopped as it is showed in the picture below
image

intersection of rotate bounding box error

intersection_point = line.find_intersection(Line(s, t))

I think there should be limitations to the range of intersection points.

In the following case, intersection values are calculated as 400.0 even though the boxes do not intersect.

box1 = torch.tensor([100, 100, 40, 10, np.pi / 2], dtype=torch.float).cuda()
box2 = torch.tensor([200, 100, 40, 20, 0], dtype=torch.float).cuda()

Shapely- box1_area: 400.00, box2_area: 800.00, inter: 0.00, iou: 0.0000
intersection from intersection_area(): 400.0

image

Can I use it to train more classes?

@maudzung
Here's a question that I want to train with net with more classes.(There is a task I should give the result with car,pedestrian,cyclist and truck) Can it works? Could you plz give me some advice?Thanks a lot and forgive me for my bad English.

IDE

Hi all,
Which IDE are you using?
Best regads,
PeterPham

Lack of backword pass in Giou module

convex_conners = torch.cat((p_cons, t_cons), dim=0)
hull = ConvexHull(convex_conners.clone().detach().cpu().numpy())  # done on cpu, just need indices output
convex_conners = convex_conners[hull.vertices]
convex_polygon = cvt_box_2_polygon(convex_conners)
convex_area = convex_polygon.area
giou_loss += 1. - (iou - (convex_area - union) / (convex_area + 1e-16))

this problem can be here: facebookresearch/detectron2#1347

Cuda out of memory,

hello when i tried to run the evaluate.py file , like it is mentioned in the Readme file, i always have this error, and i don't know how to fix it, mind you that i have 2Gb nvidia graphic card GTX 950m, when i tried to lower the batch size it worked, but i lowered it till it was equal 1 and the results were wrong, can you please help me
image

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.