LaneDet is an open source lane detection toolbox based on PyTorch that aims to pull together a wide variety of state-of-the-art lane detection models

Overview

LaneDet

Introduction

LaneDet is an open source lane detection toolbox based on PyTorch that aims to pull together a wide variety of state-of-the-art lane detection models. Developers can reproduce these SOTA methods and build their own methods.

demo image

Table of Contents

Benchmark and model zoo

Supported backbones:

  • ResNet
  • ERFNet
  • VGG
  • DLA (comming soon)

Supported detectors:

Installation

Clone this repository

git clone https://github.com/turoad/lanedet.git

We call this directory as $LANEDET_ROOT

Create a conda virtual environment and activate it (conda is optional)

conda create -n lanedet python=3.8 -y
conda activate lanedet

Install dependencies

# Install pytorch firstly, the cudatoolkit version should be same in your system. (you can also use pip to install pytorch and torchvision)
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch

# Or you can install via pip
pip install torch torchvision

# Install python packages
python setup.py build develop

Data preparation

CULane

Download CULane. Then extract them to $CULANEROOT. Create link to data directory.

cd $RESA_ROOT
mkdir -p data
ln -s $CULANEROOT data/CULane

For CULane, you should have structure like this:

$CULANEROOT/driver_xx_xxframe    # data folders x6
$CULANEROOT/laneseg_label_w16    # lane segmentation labels
$CULANEROOT/list                 # data lists

Tusimple

Download Tusimple. Then extract them to $TUSIMPLEROOT. Create link to data directory.

cd $RESA_ROOT
mkdir -p data
ln -s $TUSIMPLEROOT data/tusimple

For Tusimple, you should have structure like this:

$TUSIMPLEROOT/clips # data folders
$TUSIMPLEROOT/lable_data_xxxx.json # label json file x4
$TUSIMPLEROOT/test_tasks_0627.json # test tasks json file
$TUSIMPLEROOT/test_label.json # test label json file

For Tusimple, the segmentation annotation is not provided, hence we need to generate segmentation from the json annotation.

python tools/generate_seg_tusimple.py --root $TUSIMPLEROOT
# this will generate seg_label directory

Getting Started

Training

For training, run

python main.py [configs/path_to_your_config] --gpus [gpu_ids]

For example, run

python main.py configs/resa/resa50_culane.py --gpus 0 1 2 3

Testing

For testing, run

python main.py [configs/path_to_your_config] --validate --load_from [path_to_your_model] [gpu_num]

For example, run

python main.py configs/resa/resa50_culane.py --validate --load_from culane_resnet50.pth --gpus 0 1 2 3

Currently, this code can output the visualization result when testing, just add --view. We will get the visualization result in work_dirs/xxx/xxx/visualization.

For example, run

python main.py configs/resa/resa50_culane.py --validate --load_from culane_resnet50.pth --gpus 0 --view

Contributing

We appreciate all contributions to improve LaneDet. Any pull requests or issues are welcomed.

Licenses

This project is released under the Apache 2.0 license.

Acknowledgement

