当前位置: 代码迷 >> 综合 >> fasterrcnn+matlab+cuda训练过程中错误
  详细解决方案

fasterrcnn+matlab+cuda训练过程中错误

热度:84   发布时间:2023-12-27 03:30:47.0

1 、一定要仔细检查自己的显卡和cpu,显卡一定是英伟达的,支持cuda,AMD真是累

2、

错误使用 textread (line 162)未找到文件。出错 imdb_from_voc (line 										46)  imdb.image_ids = textread(sprintf(VOCopts.imgsetpath, image_set), '%s');
出错 Dataset.voc2007_trainval (line 11)dataset.imdb_train    = {  imdb_from_voc(devkit, 'trainval', '2007', use_flip) };
出错 script_faster_rcnn_VOC2007_ZF (line 29)dataset= Dataset.voc2007_trainval(dataset, 'train', use_flipped);      

四个TXT命名不对
/faster_rcnn-master\datasets\VOCdevkit2007\logos\ImageSets\Main
该路径下txt改为以下格式:
在这里插入图片描述

3、

运行faster_rcnn-master\faster_rcnn_build.m


出错情况如下:
错误使用 mexLINK : fatal error LNK1181: 无法打开输入文				   件“nms_gpu_mex.o”
出错 nvmex (line 48)
eval(mexCommandLine);
出错 faster_rcnn_build (line 23)
nvmex('functions/nms/nms_gpu_mex.cu', 'bin');

视自己情况修改位置在functions\nms\nvmex.m
在这里插入图片描述
4、

Error using mexLIBCMT.lib(crt0dat.obj) : error LNK2005: _amsg_exit 已经在MSVCRT.lib(MSVCR120.dll) 中定义LIBCMT.lib(crt0dat.obj) : error LNK2005: _initterm_e 已经在MSVCRT.lib(MSVCR120.dll) 中定义LIBCMT.lib(winapisupp.obj) : error LNK2005: __crtCaptureCurrentContext已经在 MSVCRT.lib(MSVCR120.dll) 中定义LIBCMT.lib(winapisupp.obj) : error LNK2005: __crtCapturePreviousContext已经在 MSVCRT.lib(MSVCR120.dll) 中定义LIBCMT.lib(winapisupp.obj) : error LNK2005: __crtTerminateProcess 已经在MSVCRT.lib(MSVCR120.dll) 中定义LIBCMT.lib(winapisupp.obj) : error LNK2005: __crtUnhandledException 已经在 MSVCRT.lib(MSVCR120.dll) 中定义LIBCMT.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)"(?terminate@@YAXXZ) 已经在 MSVCRT.lib(MSVCR120.dll) 中定义LIBCMT.lib(crt0init.obj) : error LNK2005: __xi_a 已经在MSVCRT.lib(cinitexe.obj) 中定义LIBCMT.lib(crt0init.obj) : error LNK2005: __xi_z 已经在MSVCRT.lib(cinitexe.obj) 中定义LIBCMT.lib(crt0init.obj) : error LNK2005: __xc_a 已经在MSVCRT.lib(cinitexe.obj) 中定义LIBCMT.lib(crt0init.obj) : error LNK2005: __xc_z 已经在MSVCRT.lib(cinitexe.obj) 中定义LIBCMT.lib(winxfltr.obj) : error LNK2005: __CppXcptFilter 已经在MSVCRT.lib(MSVCR120.dll) 中定义LIBCMT.lib(mlock.obj) : error LNK2005: _lock 已经在MSVCRT.lib(MSVCR120.dll) 中定义LIBCMT.lib(mlock.obj) : error LNK2005: _unlock 已经在MSVCRT.lib(MSVCR120.dll) 中定义
正在创建库 G:\faster_rcnn-master\bin\nms_gpu_mex.lib 和对象G:\faster_rcnn-master\bin\nms_gpu_mex.expLINK : warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用/NODEFAULTLIB:libraryLINK : warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突;请使用/NODEFAULTLIB:libraryG:\faster_rcnn-master\bin\nms_gpu_mex.mexw64 : fatal error LNK1169: **找到一个或多个多重定义的符号**Error in nvmex (line 48)eval(mexCommandLine);Error in faster_rcnn_build (line 23)nvmex('functions/nms/nms_gpu_mex.cu', 'bin');

这个错误是lib库冲突了,解决办法是修改mex命令

mex -outdir bin nms_gpu_mex.o -L"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64" -lcudart LINKFLAGS="$LINKFLAGS /NODEFAULTLIB:LIBCMT.LIB"

5、
在这里插入图片描述
方法:此电脑中更新cuda驱动,记住是驱动不是cuda版本
参考链接:https://blog.csdn.net/dzkd1768/article/details/69525610

6、修改faster_rcnn-master\experiments\script_faster_rcnn_demo.m的model_dir为你下载的模型,然后运行。
注:运行一分钟左右出现闪退情况,vgg网络太大,显存吃不消
修改demo.m 注释第一行,改为
在这里插入图片描述

出错情况参考:
https://www.cnblogs.com/zjutzz/p/5983160.html
https://blog.csdn.net/dzkd1768/article/details/69525610
https://blog.csdn.net/dzkd1768/article/details/69525610

cpu训练版本参考
https://blog.csdn.net/weixin_39566131/article/details/100335321
https://blog.csdn.net/qq_39550159/article/details/80404224

训练过程中我的错误在这里插入图片描述
很多情况是数据集的问题,老师给了一个示例让我检验是模型还是数据集的问题,

图片大小和xml一定要相同,我的电脑解压图片有些莫名的发生旋转
数据集的问题,重新标注了图片,生成xml

7、
排了半天唉

MEX 文件 'D:\tian ying biao\faster_rcnn-master\bin\nms_gpu_mex.mexw64' 无效: 缺少依赖共享库:
'D:\tian ying biao\faster_rcnn-master\bin\nms_gpu_mex.mexw64' 需要 'cudart64_75.dll'。出错 nms (line 37)pick = nms_gpu_mex(single(boxes)', double(overlap));出错 Faster_RCNN_Train.do_proposal_test>boxes_filter (line 24)aboxes{i} = aboxes{i}(nms(aboxes{i}, nms_overlap_thres, use_gpu), :);出错 Faster_RCNN_Train.do_proposal_test (line 7)aboxes                      = boxes_filter(aboxes, model_stage.nms.per_nms_topN, model_stage.nms.nms_overlap_thres,model_stage.nms.after_nms_topN, conf.use_gpu);出错 script_faster_rcnn_VOC2007_ZF>@(x,y)Faster_RCNN_Train.do_proposal_test(conf_proposal,model.stage1_rpn,x,y) (line 47)
dataset.roidb_train        	= cellfun(@(x, y) Faster_RCNN_Train.do_proposal_test(conf_proposal, model.stage1_rpn, x, y), dataset.imdb_train,
dataset.roidb_train, 'UniformOutput', false);出错 script_faster_rcnn_VOC2007_ZF (line 47)
dataset.roidb_train        	= cellfun(@(x, y) Faster_RCNN_Train.do_proposal_test(conf_proposal, model.stage1_rpn, x, y), dataset.imdb_train,
dataset.roidb_train, 'UniformOutput', false)

解决方法 https://dl.pconline.com.cn/download/1610016.html

放进去,在这里插入图片描述
把缺失的拷到bin目录下

8、
错误使用 containers.Map/values,此容器中不存在指定的键。出错 roidb_from_voc>attach_proposals (line 172)

gt_classes = class_to_id.values({voc_rec.objects(valid_objects).class})

答:你标注的目标种类与datasets/VOCdevkit2007/VOCcode/VOC2007/VOCiniy.m中指定的目标种类不匹配。比如你只在VOCinit.m中写了一个目标类型标签‘car’,但你标记结果Annotations/中某个.xml中不小心标注两种对象object如’car’和’person’。这样机会报错,解决方法是重新标记那个.xml对应的图片,去掉多余的目标种类。
9
错误使用 fprintf
文件标识符无效。使用 fopen 生成有效的文件标识符。

出错 imdb_eval_voc (line 63)
fprintf(fid, ‘%s %f %.3f %.3f %.3f %.3f\n’, image_ids{i}, bbox(j,end), bbox(j,1:4));

出错 fast_rcnn_test (line 171)
res(model_ind) = imdb.eval_func(cls, aboxes{model_ind}, imdb, opts.cache_name, opts.suffix);

出错 Faster_RCNN_Train.do_fast_rcnn_test (line 6)
mAP = fast_rcnn_test(conf, imdb, roidb, …

出错 script_faster_rcnn_VOC2007_ZF (line 55)
opts.mAP = Faster_RCNN_Train.do_fast_rcnn_test(conf_fast_rcnn, model.stage1_fast_rcnn, dataset.imdb_test, dataset.roidb_test);

datasets文件组织不对,我的是缺了results文件
10
多看原作者任少卿github,很多问题都有。

训练步骤参考小咸鱼

11在这里插入图片描述
在这里插入图片描述

  相关解决方案