车道线检测-lanedet

源码:https://github.com/Turoad/lanedet
这是一个常见的检测网络整合版本,目前包括的检测网络有:
在这里插入图片描述

模型论文介绍

SCNN,RESA论文介绍UFLD介绍laneNet|其它相关模型LaneATT介绍

数据集介绍

主要是CULane与TuSimple两个数据集

代码测试

这里主要测试了下基于RESA框架的resnet34模型和CULane数据集

由于电脑gpu只有一个没办法训练,只能下载CULane的测试数据集进行测试以验证模型以及代码可行性,期间也尝试运行了RESA官方代码,发现评估还需要安装编译源码,过于麻烦,放弃尝试,直接使用本集成源码即可。

测试时也遇到一些问题:

在这里插入图片描述
报了上面错误,尝试了各种办法都没有解决,没办法只能从问题根源找问题,根据下面提示发现是config.py配置文件的问题izhi

def _file2dict(filename):
        filename = osp.abspath(osp.expanduser(filename))
        check_file_exist(filename)
        if filename.endswith('.py'):
            with tempfile.TemporaryDirectory() as temp_config_dir:
                temp_config_file = tempfile.NamedTemporaryFile(
                    dir=temp_config_dir, suffix='.py')
                temp_config_name = osp.basename(temp_config_file.name)
                shutil.copyfile(filename,
                                osp.join(temp_config_dir, temp_config_name))
                #temp_module_name = osp.splitext(temp_config_name)[0]
                temp_module_name = osp.splitext("1.py")[0]
                #sys.path.insert(0, temp_config_dir)
                sys.path.insert(0, "/home/disk/qizhongpei/projects/lane-detection/resa/tmp")
                Config._validate_py_syntax(filename)
                mod = import_module(temp_module_name)
                sys.path.pop(0)
                cfg_dict = {
                    name: value
                    for name, value in mod.__dict__.items()
                    if not name.startswith('__')
                }
                # delete imported module
                del sys.modules[temp_module_name]
                # close temp file
                temp_config_file.close()

找到文件中上面代码,其实从错误地方也可以看出,本来是要产生temp临时文件,但是并没有生成文件,于是进行了每行代码测试,发现是下面代码的问题,filename是要进行配置的py文件,再复制到临时文件时出现了乱码,没办法电脑加密惹的祸,于是不进行读取临时文件,直接读取一份复制文件不也可以吗
在这里插入图片描述
迫不及待随便找了一张图片测试下,结果如下
在这里插入图片描述
What?,看到上面的图是怀疑是网络模型的问题还是自己改代码的问题,按说大佬训练的模型不至于这样啊,于是又找了几张图片测试下
在这里插入图片描述
哎,发现有的可以测到啊,首先代码改的没问题,看了数据集介绍才知道,这个数据集主要场景是直道且是城区的,所以对弯道测试效果不准,经过数据集进行测试,结果如下,准确度并不高感觉,还是要根据场景选择或者自己制作数据集训练
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于OpenCV传统数字图像处理实现车道线检测的Python代码示例: ```python import cv2 import numpy as np def lane_detection(image): # 将图像转换为灰度图 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 对图像进行高斯平滑去噪 blurred = cv2.GaussianBlur(gray, (5, 5), 0) # 使用Canny算法进行边缘提取 edges = cv2.Canny(blurred, 50, 150) # 定义ROI(感兴趣区域)的顶点坐标 height, width = edges.shape roi_vertices = [(0, height), (width/2, height/2), (width, height)] # 创建一个掩膜,将ROI以外的区域屏蔽掉 mask = np.zeros_like(edges) cv2.fillPoly(mask, np.array([roi_vertices], np.int32), 255) masked_edges = cv2.bitwise_and(edges, mask) # 使用霍夫变换检测线 lines = cv2.HoughLinesP(masked_edges, 1, np.pi/180, threshold=50, minLineLength=100, maxLineGap=50) # 在原始图像上绘制检测到的车道线 line_image = np.zeros_like(image) if lines is not None: for line in lines: x1, y1, x2, y2 = line[0] cv2.line(line_image, (x1, y1), (x2, y2), (0, 0, 255), 3) # 将车道线图像与原始图像进行叠加 result = cv2.addWeighted(image, 0.8, line_image, 1, 0) return result # 读取图像 image = cv2.imread('road.jpg') # 进行车道线检测 result = lane_detection(image) # 显示结果图像 cv2.imshow('Lane Detection', result) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这段代码实现了基于OpenCV的传统数字图像处理方法进行车道线检测。首先,将图像转换为灰度图,然后使用高斯平滑对图像进行去噪,接着使用Canny算法进行边缘提取。然后,定义感兴趣区域(ROI)并创建一个掩膜,将ROI以外的区域屏蔽掉。最后,使用霍夫变换检测线,并在原始图像上绘制检测到的车道线

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值