turoad / clrnet Goto Github PK
View Code? Open in Web Editor NEWPytorch implementation of our paper "CLRNet: Cross Layer Refinement Network for Lane Detection" (CVPR2022 Acceptance).
License: Apache License 2.0
Pytorch implementation of our paper "CLRNet: Cross Layer Refinement Network for Lane Detection" (CVPR2022 Acceptance).
License: Apache License 2.0
Hello,
Really thanks a lot for much useful contribution. Currently with sample culane test dataset detection working fine.
Previously I have tested lanedet with custom image size modifying config params as below.
configs/condlane/resnet101_culane.py
net = dict(
type='Detector',
)
backbone = dict(
type='ResNetWrapper',
resnet='resnet101',
pretrained=True,
replace_stride_with_dilation=[False, False, False],
out_conv=False,
in_channels=[64, 128, 256, 512]
)
ori_img_h = 2048
ori_img_w = 2448
bbox_h_start = 1024
crop_bbox = [0, bbox_h_start, ori_img_w, ori_img_h]
sample_y = range(ori_img_h, bbox_h_start, -8)
batch_size = 1
aggregator = dict(
type='TransConvEncoderModule',
in_dim=2048,
attn_in_dims=[2048, 256],
attn_out_dims=[256, 256],
strides=[1, 1],
ratios=[4, 4],
pos_shape=(batch_size, 10, 25),
)
neck=dict(
type='FPN',
in_channels=[256, 512, 1024, 256],
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)
epochs = 16
total_iter = (88880 // batch_size) * epochs
import math
scheduler = dict(
type = 'MultiStepLR',
milestones=[8, 14],
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
mask_down_scale = 4
hm_down_scale = 16
num_lane_classes = 1
line_width = 3
radius = 6
nms_thr = 4
img_scale = (800, 320)
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='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 = 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 = 12
log_interval = 1000
lr_update_by_epoch=True
Similarly, I am trying to modify configs/clrnet/clr_resnet101_culane.py but unable to get output.
net = dict(type='Detector', )
backbone = dict(
type='ResNetWrapper',
resnet='resnet101',
pretrained=True,
replace_stride_with_dilation=[False, False, False],
out_conv=False,
)
num_points = 72
max_lanes = 4
# sample_y = range(589, 230, -20)
ori_img_h = 2048
ori_img_w = 2448
bbox_h_start = 1024
crop_bbox = [0, bbox_h_start, ori_img_w, ori_img_h]
sample_y = range(ori_img_h, bbox_h_start, -8)
batch_size = 12
heads = dict(type='CLRHead',
num_priors=192,
refine_layers=3,
fc_hidden_dim=64,
sample_points=36)
iou_loss_weight = 2.
cls_loss_weight = 2.
xyt_loss_weight = 0.2
seg_loss_weight = 1.0
work_dirs = "work_dirs/clr/r101_culane"
neck = dict(type='FPN',
in_channels=[512, 1024, 2048],
out_channels=64,
num_outs=3,
attention=False)
test_parameters = dict(conf_threshold=0.4, nms_thres=50, nms_topk=max_lanes)
epochs = 20
# batch_size = 1
optimizer = dict(type='AdamW', lr=0.3e-3) # 3e-4 for batchsize 8
total_iter = (88880 // batch_size) * epochs
scheduler = dict(type='CosineAnnealingLR', T_max=total_iter)
eval_ep = 3
save_ep = 10
img_norm = dict(mean=[103.939, 116.779, 123.68], std=[1., 1., 1.])
img_w = 800
img_h = 320
cut_height = 270
train_process = [
dict(
type='GenerateLaneLine',
transforms=[
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(name='Resize',
parameters=dict(size=dict(height=img_h, width=img_w)),
p=1.0),
dict(name='HorizontalFlip', parameters=dict(p=1.0), p=0.5),
dict(name='ChannelShuffle', parameters=dict(p=1.0), p=0.1),
dict(name='MultiplyAndAddToBrightness',
parameters=dict(mul=(0.85, 1.15), add=(-10, 10)),
p=0.6),
dict(name='AddToHueAndSaturation',
parameters=dict(value=(-10, 10)),
p=0.7),
dict(name='OneOf',
transforms=[
dict(name='MotionBlur', parameters=dict(k=(3, 5))),
dict(name='MedianBlur', parameters=dict(k=(3, 5)))
],
p=0.2),
dict(name='Affine',
parameters=dict(translate_percent=dict(x=(-0.1, 0.1),
y=(-0.1, 0.1)),
rotate=(-10, 10),
scale=(0.8, 1.2)),
p=0.7),
dict(name='Resize',
parameters=dict(size=dict(height=img_h, width=img_w)),
p=1.0),
],
),
dict(type='ToTensor', keys=['img', 'lane_line', 'seg']),
]
val_process = [
dict(type='GenerateLaneLine',
transforms=[
dict(name='Resize',
parameters=dict(size=dict(height=img_h, width=img_w)),
p=1.0),
],
training=False),
dict(type='ToTensor', keys=['img']),
]
dataset_path = './data/CULane'
dataset_type = 'CULane'
dataset = dict(train=dict(
type=dataset_type,
data_root=dataset_path,
split='train',
processes=train_process,
),
val=dict(
type=dataset_type,
data_root=dataset_path,
split='test',
processes=val_process,
),
test=dict(
type=dataset_type,
data_root=dataset_path,
split='test',
processes=val_process,
))
workers = 10
log_interval = 500
# seed = 0
num_classes = 4 + 1
ignore_label = 255
bg_weight = 0.4
lr_update_by_epoch = False
Any response much appreciated.
Regards,
Ajay
I have changed the code to "self.net = MMDataParallel(self.net,device_ids=[self.cfg.gpus]).cuda(self.cfg.gpus)", but there is a mistake
Validate: 0%| | 0/70 [05:49<?, ?it/s]
Traceback (most recent call last):
File "/media/SSD/user1/SR/CLR/CLRNet-main/clrnet/engine/runner.py", line 143, in validate
output = self.net.module.heads.get_lanes(output)
File "/media/SSD/user1/SR/CLR/CLRNet-main/clrnet/models/heads/clr_head.py", line 500, in get_lanes
keep = keep[:num_to_keep]
RuntimeError: CUDA error: an illegal memory access was encountered
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
expecing for your answer
Thanks for your great work! Some questions confused me:
2.In section "Refinement structure", "Pt is the parameter of lane prior (start point coordinate x, y and angle θ)", does it mean you only refine (x,y,theta) and only use (x,y,theta) to extract lane features, and use ROIalign to extract 1x1xC feature at Np sampled positions?
In section "Refinement structure", "The refinement Rt takes the Pt as input to get the ROI lane features and then performs two FC layers to get the refined parameter Pt", does it mean you only use the ROI lane features to predict x,y,theta? and which feature do you use to predict confidence, length, and N offsets? and what's the shape of the output(multi head output or just use FC layers to get M x (2+1+3+N))?
in section "ROIGather structure", "For ROI features of L1, L2, we concatenate the ROI features of previous layers to enhance feature representations. Convolutions are performed on the extracted ROI features to gather nearby features for each lane pixel.", along which dimension do you concatenate the features and what's the shape of the convolution kernel.
in section "Inference", "Our method can also be nms-free if we use the one-to-one assignment, i.e., set the top-k = 1.", does it mean assign the top-1 predicted lane when training or just select one predicted lane by classification score when inference?
hope the code coming soon
I want to test the model with my own image and I am wondering how to pre-process the image. Thanks
Hi,
There is no tools as $CLRNET_ROOT/tools/lane_evaluation. Please check.
Excuse me, I have another question about Tensorrt.
Do you export the pytorch model to onnx model and then use tensorrt to speed up? If so, which opset of onnx do you use, and as I know ROIAlign is not supported in tensorrt for now no matter what the version of onnx opset is.
Hope for your answer.
Originally posted by @ChenzrMax in #4 (comment)
Thank you very much for your great work!
However, I found that the test result of test7_cross was always 0 in the process of reproduction. I don't know if it is my configuration or the model itself that is not good for the cross scene.I would appreciate it if you could give me some advice, thanks again.
Hi, I write the inference code by myself, but it does not show any results. Is it because of pre-processing of the image?
Appreciate any help?
import torch
import cv2
from clrnet.engine.runner import Runner
from clrnet.utils.config import Config
cfg = Config.fromfile("configs/clrnet/clr_resnet18_tusimple.py")
cfg.gpus = 1
cfg.load_from = 'tusimple_r18.pth'
cfg.resume_from = ''
cfg.finetune_from = ''
cfg.seed = 1234
def pre_process_image(path):
img_w = 800
img_h = 320
cut_height = 160
image = cv2.imread(path)
image = image[cut_height:, :, :]
image = cv2.resize(image, (img_w, img_h))
image = torch.Tensor([image])
image = image.permute(0, 3, 1, 2)
return image
runner = Runner(cfg)
runner.net.eval()
image = pre_process_image("data/tusimple/clips/0531/1492626477558988952/8.jpg")
data = image.cuda()
with torch.no_grad():
output = runner.net(data)
lanes = runner.net.module.heads.get_lanes(output)
lanes returns a empty list.
您好,感谢分享code。我在安装你的环境是出现了以下错误,如有时间希望你能提供帮助,万分感谢。
我的环境是:Python 3.8.13
pip 包:
Package Version
brotlipy 0.7.0
certifi 2022.5.18.1
cffi 1.15.0
charset-normalizer 2.0.4
cryptography 37.0.1
idna 3.3
mkl-fft 1.3.1
mkl-random 1.2.2
mkl-service 2.4.0
numpy 1.22.3
Pillow 9.0.1
pip 21.2.4
pycparser 2.21
pyOpenSSL 22.0.0
PySocks 1.7.1
requests 2.27.1
setuptools 61.2.0
six 1.16.0
terminaltables 3.1.0
torch 1.8.0
torchvision 0.9.0
typing_extensions 4.1.1
urllib3 1.26.9
wheel 0.37.1
nvcc -V;
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Apr_24_19:10:27_PDT_2019
Cuda compilation tools, release 10.1, V10.1.168
/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/setuptools/installer.py:27: SetuptoolsDeprecationWarning: setuptools.installer is deprecated. Requirements should be satisfied by a PEP 517 installer.
warnings.warn(
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.8
creating build/lib.linux-x86_64-3.8/clrnet
copying clrnet/init.py -> build/lib.linux-x86_64-3.8/clrnet
creating build/lib.linux-x86_64-3.8/clrnet/utils
copying clrnet/utils/tusimple_metric.py -> build/lib.linux-x86_64-3.8/clrnet/utils
copying clrnet/utils/init.py -> build/lib.linux-x86_64-3.8/clrnet/utils
copying clrnet/utils/config.py -> build/lib.linux-x86_64-3.8/clrnet/utils
copying clrnet/utils/net_utils.py -> build/lib.linux-x86_64-3.8/clrnet/utils
copying clrnet/utils/logger.py -> build/lib.linux-x86_64-3.8/clrnet/utils
copying clrnet/utils/recorder.py -> build/lib.linux-x86_64-3.8/clrnet/utils
copying clrnet/utils/visualization.py -> build/lib.linux-x86_64-3.8/clrnet/utils
copying clrnet/utils/lane.py -> build/lib.linux-x86_64-3.8/clrnet/utils
copying clrnet/utils/registry.py -> build/lib.linux-x86_64-3.8/clrnet/utils
copying clrnet/utils/llamas_metric.py -> build/lib.linux-x86_64-3.8/clrnet/utils
copying clrnet/utils/llamas_utils.py -> build/lib.linux-x86_64-3.8/clrnet/utils
copying clrnet/utils/culane_metric.py -> build/lib.linux-x86_64-3.8/clrnet/utils
creating build/lib.linux-x86_64-3.8/clrnet/models
copying clrnet/models/init.py -> build/lib.linux-x86_64-3.8/clrnet/models
copying clrnet/models/registry.py -> build/lib.linux-x86_64-3.8/clrnet/models
creating build/lib.linux-x86_64-3.8/clrnet/datasets
copying clrnet/datasets/tusimple.py -> build/lib.linux-x86_64-3.8/clrnet/datasets
copying clrnet/datasets/init.py -> build/lib.linux-x86_64-3.8/clrnet/datasets
copying clrnet/datasets/llamas.py -> build/lib.linux-x86_64-3.8/clrnet/datasets
copying clrnet/datasets/culane.py -> build/lib.linux-x86_64-3.8/clrnet/datasets
copying clrnet/datasets/registry.py -> build/lib.linux-x86_64-3.8/clrnet/datasets
copying clrnet/datasets/base_dataset.py -> build/lib.linux-x86_64-3.8/clrnet/datasets
creating build/lib.linux-x86_64-3.8/clrnet/engine
copying clrnet/engine/scheduler.py -> build/lib.linux-x86_64-3.8/clrnet/engine
copying clrnet/engine/init.py -> build/lib.linux-x86_64-3.8/clrnet/engine
copying clrnet/engine/optimizer.py -> build/lib.linux-x86_64-3.8/clrnet/engine
copying clrnet/engine/runner.py -> build/lib.linux-x86_64-3.8/clrnet/engine
copying clrnet/engine/registry.py -> build/lib.linux-x86_64-3.8/clrnet/engine
creating build/lib.linux-x86_64-3.8/clrnet/ops
copying clrnet/ops/init.py -> build/lib.linux-x86_64-3.8/clrnet/ops
copying clrnet/ops/nms.py -> build/lib.linux-x86_64-3.8/clrnet/ops
creating build/lib.linux-x86_64-3.8/clrnet/models/necks
copying clrnet/models/necks/init.py -> build/lib.linux-x86_64-3.8/clrnet/models/necks
copying clrnet/models/necks/fpn.py -> build/lib.linux-x86_64-3.8/clrnet/models/necks
copying clrnet/models/necks/pafpn.py -> build/lib.linux-x86_64-3.8/clrnet/models/necks
creating build/lib.linux-x86_64-3.8/clrnet/models/utils
copying clrnet/models/utils/init.py -> build/lib.linux-x86_64-3.8/clrnet/models/utils
copying clrnet/models/utils/roi_gather.py -> build/lib.linux-x86_64-3.8/clrnet/models/utils
copying clrnet/models/utils/dynamic_assign.py -> build/lib.linux-x86_64-3.8/clrnet/models/utils
copying clrnet/models/utils/seg_decoder.py -> build/lib.linux-x86_64-3.8/clrnet/models/utils
creating build/lib.linux-x86_64-3.8/clrnet/models/nets
copying clrnet/models/nets/init.py -> build/lib.linux-x86_64-3.8/clrnet/models/nets
copying clrnet/models/nets/detector.py -> build/lib.linux-x86_64-3.8/clrnet/models/nets
creating build/lib.linux-x86_64-3.8/clrnet/models/backbones
copying clrnet/models/backbones/resnet.py -> build/lib.linux-x86_64-3.8/clrnet/models/backbones
copying clrnet/models/backbones/init.py -> build/lib.linux-x86_64-3.8/clrnet/models/backbones
copying clrnet/models/backbones/dla34.py -> build/lib.linux-x86_64-3.8/clrnet/models/backbones
creating build/lib.linux-x86_64-3.8/clrnet/models/heads
copying clrnet/models/heads/init.py -> build/lib.linux-x86_64-3.8/clrnet/models/heads
copying clrnet/models/heads/clr_head.py -> build/lib.linux-x86_64-3.8/clrnet/models/heads
creating build/lib.linux-x86_64-3.8/clrnet/models/losses
copying clrnet/models/losses/init.py -> build/lib.linux-x86_64-3.8/clrnet/models/losses
copying clrnet/models/losses/accuracy.py -> build/lib.linux-x86_64-3.8/clrnet/models/losses
copying clrnet/models/losses/lineiou_loss.py -> build/lib.linux-x86_64-3.8/clrnet/models/losses
copying clrnet/models/losses/focal_loss.py -> build/lib.linux-x86_64-3.8/clrnet/models/losses
creating build/lib.linux-x86_64-3.8/clrnet/datasets/process
copying clrnet/datasets/process/init.py -> build/lib.linux-x86_64-3.8/clrnet/datasets/process
copying clrnet/datasets/process/generate_lane_line.py -> build/lib.linux-x86_64-3.8/clrnet/datasets/process
copying clrnet/datasets/process/process.py -> build/lib.linux-x86_64-3.8/clrnet/datasets/process
copying clrnet/datasets/process/transforms.py -> build/lib.linux-x86_64-3.8/clrnet/datasets/process
running egg_info
creating clrnet.egg-info
writing clrnet.egg-info/PKG-INFO
writing dependency_links to clrnet.egg-info/dependency_links.txt
writing requirements to clrnet.egg-info/requires.txt
writing top-level names to clrnet.egg-info/top_level.txt
writing manifest file 'clrnet.egg-info/SOURCES.txt'
/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/utils/cpp_extension.py:369: UserWarning: Attempted to use ninja as the BuildExtension backend but we could not find ninja.. Falling back to using the slow distutils backend.
warnings.warn(msg.format('we could not find ninja.'))
reading manifest file 'clrnet.egg-info/SOURCES.txt'
adding license file 'LICENSE'
writing manifest file 'clrnet.egg-info/SOURCES.txt'
running build_ext
building 'clrnet.ops.nms_impl' extension
creating build/temp.linux-x86_64-3.8
creating build/temp.linux-x86_64-3.8/clrnet
creating build/temp.linux-x86_64-3.8/clrnet/ops
creating build/temp.linux-x86_64-3.8/clrnet/ops/csrc
gcc -pthread -B /home/qzy/anaconda3/envs/clrnet/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include -I/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -I/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/TH -I/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/THC -I/home/qzy/anaconda3/envs/clrnet/include/python3.8 -c ./clrnet/ops/csrc/nms.cpp -o build/temp.linux-x86_64-3.8/./clrnet/ops/csrc/nms.o -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE="gcc" -DPYBIND11_STDLIB="libstdcpp" -DPYBIND11_BUILD_ABI="cxxabi1011" -DTORCH_EXTENSION_NAME=nms_impl -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
In file included from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/ATen/Parallel.h:140:0,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/utils.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/nn/cloneable.h:5,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/nn.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/all.h:13,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/extension.h:4,
from ./clrnet/ops/csrc/nms.cpp:30:
/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/ATen/ParallelOpenMP.h:83:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
#pragma omp parallel for if ((end - begin) >= grain_size)
^
In file included from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/c10/core/Device.h:5:0,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/c10/core/Allocator.h:6,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/ATen/ATen.h:7,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/types.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader_options.h:4,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/base.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/stateful.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/all.h:8,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/extension.h:4,
from ./clrnet/ops/csrc/nms.cpp:30:
./clrnet/ops/csrc/nms.cpp: In function ‘std::vectorat::Tensor nms_forward(at::Tensor, at::Tensor, float, long unsigned int)’:
./clrnet/ops/csrc/nms.cpp:40:41: warning: ‘at::DeprecatedTypeProperties& at::Tensor::type() const’ is deprecated: Tensor.type() is deprecated. Instead use Tensor.options(), which in many cases (e.g. in a constructor) is a drop-in replacement. If you were using data from type(), that is now available from Tensor itself, so instead of tensor.type().scalar_type(), use tensor.scalar_type() instead and instead of tensor.type().backend() use tensor.device(). [-Wdeprecated-declarations]
#define CHECK_CUDA(x) AT_ASSERTM(x.type().is_cuda(), #x " must be a CUDA tensor")
^
/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/c10/util/Exception.h:225:39: note: in definition of macro ‘C10_EXPAND_MSVC_WORKAROUND’
#define C10_EXPAND_MSVC_WORKAROUND(x) x
^
/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/c10/util/Exception.h:244:34: note: in expansion of macro ‘C10_UNLIKELY’
#define C10_UNLIKELY_OR_CONST(e) C10_UNLIKELY(e)
^
/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/c10/util/Exception.h:291:7: note: in expansion of macro ‘C10_UNLIKELY_OR_CONST’
if (C10_UNLIKELY_OR_CONST(!(cond))) {
^
/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/c10/util/Exception.h:484:32: note: in expansion of macro ‘TORCH_INTERNAL_ASSERT’
C10_EXPAND_MSVC_WORKAROUND(TORCH_INTERNAL_ASSERT(cond, VA_ARGS));
^
./clrnet/ops/csrc/nms.cpp:40:23: note: in expansion of macro ‘AT_ASSERTM’
#define CHECK_CUDA(x) AT_ASSERTM(x.type().is_cuda(), #x " must be a CUDA tensor")
^
./clrnet/ops/csrc/nms.cpp:42:24: note: in expansion of macro ‘CHECK_CUDA’
#define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x)
^
./clrnet/ops/csrc/nms.cpp:53:5: note: in expansion of macro ‘CHECK_INPUT’
CHECK_INPUT(boxes);
^
In file included from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/ATen/Tensor.h:3:0,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/ATen/Context.h:4,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/ATen/ATen.h:9,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/types.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader_options.h:4,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/base.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/stateful.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/all.h:8,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/extension.h:4,
from ./clrnet/ops/csrc/nms.cpp:30:
/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/ATen/core/TensorBody.h:303:30: note: declared here
DeprecatedTypeProperties & type() const {
^
In file included from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/c10/core/Device.h:5:0,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/c10/core/Allocator.h:6,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/ATen/ATen.h:7,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/types.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader_options.h:4,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/base.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/stateful.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/all.h:8,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/extension.h:4,
from ./clrnet/ops/csrc/nms.cpp:30:
./clrnet/ops/csrc/nms.cpp:40:41: warning: ‘at::DeprecatedTypeProperties& at::Tensor::type() const’ is deprecated: Tensor.type() is deprecated. Instead use Tensor.options(), which in many cases (e.g. in a constructor) is a drop-in replacement. If you were using data from type(), that is now available from Tensor itself, so instead of tensor.type().scalar_type(), use tensor.scalar_type() instead and instead of tensor.type().backend() use tensor.device(). [-Wdeprecated-declarations]
#define CHECK_CUDA(x) AT_ASSERTM(x.type().is_cuda(), #x " must be a CUDA tensor")
^
/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/c10/util/Exception.h:225:39: note: in definition of macro ‘C10_EXPAND_MSVC_WORKAROUND’
#define C10_EXPAND_MSVC_WORKAROUND(x) x
^
/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/c10/util/Exception.h:244:34: note: in expansion of macro ‘C10_UNLIKELY’
#define C10_UNLIKELY_OR_CONST(e) C10_UNLIKELY(e)
^
/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/c10/util/Exception.h:291:7: note: in expansion of macro ‘C10_UNLIKELY_OR_CONST’
if (C10_UNLIKELY_OR_CONST(!(cond))) {
^
/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/c10/util/Exception.h:484:32: note: in expansion of macro ‘TORCH_INTERNAL_ASSERT’
C10_EXPAND_MSVC_WORKAROUND(TORCH_INTERNAL_ASSERT(cond, VA_ARGS));
^
./clrnet/ops/csrc/nms.cpp:40:23: note: in expansion of macro ‘AT_ASSERTM’
#define CHECK_CUDA(x) AT_ASSERTM(x.type().is_cuda(), #x " must be a CUDA tensor")
^
./clrnet/ops/csrc/nms.cpp:42:24: note: in expansion of macro ‘CHECK_CUDA’
#define CHECK_INPUT(x) CHECK_CUDA(x); CHECK_CONTIGUOUS(x)
^
./clrnet/ops/csrc/nms.cpp:54:5: note: in expansion of macro ‘CHECK_INPUT’
CHECK_INPUT(idx);
^
In file included from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/ATen/Tensor.h:3:0,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/ATen/Context.h:4,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/ATen/ATen.h:9,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/types.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader_options.h:4,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/base.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader/stateful.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data/dataloader.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/data.h:3,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include/torch/all.h:8,
from /home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/extension.h:4,
from ./clrnet/ops/csrc/nms.cpp:30:
/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/ATen/core/TensorBody.h:303:30: note: declared here
DeprecatedTypeProperties & type() const {
^
/usr/bin/nvcc -I/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include -I/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -I/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/TH -I/home/qzy/anaconda3/envs/clrnet/lib/python3.8/site-packages/torch/include/THC -I/home/qzy/anaconda3/envs/clrnet/include/python3.8 -c ./clrnet/ops/csrc/nms_kernel.cu -o build/temp.linux-x86_64-3.8/./clrnet/ops/csrc/nms_kernel.o -D__CUDA_NO_HALF_OPERATORS -D__CUDA_NO_HALF_CONVERSIONS_ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options '-fPIC' -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE="_gcc" -DPYBIND11_STDLIB="_libstdcpp" -DPYBIND11_BUILD_ABI="_cxxabi1011" -DTORCH_EXTENSION_NAME=nms_impl -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_70,code=compute_70 -gencode=arch=compute_70,code=sm_70 -std=c++14
nvcc fatal : Path to libdevice library not specified
error: command '/usr/bin/nvcc' failed with exit code 1
我把setup.py中的: ext_modules=get_extensions(),注释掉不会报错。
Thank you very much for your excellent work.
I used your network to train and test on my own data set, but found that the effect was not very good. In many cases, only one line was detected in a graph, as shown in the figure. We are sure that we have changed max_LANES to be large enough.
I don't think it should be like this. This is different from the conclusion in the paper. Could you give me some suggestions?
cd $CLRNET_ROOT/tools/lane_evaluation
, but the dir is not exists.
I have trained the CLRNet with single gpu and multi gpus.
The performance of multi gpus is badly.
I don't know why
请问bottom_priors_nums和left_priors_nums是指什么?
I have run the DLA version validate code on culane dataset, however the FPS is about 8.3 it/s, my inference machine is V100.
您好,冒昧打扰一下,我配好环境跑测试时,clrnet/utils/culane_metric.py文件中eval_predictions函数 predictions = load_culane_data(pred_dir, list_path) 这里会报错找不到文件,我想了解的是,pred_dir应该是我们临时创建的那个工作文件夹work_dir,里面这些文件都是还不存在的,我们的预测数据是从该函数获取嘛
作者您好,很感谢你们的杰出工作。
我利用lanedet上的detect.py对自己的数据(已进行resize为culane数据集的大小)进行测试(使用的是您已经训练好的模型culane_resnet18),发现效果不是很好。
图1中弯曲的曲线并没有被识别出来。图2中只识别出来中间的两条线(应该要是4条)且在远端时未能模拟到弯曲的部分。
我觉得不应该是这样的效果,之前也做过condlanenet的culane_resnet18的测试,目前来看condlanenet要好于本次的效果,这与paper中的结论有出入。
当然,我觉得应该是我还有什么地方没注意到才出现上述现象,希望您能指出我可能存在的问题。
这里补充我测试视频的来源,下面是哔哩哔哩的一个视频网站,我截取的是前2分钟的视频,将其分为一张张图片同时resize为(1640,590)即culane的数据图片大小,然后使用detect.py(backbone为culane_res18)对图片生成结果。
如果您能够在忙碌的科研生活中抽空测试一下,我将不胜感激。同时,希望能够看到您的测试结果,以及希望您能够指出您在该视频测试过程中可能遇到的跟我一样的问题。若能够得到您的回答,我感激不尽。
https://www.bilibili.com/video/BV1eF411x75u?spm_id_from=333.999.0.0
请问是否支持将模型导出为onnx格式呢?期待回复
hi, It's a great work. But when I understand the source code, I'm confused with the meaning of "target_yxtl[:, -1] -= (predictions_starts - target_starts)" in clr_head.py 389 line. Can you help me?
Hello, thanks for your solid work.
I am wondering how long it takes to train the CLRNet model, and what type of GPU it needs.
Hello,
Thanks for the very useful repository, am able to test run code with the custom dataset.
But observed a few issues as shown in the following result images.
Any suggestion, much appreciated.
Regards,
Ajay
Hello, thank you for your very valuable work. I would like to ask whether the sample_point parameter in CLRhead in config is used to control the number of sample points for ground truth input?
Dear author, if i changed the predictions[:3] for 3 categories classisfication which the third label is background, how can i change the nms code in clr_head/get_lanes? Do i need to change the nms_kernel.cu such as prop size?
I am not really sure how this occurred but this really happened. When iterating the tusimple dataset, it failed and raised expections as below(both on this repo and lanedet repo):
I also have a question about the description of Tusimple dataset in both this repo and lanedet:
but there are just three such labels in Tusimple, I am not sure whether I downloaded Tusimple completely or not.
Many Thanks if you respond to my questions!
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\bin\nvcc" -c ./clrnet/ops/csrc\nms_kernel.cu -o build\temp.win-amd64-3.9\Release./clrnet/ops/csrc\nms_kernel.obj -IH:\ana\envs\swinunet\lib\site-packages\torch\include -IH:\ana\envs\swinunet\lib\site-packages\torch\include\torch\csrc\api\include -IH:\ana\envs\swinunet\lib\site-packages\torch\include\TH -IH:\ana\envs\swinunet\lib\site-packages\torch\include\THC "-IC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include" -IH:\ana\envs\swinunet\include -IH:\ana\envs\swinunet\Include "-IH:\Microsoft\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31326\ATLMFC\include" "-IH:\Microsoft\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31326\include" "-IH:\Windows Kits\10\include\10.0.19041.0\ucrt" "-IH:\Windows Kits\10\include\10.0.19041.0\shared" "-IH:\Windows Kits\10\include\10.0.19041.0\um" "-IH:\Windows Kits\10\include\10.0.19041.0\winrt" "-IH:\Windows Kits\10\include\10.0.19041.0\cppwinrt" -Xcudafe --diag_suppress=dll_interface_conflict_dllexport_assumed -Xcudafe --diag_suppress=dll_interface_conflict_none_assumed -Xcudafe --diag_suppress=field_without_dll_interface -Xcudafe --diag_suppress=base_class_has_different_dll_interface -Xcompiler /EHsc -Xcompiler /wd4190 -Xcompiler /wd4018 -Xcompiler /wd4275 -Xcompiler /wd4267 -Xcompiler /wd4244 -Xcompiler /wd4251 -Xcompiler /wd4819 -Xcompiler /MD -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=nms_impl -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_52,code=compute_52 -gencode=arch=compute_52,code=sm_52 --use-local-env
nms_kernel.cu
H:/ana/envs/swinunet/lib/site-packages/torch/include\ATen/core/builtin_function.h(110): warning #20236-D: pragma "diag_suppress" is deprecated, use "nv_diag_suppress" instead
H:/ana/envs/swinunet/lib/site-packages/torch/include\ATen/core/builtin_function.h(117): warning #20236-D: pragma "diag_default" is deprecated, use "nv_diag_default" instead
H:/ana/envs/swinunet/lib/site-packages/torch/include\ATen/core/builtin_function.h(110): warning #20236-D: pragma "diag_suppress" is deprecated, use "nv_diag_suppress" instead
H:/ana/envs/swinunet/lib/site-packages/torch/include\ATen/core/builtin_function.h(117): warning #20236-D: pragma "diag_default" is deprecated, use "nv_diag_default" instead
H:\ana\envs\swinunet\lib\site-packages\torch\include\pybind11\cast.h(1429): error: too few arguments for template template parameter "Tuple"
detected during instantiation of class "pybind11::detail::tuple_caster<Tuple, Ts...> [with Tuple=std::pair, Ts=<T1, T2>]"
(1507): here
H:\ana\envs\swinunet\lib\site-packages\torch\include\pybind11\cast.h(1503): error: too few arguments for template template parameter "Tuple"
detected during instantiation of class "pybind11::detail::tuple_caster<Tuple, Ts...> [with Tuple=std::pair, Ts=<T1, T2>]"
(1507): here
2 errors detected in the compilation of "./clrnet/ops/csrc/nms_kernel.cu".
error: command 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\bin\nvcc.exe' failed with exit code 1
Hi,
thank you for uploading the code!
Unfortunately, the URLs for the pretrained weights are not correct... Could you update the links?
Dear Authors,
Could you please include an inference script?
I tried these steps in google colab to run the model, but I got an error while running setup.py
git clone https://github.com/Turoad/clrnet
cd clrnet/
pip install -r requirements.txt
apt install -y ninja-build
python setup.py build develop
and the error is:
No CUDA runtime is found, using CUDA_HOME='/usr/local/cuda'
running build
running build_py
running egg_info
writing clrnet.egg-info/PKG-INFO
writing dependency_links to clrnet.egg-info/dependency_links.txt
writing requirements to clrnet.egg-info/requires.txt
writing top-level names to clrnet.egg-info/top_level.txt
adding license file 'LICENSE'
writing manifest file 'clrnet.egg-info/SOURCES.txt'
running build_ext
building 'clrnet.ops.nms_impl' extension
Traceback (most recent call last):
File "setup.py", line 116, in <module>
zip_safe=False)
File "/usr/local/lib/python3.7/dist-packages/setuptools/__init__.py", line 153, in setup
return distutils.core.setup(**attrs)
File "/usr/lib/python3.7/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/lib/python3.7/distutils/dist.py", line 966, in run_commands
self.run_command(cmd)
File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/usr/lib/python3.7/distutils/command/build.py", line 135, in run
self.run_command(cmd_name)
File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/usr/local/lib/python3.7/dist-packages/setuptools/command/build_ext.py", line 79, in run
_build_ext.run(self)
File "/usr/local/lib/python3.7/dist-packages/Cython/Distutils/old_build_ext.py", line 186, in run
_build_ext.build_ext.run(self)
File "/usr/lib/python3.7/distutils/command/build_ext.py", line 340, in run
self.build_extensions()
File "/usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py", line 708, in build_extensions
build_ext.build_extensions(self)
File "/usr/local/lib/python3.7/dist-packages/Cython/Distutils/old_build_ext.py", line 195, in build_extensions
_build_ext.build_ext.build_extensions(self)
File "/usr/lib/python3.7/distutils/command/build_ext.py", line 449, in build_extensions
self._build_extensions_serial()
File "/usr/lib/python3.7/distutils/command/build_ext.py", line 474, in _build_extensions_serial
self.build_extension(ext)
File "/usr/local/lib/python3.7/dist-packages/setuptools/command/build_ext.py", line 202, in build_extension
_build_ext.build_extension(self, ext)
File "/usr/lib/python3.7/distutils/command/build_ext.py", line 534, in build_extension
depends=ext.depends)
File "/usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py", line 524, in unix_wrap_ninja_compile
cuda_post_cflags = unix_cuda_flags(cuda_post_cflags)
File "/usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py", line 423, in unix_cuda_flags
cflags + _get_cuda_arch_flags(cflags))
File "/usr/local/lib/python3.7/dist-packages/torch/utils/cpp_extension.py", line 1561, in _get_cuda_arch_flags
arch_list[-1] += '+PTX'
IndexError: list index out of range
Hi, I want to know where can I find the code for this paper
CLRNet/clrnet/models/nets/detector.py
Line 19 in 51e082d
I always get the following error when I want to compile the evaluation tools using "make" command
#############################
CXX src/counter.cpp
In file included from include/lane_compare.hpp:4,
from include/counter.hpp:4,
from src/counter.cpp:8:
include/spline.hpp:6:10: fatal error: opencv2/core.hpp: No such file or directory
6 | #include <opencv2/core.hpp>
| ^~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:40: build/src/counter.o] Error 1
#################################
Although the Opencv C++ requirements are reinstalled, the mentioned error has always been raised.
Is there any solution to this error?
Dear Author
Description of trained model: 10 epoch on tusimple dataset, accuracy 95.5%
I did some experiments on this trained model with my own images and images of CULane, it performed badly:
my own image:
image in CULane
I am wondering why it's performing like this. Is increasing the number of epoch useful to solve this?
您好,非常棒的工作!想请教一下,你们有只使用 topk=1策略(或者说匈牙利匹配)时候的准确率结果吗,tusimple和culane两个数据集的,(希望回复的时候可以标上所用的backbone),点赞,谢谢
I have a question why once load dataset,later load the dataset all the time while do not load another dataset which path i have change
RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED
even if reduced batch size to 1, still shows up this error
CLRNet/clrnet/engine/runner.py
Line 119 in 51e082d
Hello @Turoad . Thanks for sharing your code and for the great work you have accomplished. In another issue, you mentioned that you have written custom operators for roialign, possibly grid_sample, etc to convert the torch model to onnx. Could you please share your code for the same? Thanks in advance!
keyerrot:'mask_path'
the sample does not have the part of ’mask_path'
当我运行setup.py安装nms_impl等包时,一直报错:
/usr/include/c++/7/bits/basic_string.tcc:1067:16: error: cannot call member function ‘void std::basic_string<_CharT, _Traits, _Alloc>::_Rep::_M_set_sharable() [with _CharT = char16_t; _Traits = std::char_traits<char16_t>; _Alloc = std::allocator<char16_t>]’ without object
__p->_M_set_sharable();
~~~~~~~~~^~
网上说是因为CUDA10.1的问题,但因为是公用服务器没有权限修改CUDA版本,也无法安装nvcc,请问有其他解决方法吗?
Hi! Thank you so much for this valuable work for the community. I would like to ask, in line 73 of clrnet/model/head/clrhead.py, is the role of self.cls_modules to judge whether the priority contains lane line samples?
Thank you for releasing your code. How to cache the culane dataset in datasets/culane.py?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.