Lim Chin Hong
Lim Chin Hong

Reputation: 53

AttributeError: 'NoneType' object has no attribute 'write' while running YOLOv8

I tried to run Yolov8 on my computer using python 3.10.0, cuda 11.8 and I download pytorch using this command: pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118.

Sometimes it will run to the end successfully but sometimes it will stop and have the error shown below and sometimes it will have different error.

It seems related to dill and pickles, but I am not sure how to fix this. I have searched through the YOLOv8 discussion group and stack overflow, but I cannot find any potential solutions. What can I try next?

Below is the code:

import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('ultralytics/cfg/models/v8/yolov8n.yaml')
    model.train(data='datasets2/data.yaml',
                cache=True,
                imgsz=640,
                epochs=200,
                batch=4,
                close_mosaic=10,
                workers=8,
                device='0',
                seed=0,
                patience=200,
                optimizer='SGD', # using SGD
                # resume='', # last.pt path
                # amp=False, # close amp
                # fraction=0.2,
                project='runs/train',
                name='exp',
                )

This is the error:

  File "d:\chinhong\yolov8-20240314\ultralytics-main\train.py", line 52, in <module>
    train()
  File "d:\chinhong\yolov8-20240314\ultralytics-main\train.py", line 14, in train
    model.train(data='datasets2/data.yaml',
  File "d:\chinhong\yolov8-20240314\ultralytics-main\ultralytics\engine\model.py", line 602, in train
    self.trainer.train()
  File "d:\chinhong\yolov8-20240314\ultralytics-main\ultralytics\engine\trainer.py", line 209, in train
    self._do_train(world_size)
  File "d:\chinhong\yolov8-20240314\ultralytics-main\ultralytics\engine\trainer.py", line 437, in _do_train
    self.save_model()
  File "d:\chinhong\yolov8-20240314\ultralytics-main\ultralytics\engine\trainer.py", line 500, in save_model
    torch.save(ckpt, self.best)
  File "d:\chinhong\yolov8-20240314\ultralytics-main\ultralytics\utils\patches.py", line 82, in torch_save
    return _torch_save(*args, **kwargs)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\torch\serialization.py", line 619, in save
    _save(obj, opened_zipfile, pickle_module, pickle_protocol, _disable_byteorder_record)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\torch\serialization.py", line 831, in _save
    pickler.dump(obj)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 394, in dump
    StockPickler.dump(self, obj)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 487, in dump
    self.save(obj)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 1186, in save_module_dict
    StockPickler.save_dict(pickler, obj)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 972, in save_dict
    self._batch_setitems(obj.items())
  File "c:\pyver\py3.10.0\lib\pickle.py", line 998, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 717, in save_reduce
    save(state)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 1186, in save_module_dict
    StockPickler.save_dict(pickler, obj)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 972, in save_dict
    self._batch_setitems(obj.items())
  File "c:\pyver\py3.10.0\lib\pickle.py", line 998, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 713, in save_reduce
    self._batch_setitems(dictitems)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 1003, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 717, in save_reduce
    save(state)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 1186, in save_module_dict
    StockPickler.save_dict(pickler, obj)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 972, in save_dict
    self._batch_setitems(obj.items())
  File "c:\pyver\py3.10.0\lib\pickle.py", line 998, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 713, in save_reduce
    self._batch_setitems(dictitems)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 998, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 717, in save_reduce
    save(state)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 1186, in save_module_dict
    StockPickler.save_dict(pickler, obj)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 972, in save_dict
    self._batch_setitems(obj.items())
  File "c:\pyver\py3.10.0\lib\pickle.py", line 998, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 713, in save_reduce
    self._batch_setitems(dictitems)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 998, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 717, in save_reduce
    save(state)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 1186, in save_module_dict
    StockPickler.save_dict(pickler, obj)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 972, in save_dict
    self._batch_setitems(obj.items())
  File "c:\pyver\py3.10.0\lib\pickle.py", line 998, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 713, in save_reduce
    self._batch_setitems(dictitems)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 1003, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 717, in save_reduce
    save(state)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 1186, in save_module_dict
    StockPickler.save_dict(pickler, obj)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 972, in save_dict
    self._batch_setitems(obj.items())
  File "c:\pyver\py3.10.0\lib\pickle.py", line 998, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 713, in save_reduce
    self._batch_setitems(dictitems)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 998, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 717, in save_reduce
    save(state)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 1186, in save_module_dict
    StockPickler.save_dict(pickler, obj)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 972, in save_dict
    self._batch_setitems(obj.items())
  File "c:\pyver\py3.10.0\lib\pickle.py", line 998, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 713, in save_reduce
    self._batch_setitems(dictitems)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 998, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 717, in save_reduce
    save(state)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 560, in save
    f(self, obj)  # Call unbound method with explicit self
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 1186, in save_module_dict
    StockPickler.save_dict(pickler, obj)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 972, in save_dict
    self._batch_setitems(obj.items())
  File "c:\pyver\py3.10.0\lib\pickle.py", line 998, in _batch_setitems
    save(v)
  File "D:\chinhong\yolov8-20240314\myenv\lib\site-packages\dill\_dill.py", line 388, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 603, in save
    self.save_reduce(obj=obj, *rv)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 702, in save_reduce
    self.memoize(obj)
  File "c:\pyver\py3.10.0\lib\pickle.py", line 510, in memoize
    self.write(self.put(idx))
  File "c:\pyver\py3.10.0\lib\pickle.py", line 243, in write
    return self.current_frame.write(data)
AttributeError: 'NoneType' object has no attribute 'write'

Upvotes: 0

Views: 116

Answers (0)

Related Questions