You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行U-Net图像分割代码触发数组维度索引错误如何解决?

报错原因

你使用的是灰度X光图像,imread读取单通道灰度图时默认返回2维数组(维度为[高度, 宽度]),没有第三个通道维度,代码中直接用[:,:,:IMG_CHANNELS]索引第三个维度,因此触发索引越界错误。

修复方案

你只需要调整现有代码,不需要额外新增复杂处理步骤,修改点如下:

  • 调整第29行的图像读取逻辑,判断数组维度后手动补充通道维度:
# 原第29行代码替换为以下内容
img = imread(path + '/images/' + id_ + '.png')
# 2维灰度图手动补充通道维度,变成[高度, 宽度, 1]的3维数组
if len(img.shape) == 2:
    img = np.expand_dims(img, axis=-1)
img = img[:,:,:IMG_CHANNELS]
  • 修正代码中的路径笔误:你遍历mask文件时写的路径是path+'/omasks/',多了一个字母o,会后续触发路径不存在报错,改为:
for mask_file in next(os.walk(path+'/masks/'))[2]:
  • 修正Y_train赋值的缩进错误:目前Y_train[n]= mask写在mask遍历循环内部,会导致每读一个mask就覆盖一次赋值,需要把这行的缩进退一格,放到mask遍历循环的外部,等所有mask合并完成后再赋值。

内容的提问来源于stack exchange,提问作者Eila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:15:07