keras-yolo3项目之二:utils.py文件

本文深入探讨了Keras YOLO3项目中utils.py文件的重要作用,详细解析了在模型训练过程中所使用的各种实用功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

utils.py是模型训练时其他实用功能。

from functools import reduce

from PIL import Image
import numpy as np
from matplotlib.colors import rgb_to_hsv, hsv_to_rgb

def compose(*funcs):
    """
    Compose arbitrarily many functions, evaluated left to right.
    将多个函数进行组合,从左到右进行计算。
    Reference: https://mathieularose.com/function-composition-in-python/
    """
    # return lambda x: reduce(lambda v, f: f(v), funcs, x)
    if funcs:
        return reduce(lambda f, g: lambda *a, **kw: g(f(*a, **kw)), funcs)
    else:
        raise ValueError('Composition of empty sequence not supported.')

def letterbox_image(image, size):
    '''
    resize image with unchanged aspect ratio using padding
    将图片调整为指定大小
    '''
    iw, ih = image.size
    w, h = size
    scale = min(w/iw, h/ih)
    nw = int(iw*scale)
    nh = int(ih*scale)

    image = image.resize((nw,nh), Image.BICUBIC)
    new_image = Image.new('RGB', size, (128,128,128))
    new_image.paste(image, ((w-nw)//2, (h-nh)//2))
    return new_image

def rand(a=0, b=1):
    """
    将生成的符合[0,1]均匀分布的随机数扩充至[a,b]之间
	"""
    return np.random.rand()*(b-a) + a

def get_random_data(annotation_line, input_shape, random=True, max_boxes=20, jitter
### ModuleNotFoundError 错误解决方案 在 Python 中遇到 `ModuleNotFoundError` 的情况通常是由于模块未正确安装、路径配置不正确或命名冲突等原因引起的。以下是针对该问题的具体分析和解决办法: #### 1. 检查模块是否存在并正确安装 如果提示找不到名为 `'utils.engine'` 或其他类似的模块,可能是因为目标模块尚未被正确安装到环境中。可以运行以下命令来验证模块的存在性: ```bash pip list | grep utils ``` 如果没有找到对应的模块,则需要通过 pip 安装它。例如,对于 YOLOv5 和 Ultralytics 工具包的情况,可以通过以下方式重新安装依赖项[^2]: ```bash pip uninstall ultralytics -y pip install ultralytics ``` #### 2. 验证环境变量设置是否正确 有时即使已成功安装模块,在某些情况下仍可能出现无法导入的现象。这可能是由于当前工作目录不在系统的 PYTHONPATH 路径中所致。为了确认这一点,可以在脚本开头打印 sys.path 来查看搜索路径列表: ```python import sys print(sys.path) ``` 确保项目的根目录以及子模块所在的相对路径均已被加入其中。 #### 3. 处理多项目间互相调用引发的问题 当存在多个版本的相同名称库共存于不同位置时(如同一电脑上同时有若干个独立开发但结构相似的YOLO工程),容易造成混淆从而触发此类异常。正如提到过的那样,“当下级推理文件试图加载上级模型项目里的工具类而非本地副本时”,就可能发生这种状况[^3] 。因此建议采取措施隔离各个实例之间的干扰,比如单独创建虚拟envs给每一个应用使用专属copy of dependencies. #### 4. 更新至最新版框架/SDK 部分旧版本可能存在兼容性缺陷亦或是API变更导致原本正常工作的代码现在报错;所以适时升级相关软件栈也是排除故障的有效手段之一。以 TensorFlow Keras 子集为例,早期分离出来作为独立组件发布之后再整合回母体内部形成统一接口层期间经历了不少调整优化过程,故此若遭遇类似于 “No module named tensorflow.keras” 这样的提示信息的话,不妨试试切换成较新的发行号看看能否解决问题[^1]: ```bash pip install --upgrade tensorflow ``` 以上就是关于如何应对Python里因缺失指定package所造成的ModuleNotFound情形的一些常见策略总结。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

great-wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值