pytorch-CPN代码遇到的问题

1.

image = scipy.misc.imread(img_path, mode='RGB')
AttributeError: 'module' object has no attribute 'imread'

 原因:SciPy 1.2.0之后已经删除了,用imageio.imread代替

解决办法:

1.先检查scipy有没有安装好,因为还有其他地方用到 import scipy// import scipy.misc// import scipy.io

  去https://pypi.org/project/python-libsbml/搜索下载,到指定位置下 pip install scipy-1.3.0-cp37-cp37m-manylinux1_x86_64.whl

2.以下两句一样效果,代替

im = imageio.imread(img_path, pilmode="RGB") #todo this is Array not tensor

im2 = imageio.imread(img_path) # [im == im2] ture

3.安装pillow

conda install pillow或者pip install pillow

2.RuntimeError: PyTorch was compiled without NumPy support

conda install numpy pyyaml mkl setuptools cmake cffi  不行

就是先安装,其实我是直接重装了1.1版本的torch

pip install numpy==1.15.0
pip install torch==0.4.1.post2

3.

image, points, details = self.augmentationCropImage(image, gt_bbox, points)
UnboundLocalError: local variable 'image' referenced before assignment

原因:在函数外部已经定义了变量n,在函数内部对该变量进行运算,运行时会遇到了这样的错误。主要是因为没有让解释器清楚变量是全局变量还是局部变量。

解决方法:

https://www.cnblogs.com/zhaijiahui/p/8398480.html

https://blog.csdn.net/tbzj_2000/article/details/81295395

1)在子程序中对全局变量的操作,因为在函数内部对变量赋值进行修改后,该变量就会被Python解释器认为是局部变量而非全局变量:用global关键字来进行说明该变量是全局变量 .

def test():
       global a
       if value == 1:
              a += 1
       return a

value = a = 1
b = test()

2)局部变量,(只在函数内使用),那么只要在函数内把这个变量定义一下就行了,比如:

def test():
  a = 1
       if value == 1:
              a += 1
       return a

value = a = 1
b = test()

3)

然而我还发现一个问题,理论上python中list作为全局变量无需global声明,因为像b[0] = 2这种赋值不会有歧义。它是“明确的”,因为如果把b当作是局部变量的话,它会报KeyError,所以它只能是引用全局的b,故不需要多此一举显式声明global。

但是我在实际操作中,在函数外定义列表,在函数中多次添加值,而后在return打印出来。执行次数少没有问题,随着循环次数的增加会出现,此报错,报错信息如下:

Traceback (most recent call last):

  File "C:/Users/xxxxxx/Desktop/工具/get_url2.py", line 153, in

    r_get_url_list,script_list,html_list,other_list,suffix_list = please_geturl(url,s_url)

  File "C:/Users/xxxxxx/Desktop/工具/get_url2.py", line 93, in please_geturl

    if get_url_list: # 非空列表

UnboundLocalError: local variable 'get_url_list' referenced before assignment

这种情况困扰我很久,一直找不出问题,最后我定义了新的列表来装返回值,程序暂时不出问题了

知识要大家一起分享,但带上原文链接是对作者的尊重。

你可能感兴趣的:(遇到的问题,语言学习记录,姿态估计逐步)