ppogg / YOLOv5-Lite

🍅🍅🍅YOLOv5-Lite: Evolved from yolov5 and the size of model is only 900+kb (int8) and 1.7M (fp16). Reach 15 FPS on the Raspberry Pi 4B~
GNU General Public License v3.0
2.22k stars 401 forks source link

自己训练的v5 lite-e转ncnn结构不一样 #217

Open johninn opened 1 year ago

johninn commented 1 year ago

我自己训练的模型转成int8之后的param文件是这样的 7767517 157 177 Input images 0 1 images Convolution Conv_3 1 1 images onnx::MaxPool_191 0=32 1=3 3=2 4=1 5=1 6=864 8=2 9=1 Pooling MaxPool_5 1 1 onnx::MaxPool_191 input.8 1=3 2=2 3=1 5=1 Split splitncnn_0 1 2 input.8 input.8_splitncnn_0 input.8_splitncnn_1 ConvolutionDepthWise Conv_6 1 1 input.8_splitncnn_1 input.12 0=32 1=3 3=2 4=1 5=1 6=288 7=32 8=101 Convolution Conv_7 1 1 input.12 onnx::Concat_195 0=60 1=1 5=1 6=1920 8=2 9=1 Convolution Conv_9 1 1 input.8_splitncnn_0 onnx::Conv_197 0=60 1=1 5=1 6=1920 8=102 9=1 ConvolutionDepthWise Conv_11 1 1 onnx::Conv_197 input.24 0=60 1=3 3=2 4=1 5=1 6=540 7=60 8=101 Convolution Conv_12 1 1 input.24 onnx::Concat_200 0=60 1=1 5=1 6=3600 8=2 9=1 Concat Concat_14 2 1 onnx::Concat_195 onnx::Concat_200 out ShuffleChannel Reshape_19 1 1 out onnx::Shape_206 0=2 Split splitncnn_1 1 2 onnx::Shape_206 onnx::Shape_206_splitncnn_0 onnx::Shape_206_splitncnn_1 Crop Slice_30 1 1 onnx::Shape_206_splitncnn_1 onnx::Concat_217 -23309=1,0 -23310=1,60 -23311=1,0 Crop Slice_33 1 1 onnx::Shape_206_splitncnn_0 onnx::Conv_220 -23309=1,60 -23310=1,120 -23311=1,0 Convolution Conv_34 1 1 onnx::Conv_220 onnx::Conv_222 0=60 1=1 5=1 6=3600 8=102 9=1 ConvolutionDepthWise Conv_36 1 1 onnx::Conv_222 input.36 0=60 1=3 4=1 5=1 6=540 7=60 8=101 Convolution Conv_37 1 1 input.36 onnx::Concat_225 0=60 1=1 5=1 6=3600 8=2 9=1 Concat Concat_39 2 1 onnx::Concat_217 onnx::Concat_225 out.3 ShuffleChannel Reshape_44 1 1 out.3 onnx::Shape_231 0=2 Split splitncnn_2 1 2 onnx::Shape_231 onnx::Shape_231_splitncnn_0 onnx::Shape_231_splitncnn_1 Crop Slice_55 1 1 onnx::Shape_231_splitncnn_1 onnx::Concat_242 -23309=1,0 -23310=1,60 -23311=1,0 Crop Slice_58 1 1 onnx::Shape_231_splitncnn_0 onnx::Conv_245 -23309=1,60 -23310=1,120 -23311=1,0 Convolution Conv_59 1 1 onnx::Conv_245 onnx::Conv_247 0=60 1=1 5=1 6=3600 8=102 9=1 ConvolutionDepthWise Conv_61 1 1 onnx::Conv_247 input.48 0=60 1=3 4=1 5=1 6=540 7=60 8=101 Convolution Conv_62 1 1 input.48 onnx::Concat_250 0=60 1=1 5=1 6=3600 8=2 9=1 Concat Concat_64 2 1 onnx::Concat_242 onnx::Concat_250 out.7 ShuffleChannel Reshape_69 1 1 out.7 onnx::Shape_256 0=2 Split splitncnn_3 1 2 onnx::Shape_256 onnx::Shape_256_splitncnn_0 onnx::Shape_256_splitncnn_1 Crop Slice_80 1 1 onnx::Shape_256_splitncnn_1 onnx::Concat_267 -23309=1,0 -23310=1,60 -23311=1,0 Crop Slice_83 1 1 onnx::Shape_256_splitncnn_0 onnx::Conv_270 -23309=1,60 -23310=1,120 -23311=1,0 Convolution Conv_84 1 1 onnx::Conv_270 onnx::Conv_272 0=60 1=1 5=1 6=3600 8=102 9=1 ConvolutionDepthWise Conv_86 1 1 onnx::Conv_272 input.60 0=60 1=3 4=1 5=1 6=540 7=60 8=101 Convolution Conv_87 1 1 input.60 onnx::Concat_275 0=60 1=1 5=1 6=3600 8=2 9=1 Concat Concat_89 2 1 onnx::Concat_267 onnx::Concat_275 out.11 ShuffleChannel Reshape_94 1 1 out.11 input.68 0=2 Split splitncnn_4 1 3 input.68 input.68_splitncnn_0 input.68_splitncnn_1 input.68_splitncnn_2 ConvolutionDepthWise Conv_95 1 1 input.68_splitncnn_2 input.72 0=120 1=3 3=2 4=1 5=1 6=1080 7=120 8=101 Convolution Conv_96 1 1 input.72 onnx::Concat_284 0=116 1=1 5=1 6=13920 8=2 9=1 Convolution Conv_98 1 1 input.68_splitncnn_1 onnx::Conv_286 0=116 1=1 5=1 6=13920 8=102 9=1 ConvolutionDepthWise Conv_100 1 1 onnx::Conv_286 input.84 0=116 1=3 3=2 4=1 5=1 6=1044 7=116 8=101 Convolution Conv_101 1 1 input.84 onnx::Concat_289 0=116 1=1 5=1 6=13456 8=2 9=1 Concat Concat_103 2 1 onnx::Concat_284 onnx::Concat_289 out.15 ShuffleChannel Reshape_108 1 1 out.15 onnx::Shape_295 0=2 Split splitncnn_5 1 2 onnx::Shape_295 onnx::Shape_295_splitncnn_0 onnx::Shape_295_splitncnn_1 Crop Slice_119 1 1 onnx::Shape_295_splitncnn_1 onnx::Concat_306 -23309=1,0 -23310=1,116 -23311=1,0 Crop Slice_122 1 1 onnx::Shape_295_splitncnn_0 onnx::Conv_309 -23309=1,116 -23310=1,232 -23311=1,0 Convolution Conv_123 1 1 onnx::Conv_309 onnx::Conv_311 0=116 1=1 5=1 6=13456 8=102 9=1 ConvolutionDepthWise Conv_125 1 1 onnx::Conv_311 input.96 0=116 1=3 4=1 5=1 6=1044 7=116 8=101 Convolution Conv_126 1 1 input.96 onnx::Concat_314 0=116 1=1 5=1 6=13456 8=2 9=1 Concat Concat_128 2 1 onnx::Concat_306 onnx::Concat_314 out.19 ShuffleChannel Reshape_133 1 1 out.19 onnx::Shape_320 0=2 Split splitncnn_6 1 2 onnx::Shape_320 onnx::Shape_320_splitncnn_0 onnx::Shape_320_splitncnn_1 Crop Slice_144 1 1 onnx::Shape_320_splitncnn_1 onnx::Concat_331 -23309=1,0 -23310=1,116 -23311=1,0 Crop Slice_147 1 1 onnx::Shape_320_splitncnn_0 onnx::Conv_334 -23309=1,116 -23310=1,232 -23311=1,0 Convolution Conv_148 1 1 onnx::Conv_334 onnx::Conv_336 0=116 1=1 5=1 6=13456 8=102 9=1 ConvolutionDepthWise Conv_150 1 1 onnx::Conv_336 input.108 0=116 1=3 4=1 5=1 6=1044 7=116 8=101 Convolution Conv_151 1 1 input.108 onnx::Concat_339 0=116 1=1 5=1 6=13456 8=2 9=1 Concat Concat_153 2 1 onnx::Concat_331 onnx::Concat_339 out.23 ShuffleChannel Reshape_158 1 1 out.23 onnx::Shape_345 0=2 Split splitncnn_7 1 2 onnx::Shape_345 onnx::Shape_345_splitncnn_0 onnx::Shape_345_splitncnn_1 Crop Slice_169 1 1 onnx::Shape_345_splitncnn_1 onnx::Concat_356 -23309=1,0 -23310=1,116 -23311=1,0 Crop Slice_172 1 1 onnx::Shape_345_splitncnn_0 onnx::Conv_359 -23309=1,116 -23310=1,232 -23311=1,0 Convolution Conv_173 1 1 onnx::Conv_359 onnx::Conv_361 0=116 1=1 5=1 6=13456 8=102 9=1 ConvolutionDepthWise Conv_175 1 1 onnx::Conv_361 input.120 0=116 1=3 4=1 5=1 6=1044 7=116 8=101 Convolution Conv_176 1 1 input.120 onnx::Concat_364 0=116 1=1 5=1 6=13456 8=2 9=1 Concat Concat_178 2 1 onnx::Concat_356 onnx::Concat_364 out.27 ShuffleChannel Reshape_183 1 1 out.27 onnx::Shape_370 0=2 Split splitncnn_8 1 2 onnx::Shape_370 onnx::Shape_370_splitncnn_0 onnx::Shape_370_splitncnn_1 Crop Slice_194 1 1 onnx::Shape_370_splitncnn_1 onnx::Concat_381 -23309=1,0 -23310=1,116 -23311=1,0 Crop Slice_197 1 1 onnx::Shape_370_splitncnn_0 onnx::Conv_384 -23309=1,116 -23310=1,232 -23311=1,0 Convolution Conv_198 1 1 onnx::Conv_384 onnx::Conv_386 0=116 1=1 5=1 6=13456 8=102 9=1 ConvolutionDepthWise Conv_200 1 1 onnx::Conv_386 input.132 0=116 1=3 4=1 5=1 6=1044 7=116 8=101 Convolution Conv_201 1 1 input.132 onnx::Concat_389 0=116 1=1 5=1 6=13456 8=2 9=1 Concat Concat_203 2 1 onnx::Concat_381 onnx::Concat_389 out.31 ShuffleChannel Reshape_208 1 1 out.31 onnx::Shape_395 0=2 Split splitncnn_9 1 2 onnx::Shape_395 onnx::Shape_395_splitncnn_0 onnx::Shape_395_splitncnn_1 Crop Slice_219 1 1 onnx::Shape_395_splitncnn_1 onnx::Concat_406 -23309=1,0 -23310=1,116 -23311=1,0 Crop Slice_222 1 1 onnx::Shape_395_splitncnn_0 onnx::Conv_409 -23309=1,116 -23310=1,232 -23311=1,0 Convolution Conv_223 1 1 onnx::Conv_409 onnx::Conv_411 0=116 1=1 5=1 6=13456 8=102 9=1 ConvolutionDepthWise Conv_225 1 1 onnx::Conv_411 input.144 0=116 1=3 4=1 5=1 6=1044 7=116 8=101 Convolution Conv_226 1 1 input.144 onnx::Concat_414 0=116 1=1 5=1 6=13456 8=2 9=1 Concat Concat_228 2 1 onnx::Concat_406 onnx::Concat_414 out.35 ShuffleChannel Reshape_233 1 1 out.35 onnx::Shape_420 0=2 Split splitncnn_10 1 2 onnx::Shape_420 onnx::Shape_420_splitncnn_0 onnx::Shape_420_splitncnn_1 Crop Slice_244 1 1 onnx::Shape_420_splitncnn_1 onnx::Concat_431 -23309=1,0 -23310=1,116 -23311=1,0 Crop Slice_247 1 1 onnx::Shape_420_splitncnn_0 onnx::Conv_434 -23309=1,116 -23310=1,232 -23311=1,0 Convolution Conv_248 1 1 onnx::Conv_434 onnx::Conv_436 0=116 1=1 5=1 6=13456 8=102 9=1 ConvolutionDepthWise Conv_250 1 1 onnx::Conv_436 input.156 0=116 1=3 4=1 5=1 6=1044 7=116 8=101 Convolution Conv_251 1 1 input.156 onnx::Concat_439 0=116 1=1 5=1 6=13456 8=2 9=1 Concat Concat_253 2 1 onnx::Concat_431 onnx::Concat_439 out.39 ShuffleChannel Reshape_258 1 1 out.39 onnx::Shape_445 0=2 Split splitncnn_11 1 2 onnx::Shape_445 onnx::Shape_445_splitncnn_0 onnx::Shape_445_splitncnn_1 Crop Slice_269 1 1 onnx::Shape_445_splitncnn_1 onnx::Concat_456 -23309=1,0 -23310=1,116 -23311=1,0 Crop Slice_272 1 1 onnx::Shape_445_splitncnn_0 onnx::Conv_459 -23309=1,116 -23310=1,232 -23311=1,0 Convolution Conv_273 1 1 onnx::Conv_459 onnx::Conv_461 0=116 1=1 5=1 6=13456 8=102 9=1 ConvolutionDepthWise Conv_275 1 1 onnx::Conv_461 input.168 0=116 1=3 4=1 5=1 6=1044 7=116 8=101 Convolution Conv_276 1 1 input.168 onnx::Concat_464 0=116 1=1 5=1 6=13456 8=2 9=1 Concat Concat_278 2 1 onnx::Concat_456 onnx::Concat_464 out.43 ShuffleChannel Reshape_283 1 1 out.43 input.176 0=2 Split splitncnn_12 1 3 input.176 input.176_splitncnn_0 input.176_splitncnn_1 input.176_splitncnn_2 ConvolutionDepthWise Conv_284 1 1 input.176_splitncnn_2 input.180 0=232 1=3 3=2 4=1 5=1 6=2088 7=232 8=101 Convolution Conv_285 1 1 input.180 onnx::Concat_473 0=232 1=1 5=1 6=53824 8=2 9=1 Convolution Conv_287 1 1 input.176_splitncnn_1 onnx::Conv_475 0=232 1=1 5=1 6=53824 8=102 9=1 ConvolutionDepthWise Conv_289 1 1 onnx::Conv_475 input.192 0=232 1=3 3=2 4=1 5=1 6=2088 7=232 8=101 Convolution Conv_290 1 1 input.192 onnx::Concat_478 0=232 1=1 5=1 6=53824 8=2 9=1 Concat Concat_292 2 1 onnx::Concat_473 onnx::Concat_478 out.47 ShuffleChannel Reshape_297 1 1 out.47 onnx::Shape_484 0=2 Split splitncnn_13 1 2 onnx::Shape_484 onnx::Shape_484_splitncnn_0 onnx::Shape_484_splitncnn_1 Crop Slice_308 1 1 onnx::Shape_484_splitncnn_1 onnx::Concat_495 -23309=1,0 -23310=1,232 -23311=1,0 Crop Slice_311 1 1 onnx::Shape_484_splitncnn_0 onnx::Conv_498 -23309=1,232 -23310=1,464 -23311=1,0 Convolution Conv_312 1 1 onnx::Conv_498 onnx::Conv_500 0=232 1=1 5=1 6=53824 8=102 9=1 ConvolutionDepthWise Conv_314 1 1 onnx::Conv_500 input.204 0=232 1=3 4=1 5=1 6=2088 7=232 8=101 Convolution Conv_315 1 1 input.204 onnx::Concat_503 0=232 1=1 5=1 6=53824 8=2 9=1 Concat Concat_317 2 1 onnx::Concat_495 onnx::Concat_503 out.51 ShuffleChannel Reshape_322 1 1 out.51 input.212 0=2 Convolution Conv_323 1 1 input.212 onnx::Sigmoid_510 0=96 1=1 5=1 6=44544 8=2 Swish Mul_325 1 1 onnx::Sigmoid_510 input.216 Split splitncnn_14 1 2 input.216 input.216_splitncnn_0 input.216_splitncnn_1 Interp Resize_327 1 1 input.216_splitncnn_1 onnx::Concat_517 0=1 1=2.000000e+00 2=2.000000e+00 Concat Concat_328 2 1 onnx::Concat_517 input.176_splitncnn_0 input.220 ConvolutionDepthWise Conv_329 1 1 input.220 input.228 0=328 1=3 4=1 5=1 6=2952 7=328 8=101 9=1 Convolution Conv_331 1 1 input.228 input.236 0=96 1=1 5=1 6=31488 8=102 9=1 Convolution Conv_333 1 1 input.236 onnx::Sigmoid_525 0=96 1=1 5=1 6=9216 8=2 Swish Mul_335 1 1 onnx::Sigmoid_525 input.240 Split splitncnn_15 1 2 input.240 input.240_splitncnn_0 input.240_splitncnn_1 Interp Resize_337 1 1 input.240_splitncnn_1 onnx::Concat_532 0=1 1=2.000000e+00 2=2.000000e+00 Concat Concat_338 2 1 onnx::Concat_532 input.68_splitncnn_0 input.244 ConvolutionDepthWise Conv_339 1 1 input.244 input.252 0=216 1=3 4=1 5=1 6=1944 7=216 8=101 9=1 Convolution Conv_341 1 1 input.252 input.260 0=96 1=1 5=1 6=20736 8=102 9=1 Split splitncnn_16 1 2 input.260 input.260_splitncnn_0 input.260_splitncnn_1 ConvolutionDepthWise Conv_343 1 1 input.260_splitncnn_1 input.268 0=96 1=3 3=2 4=1 5=1 6=864 7=96 8=101 9=1 Convolution Conv_345 1 1 input.268 onnx::Add_545 0=96 1=1 5=1 6=9216 8=2 9=1 BinaryOp Add_347 2 1 onnx::Add_545 input.240_splitncnn_0 input.276 ConvolutionDepthWise Conv_348 1 1 input.276 input.284 0=96 1=3 4=1 5=1 6=864 7=96 8=101 9=1 Convolution Conv_350 1 1 input.284 input.292 0=96 1=1 5=1 6=9216 8=102 9=1 Split splitncnn_17 1 2 input.292 input.292_splitncnn_0 input.292_splitncnn_1 ConvolutionDepthWise Conv_352 1 1 input.292_splitncnn_1 input.300 0=96 1=3 3=2 4=1 5=1 6=864 7=96 8=101 9=1 Convolution Conv_354 1 1 input.300 onnx::Add_558 0=96 1=1 5=1 6=9216 8=2 9=1 BinaryOp Add_356 2 1 onnx::Add_558 input.216_splitncnn_0 input.308 ConvolutionDepthWise Conv_357 1 1 input.308 input.316 0=96 1=3 4=1 5=1 6=864 7=96 8=101 9=1 Convolution Conv_359 1 1 input.316 input.324 0=96 1=1 5=1 6=9216 8=102 9=1 Convolution Conv_361 1 1 input.260_splitncnn_0 onnx::Reshape_566 0=30 1=1 5=1 6=2880 8=2 Reshape Reshape_362 1 1 onnx::Reshape_566 onnx::Transpose_578 0=6400 1=10 2=3 Permute Transpose_363 1 1 onnx::Transpose_578 onnx::Sigmoid_579 0=1 Sigmoid Sigmoid_364 1 1 onnx::Sigmoid_579 onnx::Reshape_580 Reshape Reshape_365 1 1 onnx::Reshape_580 onnx::Concat_587 0=10 1=-1 Convolution Conv_366 1 1 input.292_splitncnn_0 onnx::Reshape_588 0=30 1=1 5=1 6=2880 8=2 Reshape Reshape_367 1 1 onnx::Reshape_588 onnx::Transpose_600 0=1600 1=10 2=3 Permute Transpose_368 1 1 onnx::Transpose_600 onnx::Sigmoid_601 0=1 Sigmoid Sigmoid_369 1 1 onnx::Sigmoid_601 onnx::Reshape_602 Reshape Reshape_370 1 1 onnx::Reshape_602 onnx::Concat_609 0=10 1=-1 Convolution Conv_371 1 1 input.324 onnx::Reshape_610 0=30 1=1 5=1 6=2880 8=2 Reshape Reshape_372 1 1 onnx::Reshape_610 onnx::Transpose_622 0=400 1=10 2=3 Permute Transpose_373 1 1 onnx::Transpose_622 onnx::Sigmoid_623 0=1 Sigmoid Sigmoid_374 1 1 onnx::Sigmoid_623 onnx::Reshape_624 Reshape Reshape_375 1 1 onnx::Reshape_624 onnx::Concat_631 0=10 1=-1 Concat Concat_376 3 1 onnx::Concat_587 onnx::Concat_609 onnx::Concat_631 output

官方的我看最后几层是这样的 Permute Transpose_421 1 1 614 output 0=1 Convolution Conv_422 1 1 572_splitncnn_0 616 0=255 1=1 5=1 6=24480 8=2 Reshape Reshape_436 1 1 616 634 0=-1 1=85 2=3 Permute Transpose_437 1 1 634 1111 0=1 Convolution Conv_438 1 1 595 636 0=255 1=1 5=1 6=24480 8=2 Reshape Reshape_452 1 1 636 654 0=-1 1=85 2=3 Permute Transpose_453 1 1 654 2222 0=1

pytorch模型没什么问题,C++ NCNN完全没有检测结果

johninn commented 1 year ago

onnx的结果没有问题

ppogg commented 1 year ago

ncnn请使用2022-05-21的版本

hideinhat commented 10 months ago

ncnn请使用2022-05-21的版本

你好,在ncnn没有看到此版本