运行DeepSORT_YOLOv5_Pytorch时出现的问题

文章目录

      • 前言
      • 问题1:Loader=yaml.FullLoader
      • [问题2:utils. -> yolov5.utils.](#问题2:utils. -> yolov5.utils.)
      • [问题3:np.float -> float](#问题3:np.float -> float)
      • [问题4:np.int -> int](#问题4:np.int -> int)
      • [问题5:ImportError: cannot import name 'time_synchronized' from 'yolov5.utils.torch_utils'](#问题5:ImportError: cannot import name 'time_synchronized' from 'yolov5.utils.torch_utils')

前言

记录一下复现GitHub中以下这份代码时出现的一些问题。

代码链接:https://github.com/HowieMa/DeepSORT_YOLOv5_Pytorch/tree/master

问题1:Loader=yaml.FullLoader

【问题描述】

python 复制代码
self.update(yaml.load(fo.read()))
TypeError: load() missing 1 required positional argument: 'Loader'

【解决方式】

找到deep_sort文件夹下的utils文件夹中的parser.py文件,将两处 cfg_dict.update(yaml.load(fo.read())) 改为 cfg_dict.update(yaml.load(fo, Loader=yaml.FullLoader))


问题2:utils. -> yolov5.utils.

【问题描述】

python 复制代码
from utils.general import check_anchor_order, make_divisible, check_file
ModuleNotFoundError: No module named 'utils.general'

from utils.torch_utils import (
    time_synchronized, fuse_conv_and_bn, model_info, scale_img, initialize_weights, select_device)
ModuleNotFoundError: No module named 'utils.torch_utils'

【解决方式】

找到yolov5文件夹下的models文件夹中的yolo.py文件,将

python 复制代码
from utils.general import check_anchor_order, make_divisible, check_file
from utils.torch_utils import (
    time_synchronized, fuse_conv_and_bn, model_info, scale_img, initialize_weights, select_device)

改为

python 复制代码
from yolov5.utils.general import check_anchor_order, make_divisible, check_file
from yolov5.utils.torch_utils import (
    time_synchronized, fuse_conv_and_bn, model_info, scale_img, initialize_weights, select_device)

问题3:np.float -> float

【问题描述】

python 复制代码
<class 'AttributeError'> module 'numpy' has no attribute 'float'.
`np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.

【解决方式】

找到deep_sort文件夹下的sort文件夹中的detection.py文件和preprocessing.py文件,分别将30行代码和第40行代码中的np.float改为float


问题4:np.int -> int

【问题描述】

python 复制代码
<class 'AttributeError'> module 'numpy' has no attribute 'int'.
`np.int` was a deprecated alias for the builtin `int`. To avoid this error in existing code, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` 

【解决方式】

找到deep_sort文件夹下的deep_sort.py文件,将第67行代码中的np.int 改为int


问题5:ImportError: cannot import name 'time_synchronized' from 'yolov5.utils.torch_utils'

【问题描述】

python 复制代码
from yolov5.utils.torch_utils import select_device, time_synchronized
ImportError: cannot import name 'time_synchronized' from 'yolov5.utils.torch_utils' 

【解决方式】

main.py中的

python 复制代码
from yolov5.utils.torch_utils import select_device, time_synchronized

改为

python 复制代码
from yolov5.utils.torch_utils import select_device, time_sync

time_synchronized()改为time_sync()