Comments
  • How can I properly change the input image size on CondLane?

    How can I properly change the input image size on CondLane?

    Currently I'm detecting lanes using tools/detect.py.

    For Condlane inference, I changed this

    batch_size=1 # from 8 (for condlane inference)
    

    And tried these configs for FHD input image

    img_height = 1080 # from 320
    img_width = 1920 # from 800
    
    ori_img_h = 1080 # from 590
    ori_img_w = 1920 # from 1640
    
    crop_bbox = [0,540,1920,1080] # from [0, 270, 1640, 590]
    

    Changing img_scale = (800,320) results

    The size of tensor a must match the size of tensor b at non-singleton dimension 3
    

    How can I properly change the input image size (ex. FHD) on CondLane config file?

    opened by parkjbdev 20
  • curvature estimation

    curvature estimation

    Hello, I would like to know if there is any way to get real-time lane detection and curvature detection using deep learning. I have seen traditional computer vision algorithms but I am looking for a Deep Learning model that could help me out with this. Any suggestions will be very helpful. Thanks in advance.

    opened by k-nayak 9
  • Really bad inference results

    Really bad inference results

    The inference outputs from the model are really bad even for very easy images.

    1. Using Laneatt_Res18_Culane straight-lines2-laneatt-res18

    2. Using SCNN_Res50_Culane straight-lines2-scnn-res50

    Any idea why this is happening? I've just done normal inference without any changes.

    opened by sowmen 9
  • ImportError: connot import name 'nms_impl' form partially initialized module 'lanedet.ops' (most likely due to a circular improt)o)

    ImportError: connot import name 'nms_impl' form partially initialized module 'lanedet.ops' (most likely due to a circular improt)o)

    When I run: python tools/detect.py configs/resa/resa34_culane.py --img images --load_from resa_r34_culane.pth --savedir ./vis Traceback (most recent call last): File "D:/XXX/XXX/XXX/lanedet-main/tools/detect.py", line 8, in from lanedet.datasets.process import Process File "D:\XXX\XXX\XXX\lanedet-main\lanedet_init_.py", line 1, in from .ops import * File "D:\XXX\XXX\XXX\lanedet-main\lanedet\ops_init_.py", line 1, in from .nms import nms File "D:\XXX\XXX\XXX\lanedet-main\lanedet\ops\nms.py", line 29, in from . import nms_impl ImportError: cannot import name 'nms_impl' from partially initialized module 'lanedet.ops' (most likely due to a circular import) (D:\XXX\XXX\XXX\lanedet-main\lanedet\ops_init_.py)

    opened by readerrubic 8
  • custom image size for resa !

    custom image size for resa !

    Hello,

    I have tried testing with the CULane dataset with rsea and it is working well with the example video_example/05081544_0305/
    With the following image configuration: img_height = 288 img_width = 800 cut_height = 240 ori_img_h = 590 ori_img_w = 1640

    05081544_0305-000073

    But with custom image of configurations: img_height = 288 img_width = 800 cut_height = 240 ori_img_h = 1208 // 590 ori_img_w = 1920 //1640

    With above parameters: custom image 05081544_0305-000001

    With defaut parameters: custom image 05081544_0305-000001

    Could you please assist me which params needs to be tuned.

    Appreciate any response.

    Regards, Ajay

    opened by ajay1606 7
  • Can't convert the model to onnx

    Can't convert the model to onnx

    `sample_input = torch.rand((32, 3, 3, 3))

    torch.onnx.export( net1.module, # PyTorch Model sample_input, # Input tensor '/content/drive/MyDrive/MobileNetV2-model-onnx.onnx', # Output file (eg. 'output_model.onnx') opset_version = 12, # Operator support version input_names = ['input'], # Input tensor name (arbitary) output_names = ['output'] # Output tensor name (arbitary) )`

    Got this Error:

    TypeError Traceback (most recent call last) in () 5 opset_version=12, # Operator support version 6 input_names=['input'], # Input tensor name (arbitary) ----> 7 output_names=['output'] # Output tensor name (arbitary) 8 )

     21     def forward(self, batch):
     22         output = {}
    

    ---> 23 fea = self.backbone(batch['img']) 24 25 if self.aggregator:

    TypeError: new(): invalid data type 'str'

    enhancement 
    opened by AbdulFMS 6
  • HELP! A circular import error message appears in nms.py

    HELP! A circular import error message appears in nms.py

    from . import nms_impl ImportError: cannot import name 'nms_impl' from partially initialized module 'la nedet.ops' (most likely due to a circular import) (D:\lanedet-main\lanedet\ops_ init_.py)

    opened by 13xyz7 6
  • Unable to find model file

    Unable to find model file

    Hello, Thank you so much for sharing a very much useful repository.

    I have followed the step by step instructions given, and have downloaded all the datasets as mentioned in the below image

    image

    Training: python main.py configs/resa/resa50_culane.py --gpus 0

    After running the above command, i was able to see following window: image

    But i couldn't find any model file such as culane_resnet50.pth ,resa_r34_culane.pth !! As it mentioned in the example run case.

    Alternatively, is it possible to share the pre-trained model file?

    As I am a beginner, I greatly appreciate your understanding and kind response.

    Regards, Ajay

    opened by ajay1606 5
  • TypeError: expected string or bytes-like object

    TypeError: expected string or bytes-like object

    python setup.py build develop

    File "/home/zzj/anaconda3/envs/Lanedet/lib/python3.8/site-packages/pkg_resources/_vendor/packaging/version.py", line 275, in init match = self._regex.search(version) TypeError: expected string or bytes-like object

    ubuntu20.04 what can i do?

    opened by hzzzzjzyq 5
  • Error

    Error

    if don't modify (from .nms import nms) from lanedet/ops/init.py to (from . import *) there will be an error. and if don't modify (from . import nms_impl) from lanedet/ops/nms.py to (from . import *) there will be an error. And when run inference, there is no lanedet directory in the tools directory, resulting in module error from lanedet/tools/detect.py line 8~12. Is there any other way to remove the error?

    opened by gui-hoon 5
  • Mobilenetv2 for condlane got error.

    Mobilenetv2 for condlane got error.

    Hey @Turoad, thanks for your work, it's very useful. I recently customized to train condlane with mobilenetv2 backbone but got this error!!

    Traceback (most recent call last):
      File "main.py", line 65, in <module>
        main()
      File "main.py", line 35, in main
        runner.train()
      File "/mnt/09a762a6-3f6e-469b-8d6d-e9fa625e24b9/USER/LuanDD/lanedet/lanedet/engine/runner.py", line 94, in train
        self.train_epoch(epoch, train_loader)
      File "/mnt/09a762a6-3f6e-469b-8d6d-e9fa625e24b9/USER/LuanDD/lanedet/lanedet/engine/runner.py", line 67, in train_epoch
        output = self.net(data)
      File "/mnt/09a762a6-3f6e-469b-8d6d-e9fa625e24b9/USER/LuanDD/pyenv/lib/python3.6/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
        result = self.forward(*input, **kwargs)
      File "/mnt/09a762a6-3f6e-469b-8d6d-e9fa625e24b9/USER/LuanDD/pyenv/lib/python3.6/site-packages/mmcv/parallel/data_parallel.py", line 42, in forward
        return super().forward(*inputs, **kwargs)
      File "/mnt/09a762a6-3f6e-469b-8d6d-e9fa625e24b9/USER/LuanDD/pyenv/lib/python3.6/site-packages/torch/nn/parallel/data_parallel.py", line 165, in forward
        return self.module(*inputs[0], **kwargs[0])
      File "/mnt/09a762a6-3f6e-469b-8d6d-e9fa625e24b9/USER/LuanDD/pyenv/lib/python3.6/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
        result = self.forward(*input, **kwargs)
      File "/mnt/09a762a6-3f6e-469b-8d6d-e9fa625e24b9/USER/LuanDD/lanedet/lanedet/models/nets/detector.py", line 29, in forward
        fea = self.neck(fea)
      File "/mnt/09a762a6-3f6e-469b-8d6d-e9fa625e24b9/USER/LuanDD/pyenv/lib/python3.6/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
        result = self.forward(*input, **kwargs)
      File "/mnt/09a762a6-3f6e-469b-8d6d-e9fa625e24b9/USER/LuanDD/lanedet/lanedet/models/necks/fpn.py", line 113, in forward
        assert len(inputs) >= len(self.in_channels)
    AssertionError
    

    Can you help me clarify it? This is my config

    net = dict(
        type='Detector',
    )
    
    backbone = dict(
        type='MobileNet',
        net='MobileNetV2',
        pretrained=True,
        # replace_stride_with_dilation=[False, False, False],
        out_conv=False,
        # in_channels=[64, 128, 256, 512]
    )
    
    featuremap_out_channel = 1280
    featuremap_out_stride = 32 
    
    sample_y = range(590, 270, -8)
    
    batch_size = 8
    aggregator = dict(
        type='TransConvEncoderModule',
        in_dim=1280,
        attn_in_dims=[1280, 64],
        attn_out_dims=[64, 64],
        strides=[1, 1],
        ratios=[4, 4],
        pos_shape=(batch_size, 10, 25),
    )
    
    neck=dict(
        type='FPN',
        in_channels=[64, 128, 256, 64],
        out_channels=64,
        num_outs=4,
        #trans_idx=-1,
    )
    
    loss_weights=dict(
            hm_weight=1,
            kps_weight=0.4,
            row_weight=1.,
            range_weight=1.,
        )
    
    num_lane_classes=1
    heads=dict(
        type='CondLaneHead',
        heads=dict(hm=num_lane_classes),
        in_channels=(64, ),
        num_classes=num_lane_classes,
        head_channels=64,
        head_layers=1,
        disable_coords=False,
        branch_in_channels=64,
        branch_channels=64,
        branch_out_channels=64,
        reg_branch_channels=64,
        branch_num_conv=1,
        hm_idx=2,
        mask_idx=0,
        compute_locations_pre=True,
        location_configs=dict(size=(batch_size, 1, 80, 200), device='cuda:0')
    )
    
    optimizer = dict(type='AdamW', lr=3e-4, betas=(0.9, 0.999), eps=1e-8)
    optimizer = dict(type='SGD', lr=3e-3)
    
    epochs = 40
    total_iter = (88880 // batch_size) * epochs
    total_iter = (3688 // batch_size) * epochs
    
    import math
    scheduler = dict(
        type = 'MultiStepLR',
        milestones=[15, 25, 35],
        gamma=0.1
    )
    
    seg_loss_weight = 1.0
    eval_ep = 1
    save_ep = 1 
    
    img_norm = dict(
        mean=[75.3, 76.6, 77.6],
        std=[50.5, 53.8, 54.3]
    )
    
    img_height = 320 
    img_width = 800
    cut_height = 0 
    ori_img_h = 590
    ori_img_w = 1640
    
    mask_down_scale = 4
    hm_down_scale = 16
    num_lane_classes = 1
    line_width = 3
    radius = 6
    nms_thr = 4
    img_scale = (800, 320)
    crop_bbox = [0, 270, 1640, 590]
    mask_size = (1, 80, 200)
    
    train_process = [
        dict(type='Alaug',
        transforms=[dict(type='Compose', params=dict(bboxes=False, keypoints=True, masks=False)),
        dict(
            type='Crop',
            x_min=crop_bbox[0],
            x_max=crop_bbox[2],
            y_min=crop_bbox[1],
            y_max=crop_bbox[3],
            p=1),
        dict(type='Resize', height=img_scale[1], width=img_scale[0], p=1),
        dict(
            type='OneOf',
            transforms=[
                dict(
                    type='RGBShift',
                    r_shift_limit=10,
                    g_shift_limit=10,
                    b_shift_limit=10,
                    p=1.0),
                dict(
                    type='HueSaturationValue',
                    hue_shift_limit=(-10, 10),
                    sat_shift_limit=(-15, 15),
                    val_shift_limit=(-10, 10),
                    p=1.0),
            ],
            p=0.7),
        dict(type='JpegCompression', quality_lower=85, quality_upper=95, p=0.2),
        dict(
            type='OneOf',
            transforms=[
                dict(type='Blur', blur_limit=3, p=1.0),
                dict(type='MedianBlur', blur_limit=3, p=1.0)
            ],
            p=0.2),
        dict(type='RandomBrightness', limit=0.2, p=0.6),
        dict(
            type='ShiftScaleRotate',
            shift_limit=0.1,
            scale_limit=(-0.2, 0.2),
            rotate_limit=10,
            border_mode=0,
            p=0.6),
        dict(
            type='RandomResizedCrop',
            height=img_scale[1],
            width=img_scale[0],
            scale=(0.8, 1.2),
            ratio=(1.7, 2.7),
            p=0.6),
        dict(type='Resize', height=img_scale[1], width=img_scale[0], p=1),]
        ),
        dict(type='CollectLane',
            down_scale=mask_down_scale,
            hm_down_scale=hm_down_scale,
            max_mask_sample=5,
            line_width=line_width,
            radius=radius,
            keys=['img', 'gt_hm'],
            meta_keys=[
                'gt_masks', 'mask_shape', 'hm_shape',
                'down_scale', 'hm_down_scale', 'gt_points'
            ]
        ),
        #dict(type='Resize', size=(img_width, img_height)),
        dict(type='Normalize', img_norm=img_norm),
        dict(type='ToTensor', keys=['img', 'gt_hm'], collect_keys=['img_metas']),
    ]
    
    
    val_process = [
        dict(type='Alaug',
            transforms=[dict(type='Compose', params=dict(bboxes=False, keypoints=True, masks=False)),
                dict(type='Crop',
                x_min=crop_bbox[0],
                x_max=crop_bbox[2],
                y_min=crop_bbox[1],
                y_max=crop_bbox[3],
                p=1),
            dict(type='Resize', height=img_scale[1], width=img_scale[0], p=1)]
        ),
        #dict(type='Resize', size=(img_width, img_height)),
        dict(type='Normalize', img_norm=img_norm),
        dict(type='ToTensor', keys=['img']),
    ]
    
    # dataset_path = './data/CULane'
    dataset_path = './data/Merge_data'
    # val_path = './data/CULane'
    dataset = dict(
        train=dict(
            type='CULane',
            data_root=dataset_path,
            split='train',
            processes=train_process,
        ),
        val=dict(
            type='CULane',
            data_root=dataset_path,
            split='test',
            processes=val_process,
        ),
        test=dict(
            type='CULane',
            data_root=dataset_path,
            split='test',
            processes=val_process,
        )
    )
    
    
    workers = 6
    log_interval = 100
    lr_update_by_epoch=True
    

    Thank you so much

    opened by luan1412167 4
  • CondLane如何修改检测的车道线数量?

    CondLane如何修改检测的车道线数量?

    使用测试kaist数据集测试[CondLane],最多只能检测出3条车道线,很明显的车道检测不出来,请问是限制了检测车道线数量了吗,在那里可以配置? https://github.com/Turoad/lanedet/issues/58#issuecomment-1131143127 按照此处的配置方法似乎不管用。 1559193232373910975

    opened by w-jinkui 0
  • PermissionError: [Errno 13] Permission denied: 'C:\\Users\\L00653~1\\AppData\\Local\\Temp\\tmphpklern8\\tmpkydalnxp.py'

    PermissionError: [Errno 13] Permission denied: 'C:\\Users\\L00653~1\\AppData\\Local\\Temp\\tmphpklern8\\tmpkydalnxp.py'

    Traceback (most recent call last): File "tools/detect.py", line 86, in process(args) File "tools/detect.py", line 68, in process cfg = Config.fromfile(args.config) File "d:\lanedet\lanedet\utils\config.py", line 180, in fromfile cfg_dict, cfg_text = Config._file2dict(filename) File "d:\lanedet\lanedet\utils\config.py", line 105, in _file2dict shutil.copyfile(filename, File "C:\Users\l00653465\Anaconda3\envs\lanedet\lib\shutil.py", line 264, in copyfile with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst: PermissionError: [Errno 13] Permission denied: 'C:\Users\L00653~1\AppData\Local\Temp\tmphpklern8\tmpkydalnxp.py'

    在进行训练和测试的时候都会报这个错

    opened by Sober-xz 1
  • KeyError:  Unable to find

    KeyError: Unable to find "net" key in the trained model from detect.py

    Hi Guys,

    I am using this project on conda env with gpu configured. I was trying to just run the inference files first to try it out, but I get the following error:

    Traceback (most recent call last): File "c:\CULane\lanedet\tools\detect.py", line 86, in process(args) File "c:\CULane\lanedet\tools\detect.py", line 72, in process detect = Detect(cfg) File "c:\CULane\lanedet\tools\detect.py", line 24, in init load_network(self.net, self.cfg.load_from) File "c:\culane\lanedet\lanedet\utils\net_utils.py", line 48, in load_network net.load_state_dict(pretrained_model['net'], strict=True) KeyError: 'net'

    I have used following command: $ python detect.py' 'lanedet/configs/resa/resa34_culane.py' '--img' 'image\' '--load_from' 'C:\Users\blackbug\.cache\torch\hub\checkpoints\resnet34-333f7ec4.pth' '--savedir' './vis'

    I tried to look at the model loaded from the downloaded resnet model file; it looks valid with all the trained layers, just "net" isnt part of the dictionary. Any help is appreciated! Thank you!

    opened by kkarnatak 0
Owner
TuZheng
TuZheng
Change Detection in SAR Images Based on Multiscale Capsule Network

SAR_CD_MS_CapsNet Code for the paper "Change Detection in SAR Images Based on Multiscale Capsule Network" , IEEE Geoscience and Remote Sensing Letters

Feng Gao 21 Nov 29, 2022
Tensorflow 2.x implementation of Panoramic BlitzNet for object detection and semantic segmentation on indoor panoramic images.

Deep neural network for object detection and semantic segmentation on indoor panoramic images. The implementation is based on the papers:

Alejandro de Nova Guerrero 9 Nov 24, 2022
PECOS - Prediction for Enormous and Correlated Spaces

PECOS - Predictions for Enormous and Correlated Output Spaces PECOS is a versatile and modular machine learning (ML) framework for fast learning and i

Amazon 387 Jan 04, 2023
Pytorch version of VidLanKD: Improving Language Understanding viaVideo-Distilled Knowledge Transfer

VidLanKD Implementation of VidLanKD: Improving Language Understanding via Video-Distilled Knowledge Transfer by Zineng Tang, Jaemin Cho, Hao Tan, Mohi

Zineng Tang 54 Dec 20, 2022
Official implementation for CVPR 2021 paper: Adaptive Class Suppression Loss for Long-Tail Object Detection

Adaptive Class Suppression Loss for Long-Tail Object Detection This repo is the official implementation for CVPR 2021 paper: Adaptive Class Suppressio

CASIA-IVA-Lab 67 Dec 04, 2022
Code and hyperparameters for the paper "Generative Adversarial Networks"

Generative Adversarial Networks This repository contains the code and hyperparameters for the paper: "Generative Adversarial Networks." Ian J. Goodfel

Ian Goodfellow 3.5k Jan 08, 2023
This project aims at providing a concise, easy-to-use, modifiable reference implementation for semantic segmentation models using PyTorch.

Semantic Segmentation on PyTorch (include FCN, PSPNet, Deeplabv3, Deeplabv3+, DANet, DenseASPP, BiSeNet, EncNet, DUNet, ICNet, ENet, OCNet, CCNet, PSANet, CGNet, ESPNet, LEDNet, DFANet)

2.4k Jan 08, 2023
Source code for CVPR 2020 paper "Learning to Forget for Meta-Learning"

L2F - Learning to Forget for Meta-Learning Sungyong Baik, Seokil Hong, Kyoung Mu Lee Source code for CVPR 2020 paper "Learning to Forget for Meta-Lear

Sungyong Baik 29 May 22, 2022
Object recognition using Azure Custom Vision AI and Azure Functions

Step by Step on how to create an object recognition model using Custom Vision, export the model and run the model in an Azure Function

El Bruno 11 Jul 08, 2022
PyTorch implementation of EigenGAN

PyTorch Implementation of EigenGAN Train python train.py [image_folder_path] --name [experiment name] Test python test.py [ckpt path] --traverse FFH

62 Nov 12, 2022
Demos of essentia classifiers hosted on replicate.ai

essentia-replicate-demos Demos of Essentia models hosted on replicate.ai's MTG site. The models Check our site for a complete list of the models avail

Music Technology Group - Universitat Pompeu Fabra 12 Nov 14, 2022
PyTorch implementation of 1712.06087 "Zero-Shot" Super-Resolution using Deep Internal Learning

Unofficial PyTorch implementation of "Zero-Shot" Super-Resolution using Deep Internal Learning Unofficial Implementation of 1712.06087 "Zero-Shot" Sup

Jacob Gildenblat 196 Nov 27, 2022
Repository for scripts and notebooks from the book: Programming PyTorch for Deep Learning

Repository for scripts and notebooks from the book: Programming PyTorch for Deep Learning

Ian Pointer 368 Dec 17, 2022
Robust Video Matting in PyTorch, TensorFlow, TensorFlow.js, ONNX, CoreML!

Robust Video Matting in PyTorch, TensorFlow, TensorFlow.js, ONNX, CoreML!

Peter Lin 6.5k Jan 04, 2023
Artificial intelligence technology inferring issues and logically supporting facts from raw text

개요 비정형 텍스트를 학습하여 쟁점별 사실과 논리적 근거 추론이 가능한 인공지능 원천기술 Artificial intelligence techno

6 Dec 29, 2021
The author's officially unofficial PyTorch BigGAN implementation.

BigGAN-PyTorch The author's officially unofficial PyTorch BigGAN implementation. This repo contains code for 4-8 GPU training of BigGANs from Large Sc

Andy Brock 2.6k Jan 02, 2023
Per-Pixel Classification is Not All You Need for Semantic Segmentation

MaskFormer: Per-Pixel Classification is Not All You Need for Semantic Segmentation Bowen Cheng, Alexander G. Schwing, Alexander Kirillov [arXiv] [Proj

Facebook Research 1k Jan 08, 2023
An efficient PyTorch implementation of the evaluation metrics in recommender systems.

recsys_metrics An efficient PyTorch implementation of the evaluation metrics in recommender systems. Overview • Installation • How to use • Benchmark

Xingdong Zuo 12 Dec 02, 2022
This tool converts a Nondeterministic Finite Automata (NFA) into a Deterministic Finite Automata (DFA)

This tool converts a Nondeterministic Finite Automata (NFA) into a Deterministic Finite Automata (DFA)

Quinn Herden 1 Feb 04, 2022
Enhancing Column Generation by a Machine-Learning-BasedPricing Heuristic for Graph Coloring

Enhancing Column Generation by a Machine-Learning-BasedPricing Heuristic for Graph Coloring (to appear at AAAI 2022) We propose a machine-learning-bas

YunzhuangS 2 May 02, 2022