鸽了很久的小物体目标检测代码
https://github.com/LT1st/SmallObstacleDetection/tree/main/code#readme
Pytorch: Small Obstacle
TODO
Training
Follow below steps below to train your model:
- Input arguments: (see full input arguments via python train.py --help):
usage: train.py [-h] [--backbone {resnet,xception,drn,mobilenet}]
[--out-stride OUT_STRIDE] [--dataset {pascal,coco,cityscapes}]
[--use-sbd] [--workers N] [--base-size BASE_SIZE]
[--crop-size CROP_SIZE] [--sync-bn SYNC_BN]
[--freeze-bn FREEZE_BN] [--loss-type {ce,focal}] [--epochs N]
[--start_epoch N] [--batch-size N] [--test-batch-size N]
[--use-balanced-weights] [--lr LR]
[--lr-scheduler {poly,step,cos}] [--momentum M]
[--weight-decay M] [--nesterov] [--no-cuda]
[--gpu-ids GPU_IDS] [--seed S] [--resume RESUME]
[--checkname CHECKNAME] [--ft] [--eval-interval EVAL_INTERVAL]
[--no-val][--mode]
代码注意事项
- 数据集需要在mypath中替换
- DRN的网络pretrain需要在新的webroot下载,原链接失效
webroot = 'http://dl.yf.io/drn/'
- saver的函数有问题,
- small_obstacle的append路徑需要改一下
- writer的输入channel错误,需要按照mode来修改
输入为: 训练 pair , channel , 图像分辨 x*y
- 检查所有default没有的args,防止漏参数
depth & mode 是重点 -
- 作者的readme是空的,需要自己探索
- condalist是本人运行环境,可以跑
论文数据集 | 代码用的 |
---|
cityscapes:pretrain | LF/CS | small_obstacle:fine tune | LF/CS |
- utils/helper.py用于数据加载,有点阴间。dataloader是抄的,有条纹方法残留。阅读比较成熟的LF等代码会有帮助。
- 部分代码batchsize写死了,2,得手动换一下。看到的都改了
- 代码没写完WDNMD,matchTemplate全项目都没用到。squeezeseg没有相关代码。
- 文中context指的是: RGB+lidar
- 部分算法使用jupyter notebook写好了再移植,如遇bug,可以试试notebook找一下
路径问题
- misc.py
- 尽量使用mypath.Path.db_root_dir(‘small_obstacle’)获取路径
- 不清楚具体路径是作者私有数据集结构与开放不同,还是传递结构不同,还是写错了
- 注意在系统路径中append当前目录
其他
baseline源于 Deeplabv3Plus-Pytorch
TODO
-[x] 搞清楚用的这几个数据集 搞不明白,耦合严重,LF\CS数据集改来的,感觉没改完(如标签加载那边)。其他的数据集没写。自己假设一个。 -[x] 做一个文件结构,整明白具体方法 -[X] SOD数据集跑起来 -[x] 训练流程明确一下
日志
报错 | 错因 | 解决 |
---|
无法使用linux运行test | 验证集数据无法加载 | 未知问题, | 给模型输入一张图片时[1, 256, 1, 1]报错 | BN操作的要求 | 法一 1036张图片,手动调整BS,防止其余1 | | | 法二 dataloader的drop_last=True | 无法使用val,总是最后一个epoch报错 | 没写好,有时间debug | | 数据集读取报错 | F:\Small_Obstacle_Dataset\train\seq_5\image 的27之前没有label | 写了一个删除脚本,去掉没有label的img和没有img的label | windows删除没有权限 | os.remove权限不够 | 在属性-安全中调整 | | | os.chmod(i, stat.S_IRWXU) |
訓練流程
融合(二选一)
使用点云
- -[x] lidar檢測 照着写一下,传统算法那个
- -[x] 檢測結果过滤 角度上的过滤大障碍物x。道路分割过滤道路外障碍物。
- -[x] 检测结果 点云转换 到图像平面
- -[x] 图像平面 高斯模糊 为置信度图 (论文中说是作为第四通道RGBA)。但这样下一步是做什么的呢?
- -[x] 置信度图转化为RGB??
- -[x] 获取深度图
使用深度图
- -[x] 利用标签,给深度图mask,获取ROI区域的深度点
- -[x] 执行高斯模糊
- -[x] 作为第四维度拼接 (发现数据集BUG,标签缺失太多,无法对齐)
训练
- -[x] RGB数据集预训练(注意这里是RGB,脚本为
python train.py --dataset catyscapes
同时,参考作者的几个sh文件,需要用两阶段调整学习率的方法训练 2. -[x] 加入深度,在small_obs上训练
python train.py --dataset small_obstacle --depth
- linux服务器上的完整脚本的格式如下:
cd /data1/data_test/small_obstacle_discovery-master-linux; mkdir /root/.cache/;mkdir /root/.cache/torch/; mkdir /root/.cache/torch/hub/; mkdir /root/.cache/torch/hub/checkpoints/; cp ../drn_d_54-0e0534ff.pth /root/.cache/torch/hub/checkpoints/drn_d_54-0e0534ff.pth ; pip install tensorboardX;python train.py --epochs 80 --batch-size 16 --mode train --dataset cityscapes --logsFlag Cityscapes --no-val
推理流程
檢測(生成置信度圖)(由lidar转换为置信度)
使用点云
- -[x] lidar檢測(这个必须在匹配之前跑,这里在原始点云文件的5维上额外加了障碍物判定的四个维度)
- -[ ] 道路分割(lidar或rgb都可以,来不及了)
- -[ ] 檢測結果过滤(道路结果作为mask,点乘即可)
- -[x] 检测结果 点云转换 到图像平面
- -[x] 图像平面 高斯模糊 为置信度图 (论文中说是作为第四通道RGBA)。但这样下一步是做什么的呢?
- -[x] 置信度图转化为RGB??
- -[x] 获取深度图
使用深度图
- -[x] 利用标签,给深度图mask,获取ROI区域的深度点
- -[x] 执行高斯模糊(没给参数)
- -[x] 作为当前帧置信度图
- -[ ] 需要加入大概率的随机擦除,不然过拟合严重(相当于是label泄露),依赖lidar数据很重
跟蹤(置信度的时间传播)
- -[x] 选取先前帧中的ROI区域
- -[x] 当前帧中进行模板匹配
- -[ ] 利用惯性导航数据加速搜索???
- -[ ] 得到修正后的置信度图
分割
- -[x] 置信度图结合RGB输入,執行分割
数据集
small obstacle dataset (SOD)(IIIT)
标签 | 名称 |
---|
0 | 道路外 | 1 | 道路 | >1 | 障碍物,9个具体类 | 5 | 箱子 |
Lost and Found (lnf)(LF)
成熟了,网上多
cityscapes
成熟了,网上多
2022.2.26状态
发现但是没解决的BUG
BUG | 尝试的解决方法 | 跳过方式 |
---|
代码在windows上ok,但是在linux的val部分,会卡死在最后一个epoch | 放弃最后一个epoch | 使用–no-val,模型训练完了再验证 | epoch=1时。网络结构的BN操作报错 | | dataloader的drop_last=True 或者 计算好epoch,不落单 | 高斯模糊参数未知 | 消融实验没发现有啥变化 | 未知 | small obstacle的数据集加载部分,速度可优化50%以上(参考LF数据集) | | | 多卡计算速度异常,两张卡速度和一张差不多 | | | cityscapes预训练来不及做 | | 用的是LNF做预训练 | 为了算法可读性,保留了冗余变量 | | | 环带检测跳变的计算距离中使用什么范数好 | 没做实验 | | 环带检测跳变中,边界点未处理(两处) | | | 功能来不及整合,点云中的障碍物检测(utils/lidar.py) | | | 功能来不及整合,历史帧匹配(utils/match_Template.py) | | | 功能不完善,历史帧匹配(utils/match_Template.py)需要多模板匹配多目标,模板匹配需要多尺度、NMS等提升acc,需要改写为卷积提升效率 | | |
|