来自Anaconda 枕头-> 7.00 火炬视觉-> 0.5.0
我今天安装了最新的Linux版Anaconda(Anaconda3-2020.02-Linux-x86_64.sh),并运行以下命令,
conda create -n py36 python=3.6
conda activate py36
conda install -c pytorch torchvision
conda install -c pytorch pytorch
conda install -c conda-forge opencv
conda install -c conda-forge python-pptx
conda install -c conda-forge labelme
conda install -c conda-forge tensorboardx
conda install -c anaconda ipywidgets
conda install -c conda-forge ipyvolume
conda install -c conda-forge jupyter_contrib_nbextensions
conda install -c anaconda pytables
jupyter-notebook
运行与我几个月前运行的完全相同的代码,
# visualize a single example to verify that it is correct
( img, patch_mask, patch_mask_weight, fname) = dataset[ "train"][ 70]
我遇到以下错误,
如何解决?请让我知道是否需要更多代码。
更新我
所示代码对分别在深度学习训练期间要忽略的背景,前景和区域的两个RGB图像和具有唯一值0、1、2的标签图像进行了一系列变换。下面的输出来自在上面显示的错误跟踪中显示的代码中添加的print
语句。
对于第一个RGB图像,看起来一切正常,而对于标签图像,则存在问题。具体地说,旋转转换是一个有问题的转换,其中color
属性具有一个元组作为值。但是,ToPILImage转换中的同一属性的值是单个整数。
谢谢
答案 0 :(得分:0)
调用转换RandomRotation
并创建Image
类的新实例时出现错误。特别是,文件core.fill()
中函数return im._new( core.fill(mode, size, color))
中函数new
第2544行anaconda3/envs/py36/lib/python3.6/site-packages/PIL/Image.py
中的函数core
是'evil'的来源。
anaconda3/envs/py36/lib/python3.6/site-packages/PIL/_imaging.cpython-36m-x86_64-linux-gnu.so
是文件from . import _imaging as core
的别名,当在同一文件(Image.py)的第69行作为core.fill(mode, size, color))
导入时。
取决于mode
的功能color
对color
有不同的期望。 anaconda3/envs/py36/lib/python3.6/site-packages/torchvision/transforms/functional.py
始终是3元组,文件rotate
中的第726-727行是函数RandomRotation
,即mode == RGB
变换。
如果mode == L
一切正常。如果TypeError: function takes exactly 1 argument (3 given)
,则引发mode == F
。如果TypeError: must be real number, not tuple
,则引发mode in [ 'L', 'F']
。我发现鉴于我的图片正在转换。
对于color
,参数mode
必须是一个整数。对于其他if mode in [ 'L', 'F'] and isinstance( color, tuple):
color = color[ 0]
return im._new( core.fill(mode, size, color))
也可能是正确的。
因此,我通过将代码更新为来解决了我的问题,
anaconda3/envs/py36/lib/python3.6/site-packages/PIL/Image.py
在文件new
中,功能为new
。
此更改最接近该问题。但是,由于npm
似乎可用于每次转换,因此最好在其他地方更改代码,以使更改对其余代码的影响最小。