YOLOv5-Lite icon indicating copy to clipboard operation
YOLOv5-Lite copied to clipboard

尝试v5lite-g热图输出时出现 ValueError: not enough values to unpack (expected 3, got 2) 错误

Open chen990627 opened this issue 2 years ago • 5 comments

这是命令行输出 (pytorch_env) F:\YOLO-Series\YOLOv5-Lite-master\scripts>python main.py --type all [INFO] Loading the model Fusing layers... [INFO] Model is loaded [INFO] fetching names from coco file OrderedDict([('model', Sequential( (0): Focus( (conv): Conv( (conv): Conv2d(12, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) (1): RepVGGBlock( (nonlinearity): SiLU(inplace=True) (rbr_dense): Conv2d(32, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)) ) (2): C3( (cv1): Conv( (conv): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv3): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (m): Sequential( (0): Bottleneck( (cv1): Conv( (conv): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) ) ) (3): RepVGGBlock( (nonlinearity): SiLU(inplace=True) (rbr_dense): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)) ) (4): C3( (cv1): Conv( (conv): Conv2d(128, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(128, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv3): Conv( (conv): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (m): Sequential( (0): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) (1): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) (2): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) ) ) (5): RepVGGBlock( (nonlinearity): SiLU(inplace=True) (rbr_dense): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)) ) (6): C3( (cv1): Conv( (conv): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv3): Conv( (conv): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (m): Sequential( (0): Bottleneck( (cv1): Conv( (conv): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) (1): Bottleneck( (cv1): Conv( (conv): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) (2): Bottleneck( (cv1): Conv( (conv): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) ) ) (7): RepVGGBlock( (nonlinearity): SiLU(inplace=True) (rbr_dense): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)) ) (8): SPP( (cv1): Conv( (conv): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (m): ModuleList( (0): MaxPool2d(kernel_size=5, stride=1, padding=2, dilation=1, ceil_mode=False) (1): MaxPool2d(kernel_size=9, stride=1, padding=4, dilation=1, ceil_mode=False) (2): MaxPool2d(kernel_size=13, stride=1, padding=6, dilation=1, ceil_mode=False) ) ) (9): C3( (cv1): Conv( (conv): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv3): Conv( (conv): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (m): Sequential( (0): Bottleneck( (cv1): Conv( (conv): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) ) ) (10): Conv( (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (11): Upsample(scale_factor=2.0, mode=nearest) (12): Concat() (13): C3( (cv1): Conv( (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv3): Conv( (conv): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (m): Sequential( (0): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) (1): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) (2): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) ) ) (14): Conv( (conv): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (15): Upsample(scale_factor=2.0, mode=nearest) (16): Concat() (17): C3( (cv1): Conv( (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv3): Conv( (conv): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (m): Sequential( (0): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) (1): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) (2): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) ) ) (18): Conv( (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)) (act): SiLU(inplace=True) ) (19): Concat() (20): C3( (cv1): Conv( (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv3): Conv( (conv): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (m): Sequential( (0): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) (1): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) (2): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) ) ) (21): Conv( (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)) (act): SiLU(inplace=True) ) (22): Concat() (23): C3( (cv1): Conv( (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv3): Conv( (conv): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (m): Sequential( (0): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) (1): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) (2): Bottleneck( (cv1): Conv( (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1)) (act): SiLU(inplace=True) ) (cv2): Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) ) ) ) (24): Detect( (m): ModuleList( (0): Conv2d(128, 255, kernel_size=(1, 1), stride=(1, 1)) (1): Conv2d(128, 255, kernel_size=(1, 1), stride=(1, 1)) (2): Conv2d(128, 255, kernel_size=(1, 1), stride=(1, 1)) ) ) ))]) Target_layer Conv( (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (act): SiLU(inplace=True) ) forward: <class 'torch.Tensor'> Traceback (most recent call last): File "main.py", line 100, in main() File "main.py", line 69, in main saliency_method = YOLOV5GradCAM(model=model, layer_name=args.target_layer, img_size=input_size) File "F:\YOLO-Series\YOLOv5-Lite-master\scripts\Grad_Cam.py", line 45, in init self.model(torch.zeros(1, 3, *img_size, device=device)) File "G:\development\Anaconda\envs\pytorch_env\lib\site-packages\torch\nn\modules\module.py", line 889, in _call_impl result = self.forward(*input, **kwargs) File "F:\YOLO-Series\YOLOv5-Lite-master\scripts\Grad_Cam.py", line 250, in forward prediction, logits, _ = self.model(img, augment=False) ValueError: not enough values to unpack (expected 3, got 2)

chen990627 avatar May 26 '22 04:05 chen990627

Screenshot_2022-05-27-13-17-55-531_com android browser 麻烦此处截图给我看看

ppogg avatar May 27 '22 05:05 ppogg

Screenshot_2022-05-27-13-17-55-531_com android browser 麻烦此处截图给我看看

image

chen990627 avatar May 27 '22 05:05 chen990627

也就是你什么都没改,直接运行代码后报错?

ppogg avatar May 27 '22 15:05 ppogg

也就是你什么都没改,直接运行代码后报错?

对 换--target-layer model_23_m_2_cv2_conv也是报一样的错

chen990627 avatar May 28 '22 06:05 chen990627

已更新代码,请再试一下!

ppogg avatar Jun 07 '22 03:06 ppogg