1.环境配置
参考文献:
安装mmdetection并测试demo
mmdetection安装&训练VOC格式数据
mmdetection训练pascal_voc格式的数据集
Mmdetection的安装和使用
mmdetection 商汤开源库 FasterRCNN 训练自己的数据集 VOC2007, 結果可視化 2019
mmdetection使用方法(使用mmdetection搭建faster-RCNN模型)
conda activate open-mmlab
2.1 测试图片
python demo/image_demo.py demo/demo.jpg configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
2.2 测试视频
python demo/test_vedio.py configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth --file demo/demo.mp4 --out demo/res.mp4
将标注数据转化为voc或coco格式
#从开始训练模型
python tools/train.py configs/pascal_voc/faster_rcnn_r50_fpn_1x_voc0712.py
python tools/train.py configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py
#当训练中断,可从断点权重文件处继续训练
python tools/train.py configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py --resume-from="work_dirs/faster_rcnn_r50_fpn_1x_coco/epoch_11.pth"
python demo/image_demo.py demo/demo_img/1.jpg configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py work_dirs/faster_rcnn_r50_fpn_1x_coco/epoch_12.pth
python tools/test.py configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py work_dirs/faster_rcnn_r50_fpn_1x_coco0707/latest.pth --out demo/res0803/result_1.pkl --eval bbox
出现报错
*** Error in `python’: corrupted size vs. prev_size: 0x00007fc860655850 *** 等
代码
sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
查看缓存情况
free
解决:改变import顺序
查看原程序tests/data/VOCdevkit/VOC2007/ImageSets/Main中内容,是存在test.txt文件的。原因是下载数据集不全,只下载了trainval部分,没有下载test部分
train.py: error: unrecognized arguments: --resume_from=work_dirs/faster_rcnn_r50_fpn_1x_coco/epoch_11.pth
参数名字写错
应–resume-from
解决:导入包顺序调整,将import torch放在前面即可。
原因是使用的磁盘或者文件夹下没有剩余空间
解决方案:
查看磁盘空间,我的问题是/home下使用率为100%,解决方案比较简单粗暴,删除了部分没有用的文件,释放部分空间。
df -h
更多操作可参考:
提示"No space left on device"错误的解决方法
No space left on device 解决Linux系统磁盘空间满的办法
Traceback (most recent call last):
File “/usr/local/bin/pip”, line 6, in
from pip._internal import main
ImportError: No module named _internal’
查看了许多解决方案都没解决,后来:
python -m pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html
在pip前面加上 python -m 就可以了
根据报错,应该是在 .cv2的原因, opencv-python的版本号不匹配,卸载了opencv-python,重新安装了更低版本的opencv-python
路径:mmdet/models/detectors/base.py
def show_result(self,
img,
result,
score_thr=0.3,
bbox_color=(72, 101, 241),
text_color=(72, 101, 241),
mask_color=None,
thickness=2,
font_size=13,
win_name='',
show=False,
wait_time=0,
# out_file=None,
out_file='out.jpg'):
#原來
# if not (show or out_file):
# return img
if show or out_file:
return img
这个问题困扰我很久很久,刚开始以为导入包的顺序问题,但是没有解决,最终修改image_demo 代码:添加导入cv2 和torch包,虽然没有用到,但是导入这两个包就可以了。
from argparse import ArgumentParser
import cv2
import torch
from mmdet.apis import inference_detector, init_detector,show_result_pyplot
export LD_PRELOAD="/usr/lib64/libjemalloc.so"
参考:https://blog.csdn.net/weixin_37871174/article/details/108631603
当使用voc格式的数据集训练且类别只有一类时, mmdet/datasets/voc.py 中
class VOCDataset(XMLDataset):
CLASSES = ('Taxi',)
后面要加‘,’,不然会报错。
在训练过程中出现此问题,刚开始没有问题 是可以正常训练的
(pid=3654) RuntimeError: cuDNN error: CUDNN_STATUS_MAPPING_ERROR
(pid=3654) /pytorch/aten/src/ATen/native/cuda/IndexKernel.cu:84: operator(): block: [0,0,0], thread: [0,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && "index out of bounds"` failed.
(pid=3654) /pytorch/aten/src/ATen/native/cuda/IndexKernel.cu:84: operator(): block: [0,0,0], thread: [3,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && "index out of bounds"` failed.
(pid=3654) /pytorch/aten/src/ATen/native/cuda/IndexKernel.cu:84: operator(): block: [0,0,0], thread: [96,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && "index out of bounds"` failed.
(pid=3654) /pytorch/aten/src/ATen/native/cuda/IndexKernel.cu:84: operator(): block: [0,0,0], thread: [97,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && "index out of bounds"` failed.
(pid=3654) /pytorch/aten/src/ATen/native/cuda/IndexKernel.cu:84: operator(): block: [0,0,0], thread: [98,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && "index out of bounds"` failed.
进行了两处修改:
(1)报错的方法中传进来一个列表 此别表位于cpu上,其他部分位于gpu,将列表转换为tensor并在gpu上
index=torch.Tensor(index).cuda(cuda_id)
(2).数组索引越界导致的cudnn错误
查看输出发现在,在取index中数据时,提供的索引值有时会大于index的长度,因此报错 ,修改此部分代码。
参考:https://blog.csdn.net/qq_41866626/article/details/116737731
mmdetection训练自己的数据集–CVAT标注文件导出coco格式及相关操作
voc数据集下载
下载地址:https://pjreddie.com/projects/pascal-voc-dataset-mirror/
参考链接:VOC2007、2012数据集音速下载及训练、验证、测试集划分使用说明(附代码)
数据集简介:Pascal voc2007数据集
首先产生pkl文件,pkl文件需要建立一个文件夹eval
python tools/test.py configs/pascal_voc/faster_rcnn_r50_fpn_1x_voc0712.py work_dirs/latest.pth --out=eval/result.pkl
计算mAP
python tools/voc_eval.py eval/result.pkl configs/pascal_voc/faster_rcnn_r50_fpn_1x_voc0712.py
conda list看一下安装的包,结果报错y
https://blog.csdn.net/weixin_42236288/article/details/100854878?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242