FileNotFoundError:没有这样的文件:'/content/Mask_RCNN/dataset/val/download.jpg'

Posted

技术标签:

【中文标题】FileNotFoundError:没有这样的文件:\'/content/Mask_RCNN/dataset/val/download.jpg\'【英文标题】:FileNotFoundError: No such file: '/content/Mask_RCNN/dataset/val/download.jpg'FileNotFoundError:没有这样的文件:'/content/Mask_RCNN/dataset/val/download.jpg' 【发布时间】:2021-11-20 05:07:18 【问题描述】:
TEST_MODE = "inference"
ROOT_DIR = "/content/Mask_RCNN/dataset"

 def get_ax(rows=1, cols=1, size=16):
  """Return a Matplotlib Axes array to be used in all visualizations in the notebook.  Provide 
     a central point to control graph sizes. Adjust the size attribute to control how big to 
     render images"""
     _, ax = plt.subplots(rows, cols, figsize=(size*cols, size*rows))
          return ax

# Load validation dataset
# Must call before using the dataset
CUSTOM_DIR = "/content/Mask_RCNN/dataset"
dataset = CustomDataset()
dataset.load_custom(CUSTOM_DIR, "val")
dataset.prepare()
print("Images: \nClasses: ".format(len(dataset.image_ids), dataset.class_names))

我正在尝试使用我创建的自定义数据集的 maskrcnn 对 3 个图像进行分类。但我正在获取此错误

                                                                        "
objects: ['laptop', 'tab', 'phone']
numids [1, 2, 3]
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-16-32aa7809facd> in <module>()
     11 CUSTOM_DIR = "/content/Mask_RCNN/dataset"
     12 dataset = CustomDataset()
---> 13 dataset.load_custom(CUSTOM_DIR, "val")
     14 dataset.prepare()
     15 print("Images: \nClasses: ".format(len(dataset.image_ids), dataset.class_names))
7 frames
/usr/local/lib/python3.7/dist-packages/imageio/core/request.py in _parse_uri(self, uri)
    271                 # Reading: check that the file exists (but is allowed a dir)
    272                 if not os.path.exists(fn):
--> 273                     raise FileNotFoundError("No such file: '%s'" % fn)
    274             else:
    275                 # Writing: check that the directory to write to does exist

FileNotFoundError: No such file: '/content/Mask_RCNN/dataset/val/download.jpg'

我正在尝试使用我创建的自定义数据集的 maskrcnn 对 3 个图像进行分类。但我正在获取此错误

【问题讨论】:

构建绝对路径,不要依赖相对路径,你的 CWD 可能不是你期望的那样。 我应该怎么做才能制作绝对路径。我已经创建了 dataset 文件夹,其中我创建了 train 和 val @MikeScotty 你的CUSTOM_DIR 是一个相对路径(相对于你的项目根目录)对吧?相反,请提供完整路径(在您的系统上)。相关:***.com/questions/3430372/… 和 ***.com/questions/51520/… 您可以对其进行硬编码或相对于__file__ 构建它,这应该是可靠的。 我正在使用谷歌 colab。但仍然无法解决此错误@MikeScotty 【参考方案1】:

错误只是说在该路径中找不到文件。如果您要使用任何前进的路径,最好将它们保留为绝对路径而不是相对路径。我将为您提供入门工具,但由于我不知道您的文件布局,您需要填写空白。

相对路径与绝对路径(abspath)

这是一个简单的示例,假设您在 Windows 上并且想要获取该文件,该文件位于桌面上名为“images”的文件夹中。如果你的 cwd 是桌面,那么相对路径是\\images\\image.jpg,但绝对路径是&lt;drive letter&gt;:\Users\&lt;name&gt;\Desktop\images\image.jpg

Python 包含一些使用os.path 执行此操作的选项,最值得注意的是os.path.abspath()

环境变量

如果您希望代码可传输,请使用环境变量构建绝对路径。例如,如果您想要某人桌面的占位符,您可以使用:

os.environ["USERPROFILE"]

或在 linux/mac 上

os.environ["HOME"]

因此,使用我们之前的示例,我们可以使用以下方法获取图像文件夹的路径:

if os.name == "nt": # Windows
    desktop = os.path.join(os.environ["USERPROFILE"], "Desktop")
else:
    desktop = os.path.join(os.environ["HOME"], "Desktop) 

full_path = os.path.join(desktop, "images")

这会给我们&lt;drive letter&gt;:\Users\&lt;name&gt;\Desktop\images

以当前文件为起点

如果您的文件位于您正在运行的 python 文件附近的文件夹中,您还可以使用以下命令访问 python 文件所在的文件夹:

import os

python_file_folder = os.path.abspath(os.path.dirname(__file__))

然后从那里使用os.path.join()'s。这不太理想,但仍然比相对路径更好,因为相对路径基于您的终端运行文件的位置,而不是您运行的 python 文件所在的位置。因此,如果您从不同的目录运行文件,您的相对路径可能会在每次运行时发生变化,但除非您移动 python 文件,否则__file__ 保持不变。

额外资源

还有一些额外的细节可以在here或here找到

【讨论】:

我正在使用谷歌 colab。你能帮我吗?我会和你分享我的文件@Kieran Wood

以上是关于FileNotFoundError:没有这样的文件:'/content/Mask_RCNN/dataset/val/download.jpg'的主要内容,如果未能解决你的问题,请参考以下文章

PyInstaller + UI 文件 - FileNotFoundError: [Errno 2] 没有这样的文件或目录:

PyInstaller + UI 文件 - FileNotFoundError: [Errno 2] 没有这样的文件或目录:

FileNotFoundError:没有这样的文件:'/content/Mask_RCNN/dataset/val/download.jpg'

FileNotFoundError: [Errno 2] 没有这样的文件或目录 + os.execv

FileNotFoundError: [Errno 2] 没有这样的文件或目录,复制路径名后

docker-compose 错误:FileNotFoundError:[Errno 2] 没有这样的文件或目录