keras-yolo视频测试问题:AtributeError: 'NoneType' object has no attribute '__array_interface__',已成功解决!

本文解决了在使用keras-yolo进行视频检测时遇到的AttributeError问题,详细分析了错误原因,并提供了修改源代码的具体步骤,确保视频检测顺利进行。


成功解决AttributeError: ‘NoneType’ object has no attribute 'array_interface’问题

网上找了一大圈,都没有找到有用的回答,通过摸索试错,终于找出来了问题所在,记录下来,希望能够帮助到小伙伴们。

问题来源

“AttributeError: ‘NoneType’ object has no attribute ‘array_interface’”这个错误是我在测试keras-yolo时候出现的问题,当我使用Adamdad大佬开源的代码进行视频检测python yolo_video.py时,出现了如下的错误:
在这里插入图片描述

问题分析

分析问题,笔者发现,此代码并不是完全不能运行,而是运行到结束的时候,出现了此错误,通过阅读理解代码发现,是因为在读取到最后视频时候,OpenCV读取最后的帧是空的,没有内容,所以出现了如上问题

解决方法

修改源代码yolo.py中的代码,第190行之后添加如下代码:

if(return_value == False) # 判断读取是否有值,即判断是否读取至视频结尾
	print(it's end of video!") # 输出读取至结尾信息
	break  # 跳出while循环

这样修改就解决问题了,欢迎尝试,如有问题,欢迎留言交流!

根据提供的代码和错误信息 `AttributeError: 'NoneType' object has no attribute 'update_state'`,这个错误通常发生在尝试调用一个未初始化或为 `None` 的对象的方法时。具体到这段代码中,可能的原因是 `_loss_tracker` 没有被正确初始化或使用。 ### 分析与解决方案 1. **检查 `_loss_tracker` 初始化**: - 在 `__init__` 方法中,`_loss_tracker` 被初始化为 `Mean(name="loss")`,这是一个 Keras 的度量对象。 - 如果 `_loss_tracker` 是 `None`,则可能是导入或初始化过程中出现了问题。 2. **确保所有依赖项正确导入**: - 确认 `from keras.metrics import Mean` 这一行没有问题,并且 `keras` 和 `tensorflow` 的版本兼容。 3. **检查 `_loss_tracker` 的使用**: - 查找代码中 `_loss_tracker.update_state` 的调用位置,确认该方法是否被正确调用。 ### 具体步骤 1. **验证导入**: ```python from keras.metrics import Mean ``` 2. **检查初始化**: ```python class CGAN(): def __init__(self): # other initialization code self._loss_tracker = Mean(name="loss") # other initialization code ``` 3. **查找并修复 `_loss_tracker.update_state` 的调用**: - 检查 `train` 方法或其他相关方法中是否有对 `_loss_tracker.update_state` 的调用。 - 确认 `_loss_tracker` 不为 `None`。 ### 示例修正 假设在 `train` 方法中有如下调用: ```python def train(self): # other training code for i in range(self.iter): # other training code d_loss = 0.5 * np.add(d_loss_real, d_loss_fake) g_loss = self.combined.train_on_batch(noise, valid) # Update loss tracker self._loss_tracker.update_state(g_loss) if i % self.save_interval == 0: print("%d [D loss: %f, acc.: %.2f%%] [G loss: %f]" % (i, d_loss[0], 100 * d_loss[1], g_loss)) self.img_export(i) ``` 确保 `_loss_tracker` 已经被正确初始化并且在调用 `update_state` 之前不为 `None`。 ### 总结 通过以上步骤,可以解决 `AttributeError: 'NoneType' object has no attribute 'update_state'` 错误。主要原因是 `_loss_tracker` 没有被正确初始化或在使用前为 `None`。确保所有依赖项正确导入,并且在调用 `update_state` 之前 `_loss_tracker` 已经被初始化。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值