Open wanghanyang123 opened 6 years ago
一开始loss是收敛的(刚开始大概20左右),抱歉没打完字。。
我用mobilenet_v2训练人脸也差不多是这个情况,好奇怪,loss一直在8附近震荡。
找到问题所在了,网络太深训练的时候梯度消失导致loss无法收敛,我删除了conv11前的大概10个卷积层,自己再稍微调整下就能收敛了。@allenwangcheng
好的,我也去试试看
@wanghanyang123 你的人脸检测效果怎么样啊?
在fddb上准确率能达到97%,速度在CPU上测试能到8FPS(I7-7700)。@allenwangcheng
@wanghanyang123 能把你的train.prototxt分享给我看下吗,训练有什么trick吗?我用v2训练对小人脸检测效果很差啊,还有对数据集需要做清洗吗?
邮箱留一下,ssd在wider face上的训练和检测效果很差是正常的,因为小脸太多了,你可以看下sfd的论文和代码,适用于小脸检测。我对数据没有做任何处理,不过我尝试过对面积小于256的人脸做了mask再作为训练集,但是效果提升不明显。@allenwangcheng
@wanghanyang123 allenwangcheng@163.com,非常感谢分享
@wanghanyang123 ,你好啊,我看了你的prototxt,感觉你只用了33和11的卷积,并没有使用depthwise卷积吧,还有batch_sampler后面几个怎么参数都一样啊。。。
1.我把depthwise卷积层和separable卷积层的名字改了一下,卷积层名字中并没有出现dw和sp,本来就是只有33和11的卷积核,分别是给dw层和sp层用的。 2.我删除了bn层和scale层,你可以加上,这个没有影响。 3.batch_sampler参数和均值我用的sfd里的,因为考虑到用的是wider face数据集,这些都是计算好的了。 4.我删除了group操作(mobilenet里最重要的操作),你可以加上,这样模型就很小了,但是收敛的的速度会变慢。 @allenwangcheng
不用group就不是depth wise 卷积了吧……
王程 邮箱:allenwangcheng@163.com |
---|
签名由 网易邮箱大师 定制
在2018年07月05日 09:34,Wang 写道:
1.我把depthwise卷积层和separable卷积层的名字改了一下,卷积层名字中并没有出现dw和sp,本来就是只有33和11的卷积核,分别是给dw层和sp层用的。 2.我删除了bn层和scale层,你可以加上,这个没有影响。 3.batch_sampler参数和均值我用的sfd里的,因为考虑到用的是wider face数据集,这些都是计算好的了。 4.我删除了group操作(mobilenet里最重要的操作),你可以加上,这样模型就很小了,但是收敛的的速度会变慢。 @allenwangcheng
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
是的,不是depth wise卷积了。加上group我也试过,模型收敛变慢,准确率下降了很多,速度也没有变快很明显。所以我这个是改后的。。@allenwangcheng
哦哦,你试过用mobilenetv2的结构没,还有pooling层是你自己加的吧
王程 邮箱:allenwangcheng@163.com |
---|
签名由 网易邮箱大师 定制
在2018年07月05日 11:26,Wang 写道:
是的,不是depth wise卷积了。加上group我也试过,模型收敛变慢,准确率下降了很多,速度也没有变快很明显。所以我这个是改后的。。@allenwangcheng
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
没用mobilenet_v2,pooling层是我改的,把第一个stride=2的卷积用pooling层代替,我就是尝试是哪个环节导致模型不收敛的时候改了一下这里了的,后来我又改回来了试过,这里并没有影响,你也可以改成mobilenet中的那样。电脑里改的版本太多了,有点乱。@allenwangcheng
嗯呢,感谢感谢
王程 邮箱:allenwangcheng@163.com |
---|
签名由 网易邮箱大师 定制
在2018年07月05日 11:31,Wang 写道:
没用mobilenet_v2,pooling层是我改的,把第一个stride=2的卷积用pooling层代替,我就是尝试是哪个环节导致模型不收敛的时候改了一下这里了的,后来我又改回来了试过,这里并没有影响,你也可以改成mobilenet中的那样。电脑里改的版本太多了,有点乱。@allenwangcheng
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
@wanghanyang123 请问你最后的loss大概是多少啊?还有deploy最后的两个阈值和topk需要调整吗?
最终loss在2.5左右。大概训练20个epoch,loss降到3的时候检测效果就还算可以了。nms_threshold: 0.3, keep_top_k: 750, confidence_threshold: 0.1,这个影响不太大。@allenwangcheng
为啥我用你给我的模型训练,最后的loss最后到3.几就不下降了,测试的时候框很多,完全不work,需要调整你给我的prototxt吗
王程 邮箱:allenwangcheng@163.com |
---|
签名由 网易邮箱大师 定制
在2018年07月06日 08:55,Wang 写道:
最终loss在2.5左右。大概训练20个epoch,loss降到3的时候检测效果就还算可以了。nms_threshold: 0.3, keep_top_k: 750, confidence_threshold: 0.1,这个影响不太大。@allenwangcheng
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
我最后在测试代码里加上了仅显示概率大于0.7的框。。。 confidence_threshold: 0.1是用来生成更多的框在fddb数据集上测试用的。@allenwangcheng
@wanghanyang123 @allenwangcheng 你好,我现在也用ssd训练人脸检测,但训练起来感觉有问题,loss一直为0,能把你们的train.prototxt分享看一下吗, 刚开始用caffe,好多地方不熟
loss为0是数据集的问题,我现在用voc中提取到的行人数据来做行人识别,训练的时候也遇到了loss=0的问题,暂时没找到是哪里出了点毛病,数据集生成方式和步骤和wider face都是一样的。@cherryxiongyw
是的,我之前也遇到过loss为0的情况,具体问题记不清了,但肯定是数据集的问题
王程 邮箱:allenwangcheng@163.com |
---|
签名由 网易邮箱大师 定制
在2018年07月09日 08:57,Wang 写道:
loss为0是数据集的问题,我现在用voc中提取到的行人数据来做行人识别,训练的时候也遇到了loss=0的问题,暂时没找到是哪里出了点毛病,数据集生成方式和步骤和wider face都是一样的。@cherryxiongyw
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
@wanghanyang123 你的sfd有demo和测试效果图片方便发给我看下不,我用你的prototxt和我自己写的mobilenet_v2版本的sfd测试结果都很奇怪,框都很多,而且得分都很低,很奇怪啊,最后的训练loss看起来是正常的啊,在3左右。
@wanghanyang123 @allenwangcheng 您好,可以把您改后的train.prototxt文件发给我一份吗,谢谢。ponderme@163.com
@wanghanyang123 您好,可以把您修改的train.prototxt文件发一份吗,谢谢。972828002@qq.com
@wanghanyang123 您好,可以把您修改的train.prototxt文件发一份吗,谢谢. 875393853@qq.com
@wanghanyang123 您好,可以把您修改的train.prototxt文件发一份吗,谢谢咯! 827085762@qq.com
@hematank @jackyfriend @tianhan2014 @leadalion https://pan.baidu.com/s/1ZqA3mhMbtaO9JoFku0zRJQ
各位大家好,我在训练的时候都正常,但跑demo.py出现了以下错误,不知道是什么原因,目前还没解决,不知道大家有没有好的解决方案,或者遇到过类似问题? I1123 19:20:37.463002 13525 net.cpp:165] Memory required for data: 126091776 I1123 19:20:37.463008 13525 layer_factory.hpp:77] Creating layer conv8/dw I1123 19:20:37.463021 13525 net.cpp:100] Creating Layer conv8/dw I1123 19:20:37.463027 13525 net.cpp:434] conv8/dw <- conv7 I1123 19:20:37.463037 13525 net.cpp:408] conv8/dw -> conv8/dw F1123 19:20:38.318675 13525 cudnn_conv_layer.cpp:53] Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERROR Check failure stack trace: Aborted (core dumped) 环境是anaconda2,ubuntu16.04 @wanghanyang123 @allenwangcheng @cherryxiongyw @leadalion @chuanqi305
caffe编译问题,根据自己的cuda版本设置Makefile.config里的cudnn选项,可自行百度解决。@aureosun
loss为0是数据集的问题,我现在用voc中提取到的行人数据来做行人识别,训练的时候也遇到了loss=0的问题,暂时没找到是哪里出了点毛病,数据集生成方式和步骤和wider face都是一样的。@cherryxiongyw
loss为0,很可能是生成lmdb数据格式出现问题。可以找一哈网上解析lmdb格式的代码,自己watch一哈图片和标签吧。实际经历过,放心。
最终loss在2.5左右。大概训练20个epoch,loss降到3的时候检测效果就还算可以了。nms_threshold: 0.3, keep_top_k: 750, confidence_threshold: 0.1,这个影响不太大。@allenwangcheng
赞同,我训练1类车的模型,最好的模型,loss基本上在1.8~2.2之间吧。detect_eval能上0.82
最终loss在2.5左右。大概训练20个epoch,loss降到3的时候检测效果就还算可以了。nms_threshold: 0.3, keep_top_k: 750, confidence_threshold: 0.1,这个影响不太大。@allenwangcheng
赞同,我训练1类车的模型,最好的模型,loss基本上在1.8~2.2之间吧。detect_eval能上0.82
我训练行人检测模型detect_eval能上0.86,然而并没有什么卵用,检测的结果还是不是很理想。
@wanghanyang123 @allenwangcheng 你好,我现在也用ssd训练人脸检测,但训练起来感觉有问题,loss一直为0,能把你们的train.prototxt分享看一下吗, 刚开始用caffe,好多地方不熟
ssd里面loss值一直为0的话是数据问题,当前batch的gt的数目为0,可以看一下代码或者论文里都有解释
@wanghanyang123 请教三个问题:
@xcls1117
@wanghanyang123 谢谢你的回答,关于问题1,如果你的网络输入不是1:1,那么是否跟随网络输入比例最好呢
在fddb上准确率能达到97%,速度在CPU上测试能到8FPS(I7-7700)。@allenwangcheng
您好,请问您可以分享一下您训练用的caffe工程吗,非常感谢!邮箱:18305154989@163.com
@wanghanyang123 你好,我用您的mobilenet训练出来了人体和人头两个类别的模型。但是在做摄像头检测的时候,经常会有误检测的情况,模型的loss大概在1.2左右。一些大面积的灰黑色会误检成人体,还有一张写了字的纸也会被识别成人体,请问有什么办法可以解决这个问题吗
@destroyhang 这是分类的问题,简单的解决办法可适当提升分类Loss权重,加一些容易出现误检的图片并带标注(由于标准ssd的mining方式,这张图片必须有人脸才会对应产生负样本并在训练的时候mining).复杂的解决办法需要修改ssd的一系列训练代码,caffe可操作性太差.
我现在用您的mobilenet+ssd网络训练,只修改num_classes,也有loss在8附近震荡这个情况,不知道是什么问题。