wllkk / yolov5-nnie

yolov5s nnie
MIT License
45 stars 14 forks source link

能否提供下详细修改的torch代码,也就是网络模型。 #1

Closed xiaqing10 closed 3 years ago

xiaqing10 commented 3 years ago

因为我转的wk,在nnie上跑精度丢失很大,像看下你还有哪些修改,初步怀疑是softmax的问题。

wllkk commented 3 years ago

官方的代码执行 python models/export.py --weights yolov5s.pt --img 640 --batch 1 --train 就可以了。 另外要注意RGB 输入顺序:yolov5 是以RGB顺序输入到网络的,因此使用BGR可能会导致精度严重下降或检测不到物体。 我把caffe模型放到了百度云盘上,你可以看一下网络结构 链接:https://pan.baidu.com/s/11wfjenp7hOwLwUUSy5pZng 提取码:xh8h

xiaqing10 commented 3 years ago

多谢您的回复,刚下载下来看了下,其实我的网络和你一样,唯一区别在于输入shape,我用的是640。 并且看你的还是用了SiLU激活,我开始以为是这个问题,今天改了ReLU还在训练。 这样说来看来和激活无关,并且为了验证精度,caffe模型直接跑的精度很高,和原生的torch训练出来的是一致,说明caffe是没问题的。 最后我转wk时候,测了BGR/RGB, BGR直接不出任何结果,RGB偶尔有结果,不过精度很低,并且出来的框也明显不如caffe好。

xiaqing10 commented 3 years ago

哦,还有一个区别,您采用了直接的Upsample, 我怕nnie转不过,用的是convTranspose.

xiaqing10 commented 3 years ago

另外补充下结论: confidence 0.125444 0.998111 confidence 0.115170 0.996834 confidence 0.139894 0.994340 confidence 0.272128 0.995774 confidence 0.135147 0.994324 confidence 0.157289 0.993993 confidence 0.281251 0.995954 confidence 0.151114 0.994375 confidence 0.136898 0.990578 confidence 0.274776 0.994485 confidence 0.136013 0.992501 confidence 0.282817 0.996426 confidence 0.165795 0.996949 confidence 0.334388 0.997616 confidence 0.318186 0.997069 confidence 0.176262 0.992288 confidence 0.229920 0.995110 confidence 0.202128 0.994373

第一列是后处理中背景和前景的softmax得分,第二列是具体那一类的softmax后的得分。 可以看出,后者的精度其实挺好,只是前后背景得分差别大,所以class_confidence = sigmoid(class_confidence) * confidence; 后得分就很低了。现在除了怀疑量化损失,没找到方向了。

wllkk commented 3 years ago

嗯嗯,你可以尝试一下nnie的fp16精度。也可以用海思提供的向量对比工具,看一下caffe推理的中间层结果和nnie的差别,从而判断是那一层出了问题。

xiaqing10 commented 3 years ago

我用ruyistudio对比量化后的差别,大部分层都是0.9以上,只有个别层是0.4-0.5,不知道算正常不? 另外请问下你提供的模型是检测什么的,我准备转wk做个测试。

wllkk commented 3 years ago

个别层是0.4好像是正常的。模型是简单训练了一下visdrone2019,效果本身就不是很好,没多大参考价值。

xiaqing10 commented 3 years ago

多谢指导,关闭issue

hardlipay commented 8 months ago

多谢指导,关闭issue

你好,请问有找到丢精度的原因吗?目前我也是caffe和pt精度一致,转wk丢相机上小目标丢的多,模型结构里的层也看了很多经验贴试了很多个了,量化出问题的话,不知道有没有排查的方法