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