-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
is it faster and less calculation by the mobilenet on datknet ? #1
Comments
e... |
你好,我在darknet上试了一下,好像darknet的卷积层不支持group分组,没有类似caffe中分组卷积的功能。请问你有什么解决办法吗?如何可以让darknet支持卷积时分组? |
对的,darknet是没有group的操作的,你得自己改下,我是自己改的卷积训练的。 mobilenet的速度和计算是取决于这个结构本身的计算方式,参数量少了很多。我刚也上传了mobilenetYOLO的结果,速度是有提高的,大概提高一倍。 |
@zunzhumu 你是用im2col+gemm实现group conv吗,还是传统的conv。我在darknet中尝试用im2col+gemm实现depthwise conv,但没成功,训练时nan了。能否参考下你的group conv实现? |
@zunzhumu 你好,我本来也想尝试在darknet上将yolo和mobilenet结合的,但是卷积层的修改失败了,不知道如何可以实现depthwise conv的功能。请问可不可以上传一下你group conv 的实现呢,希望可以参考一下,谢谢了! |
@Sunmyfong 是阿,loop group就可以实现了阿,我是按照caffe的实现的,你可以参考caffe的,因为我是在公司实习的,代码不适合上传,不好意思 |
@vicwer 推荐按照caffe的操作实现,虽然效率不高但好理解,后面可以再继续优化。其实不难的, 细心点就好了,因为在公司实习,代码不能上传,望理解,加油! |
@zunzhumu 恩恩,理解理解,谢谢!那我也跟着caffe上的实现试试吧,请问大神修改卷积层花了多长时间啊?修改的卷积层是否支持GPU运算? |
@vicwer 改很快,验证是否可行花了点时间,有GPU的,因为我要训练,CPU和GPU都支持, |
@zunzhumu 感谢你的分享,我给了star。google公开了ssd+mobilenet,我就在想YOLO+mobilenet应该也快了。我刚用你提供的mobilenet_yolo_voc.cfg跑YOLO2,发现生成的model还是很大。pb文件有236M,这比tiny YOLO的模型还大。楼主的模型大多呢?是不是我做错了什么 |
@aguang1201 谢谢的star, mobilenetYOLO的大小是130多兆。因为原来yolov2前面的预训练模型darknet19_448是80M,后面的OD部分有120M左右,Mobilenet的大小是18M左右,所以看出来相对于SSDmobilenet, YOLOmobiletnet的权重减少并没有那么明显,所以通常我们根据特定的应用场景把后面的层也替换了,或者压缩了,后面的太冗余了。当然mobilent本身还可以稀疏化进一步加速的。 |
@aguang1201 光Mobilenet加到YOLO里面,weights还是要比tiny-yolo大的多,我们不用mobilenet纯剪枝的方法已经把weights降到比tiny-yolo还小得多了。所以加了mobilenet不代表完事大吉了,后面也要考虑压缩的 |
@zunzhumu 感谢你的解答,很详细。确实还需要压缩和剪枝。很好的做法,谢谢! |
@aguang1201 没事,不客气。现在有很多的新的小的网络出来,毕竟压缩加速是工业上的一个最重要的部分。你可以看看shufflenet。加油 |
@zunzhumu 你推荐的shufflenet太棒了。孙剑老师的新作。我现在在做深度学习在移动端的落地应用。shufflenet比MobileNet更适合移动端。我要开动学习了。加油!!! |
@Sunmyfong @aguang1201 各位大神都在darknet上实现了group conv吗?可否指导我一二。。。 |
@Sunmyfong 我也正在自己尝试着改,现在遇到一点疑惑可不可以请教一下?在gemm的函数实现中需不需要有什么改动,我本来对比着caffe看gemm的实现,但是把我弄晕了,直接在conv 层加group进行for 循环还是gemm得实现中还需要改动呢? |
@vicwer cpu模式可以不改gemm的,gpu的话也可以不改,但是效率感人。github上有不用im2col+gemm的gpu版实现可以参考下,也可以参考下tf里面的depthwise实现💪 |
@Sunmyfong 可不可以给一下github上不用im2col+gemm的gpu版实现的地址,我在网站上没有找到这个。。。谢谢了! |
@Sunmyfong 优化后的group卷积在darknet上的加速能达到多少?用的是tf的?我还没考虑优化,之前想了自己的实现方案,但还没有时间去实验测试,反正几个GPU堆起来感觉速度挺快的啊,后面网络设计完了就要开始优化cpu的group卷积了 |
给个具体的,cpu i5 -4460. |
@Sunmyfong ,这里的conv指的是正常的卷积层?depth是group conv 的?还是两个都是group conv的,然后depth表示的是优化后的group conv? |
conv是指正常卷积, depthwise:在cpu模式下是按照group conv搬过来的,没做啥优化;GPU模式下是自己重写的。 |
@Sunmyfong 好的,我知道了,比较看重CPU的优化,毕竟做产品,后面自己优化下吧。GPU的我改了几个GPU并行的,所以速度影响不大。 |
@zunzhumu @Sunmyfong 您好,我改好mobilenet-tiny-yolo的的网络结构训练voc的数据集,loss一直在23左右震荡,下不去,请问你训练的时候有什么trick吗?谢谢 |
@TonyMou 我的实验结果如下:
|
@TonyMou @Sunmyfong Sunmyfong的实验很对,已经说明了问题了。mobilentet的结构并不好,至少在yolo上简单的换一下的效果很不好,mobilenet我也稍微做了下减枝,就是吧全是0的删掉了,减了2到3兆,精度下降1%,可能finetune的epoch少了。在我的实验情况下,我觉得mobilenet的特征提取的效果不佳,不准备在上面花时间了,准备训练新的结构。 |
@Sunmyfong 您好,谢谢你的回复,你在这方面已经做了很多工作了。 |
@zunzhumu http://blog.csdn.net/hrsstudy/article/details/65644517 |
@zunzhumu 我计算YOLOmobiletnet后面的OD部分大概188M左右,请问您所说的是后面三个conv3X3和一个conv1x1吗?这样看来SSDmobilenet的权重要比YOLOmobiletnet要小,请问SSDmobilenet您计算的权重大小是多少呢?谢谢! |
@abbyjako YOLOmobilenet后面的OD部分的大小是120多M,后面是三个3x3和一个1x1。这是由于yolo本身前面的预训练模型就很小,性能也好,所以把直接替换成Mobilenet的话,权重减得并不多。SSD本身的权重比较集中在前面,所以换掉后权重比较小,大概四五十M吧,具体我没做,有别人做过,你可以直接用caffe替换掉SSD的前面部分试试。 |
@zunzhumu @Sunmyfong 各位有yolo提高精度的方法吗?如果把yolo和resnet这个样的网络结合一下,会不会有什么提升效果吗? |
各位,你们训练或者fine-tune的时候是在darknet下进行的吗?有没有人想转移到caffe下训练呢?? |
@yytzjgsu 您好,我也是用Im2col+gemm实现的dw_conv,用了预训练模型,但是训练的时候loss到12左右就不再下降了,方便加QQ交流吗?我的QQ:1040806514,谢谢! |
@zunzhumu 你好。我用了你的mobilenet预训练模型去做imagenet分类,结果发现所有图片的输入都会产生同样的输出。请问您的预训练模型参数保存有什么特殊的修改么?加载dw_conv层参数时顺序是 bias->BN参数->weights的顺序么? |
@yytzjgsu 参数没有特殊保存,就是darknet的 |
@zunzhumu |
@vmaxxwuxiaomin 可能你实现的问题,或者有些处理不一样,不过NAN很奇怪,首先你得保证你的是可以训练成功的,自己搭建个网络在cifa上训练看看能不能收敛,结果还不错。如果可以的话,就用我的weights fine-tune几个epochs试试 |
搞定了,感谢! |
@vmaxxwuxiaomin 恭喜,weights可以用吧?你可以试试我压缩了一大半的权重的mobilenet训练yolo看看效果。 |
你好,大神,我是一个研究生菜鸟,能给个联系方式吗,邮箱,微信,qq都行,研究方向是yolo的压缩,跟您请教些问题 @Sunmyfong |
你好,能分享下group_layer吗,或者可以加您好友吗,跟你请教下学习下,微信,qq都可以,不方便放微信,qq,邮箱也可以,谢谢啦 @vmaxxwuxiaomin |
@csaimd |
@zunzhumu |
@vmaxxwuxiaomin我压缩mobilenet是做分类的,目标检测的也是可以压缩的 |
@vmaxxwuxiaomin 您好,我的用于物体检测的网络训练之后同样遇到了不能检测出物体的问题,avg loss大概在20左右,请问您那边是怎么解决的?谢谢 |
求问.weights文件是怎么可视化的? |
@MengXinChengXuYuan 自己写的一个函数,好像作者在darknet下实现了可视化,我改写了下,在convolutional.c文件中的最后一个函数好像有,你试着读读这段代码 |
作者你好 |
@LamHoCN 你好,很高兴和你交流,最近忙着毕业很久没有做这块的工作了,的确传统的for处理group会比较慢,一般优化用tensorflow里面的实现的方式,你单独自己实现了一个的确很厉害,可以交流交流,你写的kernel的速度跟for group相比,速度大概提高了多少倍? |
@LamHoCN 另一方面我的是整个kernel的prune的,没有处理成稀疏矩阵的那种形式,因为只有稀疏矩阵稀疏要一定程度才会有加速效果。直接kernel级别的prune mobilenet相对于原mobilenet速度上会有将近一倍的提升,剩下的再将group conv优化后再嵌入式上应该会运行得很好的。我的QQ是1312042684,欢迎交流 |
@Sunmyfong 您好,请问您的Recall值是如何计算的呀,我按照yolo本身的recall,修改完detector中的路径后,所有的recall都没有,然后您的Recall、值是计算的测试集的平均recall吗,谢谢 |
@TonyMou 您好!我训练的时候也出现了loss函数在23左右就下不去的情况,请问你是如何解决的呢? |
@wuxiaomin0110 你好请问你是怎么解决的呢?我按照你给的那个git和博客去训练了。但是不知道怎么用上@zunzhumu提供的weights和cfg。网络一直是发散状态。 |
@Sunmyfong 你好,我替换了yolo-tiny的全部卷积之后大概5M,不用pre-trained model,loss一直在4、5之间震荡,测试的效果不太好(我只检测人),请问你用了pre-trained model之后效果如何,如果有用的话能否给一个pre-trained model?这个训练起来太耗资源了,我可能无法在imagenet上训练。 |
@zunzhumu 您好,darknet是不是已经支持分组卷积了呀。 |
is it faster and less calculation by the mobilenet on datknet ?
and...
thank you very much. You got my star.
The text was updated successfully, but these errors were encountered: