inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

NuclearDataset train과정에서 오류가 발생합니다.

525

김동욱

작성한 질문수 2

0

cpu사용량이 올라가다가 BlockingIOError: [Errno 11] Resource temporarily unavailable 가 발생합니다.GPU는 사용량은 없습니다. data augumentaion과정에서 발생하는 것 같습니다.

배치숫자를 1로 바꾸어서 해도 동일한 오류가 발생합니다. 어떤 이유일까요? 강의 도중에 augmenters가 무겁다고 하셨는데, 혹시 저기에 적용할만한 다른 img_aug를 추천해주실 수 있을까요?

감사합니다.

BlockingIOError                           Traceback (most recent call last)
<ipython-input-38-ce418a61f9ea> in <module>
      6             learning_rate=train_config.LEARNING_RATE,
      7             epochs=40, augmentation=img_aug,
----> 8             layers='all')

~/.conda/envs/tf113/lib/python3.6/site-packages/mask_rcnn-2.1-py3.6.egg/mrcnn/model.py in train(self, train_dataset, val_dataset, learning_rate, epochs, layers, augmentation, custom_callbacks, no_augmentation_sources)
   2372             max_queue_size=100,
   2373             workers=workers,
-> 2374             use_multiprocessing=True,
   2375         )
   2376         self.epoch = max(self.epoch, epochs)

~/.conda/envs/tf113/lib/python3.6/site-packages/keras/legacy/interfaces.py in wrapper(*args, **kwargs)
     89                 warnings.warn('Update your `' + object_name +
     90                               '` call to the Keras 2 API: ' + signature, stacklevel=2)
---> 91             return func(*args, **kwargs)
     92         wrapper._original_function = func
     93         return wrapper

~/.conda/envs/tf113/lib/python3.6/site-packages/keras/engine/training.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
   1413             use_multiprocessing=use_multiprocessing,
   1414             shuffle=shuffle,
-> 1415             initial_epoch=initial_epoch)
   1416 
   1417     @interfaces.legacy_generator_methods_support

~/.conda/envs/tf113/lib/python3.6/site-packages/keras/engine/training_generator.py in fit_generator(model, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
    157                     use_multiprocessing=use_multiprocessing,
    158                     wait_time=wait_time)
--> 159             enqueuer.start(workers=workers, max_queue_size=max_queue_size)
    160             output_generator = enqueuer.get()
    161         else:

~/.conda/envs/tf113/lib/python3.6/site-packages/keras/utils/data_utils.py in start(self, workers, max_queue_size)
    724                     thread = threading.Thread(target=self._data_generator_task)
    725                 self._threads.append(thread)
--> 726                 thread.start()
    727         except:
    728             self.stop()

~/.conda/envs/tf113/lib/python3.6/multiprocessing/process.py in start(self)
    103                'daemonic processes are not allowed to have children'
    104         _cleanup()
--> 105         self._popen = self._Popen(self)
    106         self._sentinel = self._popen.sentinel
    107         # Avoid a refcycle if the target function holds an indirect

~/.conda/envs/tf113/lib/python3.6/multiprocessing/context.py in _Popen(process_obj)
    221     @staticmethod
    222     def _Popen(process_obj):
--> 223         return _default_context.get_context().Process._Popen(process_obj)
    224 
    225 class DefaultContext(BaseContext):

~/.conda/envs/tf113/lib/python3.6/multiprocessing/context.py in _Popen(process_obj)
    275         def _Popen(process_obj):
    276             from .popen_fork import Popen
--> 277             return Popen(process_obj)
    278 
    279     class SpawnProcess(process.BaseProcess):

~/.conda/envs/tf113/lib/python3.6/multiprocessing/popen_fork.py in __init__(self, process_obj)
     17         util._flush_std_streams()
     18         self.returncode = None
---> 19         self._launch(process_obj)
     20 
     21     def duplicate_for_child(self, fd):

~/.conda/envs/tf113/lib/python3.6/multiprocessing/popen_fork.py in _launch(self, process_obj)
     64         code = 1
     65         parent_r, child_w = os.pipe()
---> 66         self.pid = os.fork()
     67         if self.pid == 0:
     68             try:

BlockingIOError: [Errno 11] Resource temporarily unavailable

딥러닝 tensorflow python 머신러닝 배워볼래요? keras 컴퓨터-비전

답변 4

0

김동욱

감사합니다. 저는  imgaug를 제외하고 수행했더니 문제없이 수행되었습니다. 다만 처음에는 gpu를 활용하는것 같더니 이후 시도에서는  cpu만 써서 시간이 오래걸리는 문제를 해결하려고 하고있습니다. 제 서버말고 colab에 올려서 해봐도 동일하네요. 문제를 해결하면 또 올리겠습니다

0

권 철민

문제를 잘 찾으셨군요. 해결되어서 다행입니다.

0

sghan73

저는 balloon_model.train(...) 실행시, 같은 문제가 발생하여 다음과 같이 수정하여 사용하고 있습니다.
1) 다운로드 받은 Mask_RCNN/mrcnn/model.py 에서 use_multiprocessing=False 로 수정하여 저장
2) python   setup.py    install   명령을 사용하여 Mask_RCNN 재배포

혹시, 해당 기능이 성능 상 문제가 된다면, 나중에 다시 use_multiprocessing=True로 수정하여 재배포하면 될 것 같네요.

정상동작 확인했으며, train() 소요시간은 12분 58초 걸렸네요. 
(use_multiprocessing=True 로 했을 경우 시간이 얼마나 걸릴까요?)
(GPU는 Titan X(메모리 12GB) 사용 중입니다.)

#---[관련 소스코드]--------

print("Training network heads")
balloon_model.train(dataset_train, dataset_val,
            learning_rate=train_config.LEARNING_RATE,
            epochs=30,
            layers='heads')

#---[에러내용]-------------

#~/anaconda3/envs/tf113/lib/python3.6/site-packages/mask_rcnn-2.1-py3.6.egg/mrcnn/model.py in train(self, train_dataset, val_dataset, learning_rate, epochs, layers, augmentation, custom_callbacks, no_augmentation_sources)
#   2372             max_queue_size=100,
#   2373             workers=workers,
#-> 2374             use_multiprocessing=True,
#:
# EOFError
#Process Process-15:
#  File "../anaconda3/envs/tf113/lib/python3.6/multiprocessing/connection.py", line 407, in _recv_bytes
#    buf = self._recv(4)
#EOFError

#-----[수정 후 정상 동작함: 소요시간 12분 58초]-----------

:
Epoch 30/30
61/61 [==============================] - 22s 361ms/step - loss: 0.1355 - rpn_class_loss: 0.0026 - rpn_bbox_loss: 0.0274 - mrcnn_class_loss: 0.0214 - mrcnn_bbox_loss: 0.0211 - mrcnn_mask_loss: 0.0630 - val_loss: 0.6885 - val_rpn_class_loss: 0.0778 - val_rpn_bbox_loss: 0.3417 - val_mrcnn_class_loss: 0.0657 - val_mrcnn_bbox_loss: 0.0819 - val_mrcnn_mask_loss: 0.1214
time: 12min 58s


0

권 철민

안녕하십니까,

일단 제 환경에서는 다시 mask_rcnn 패키지를 다운로드 받아서 학습을 해봐도 정상적으로 동작합니다.

오류 내용으로만 보면 fit_generator( )호출 시 use_multiprocessing=True에서 과다 메모리 사용으로 문제가 있다고 나옵니다. 원래 keras의 use_multiprocessing=True는 좀 문제가 있지만 matter port mask_rnn 패키지에서는 default로 use_multiprocessing=True 로 적용되어도 별 문제가 없었습니다.

1. 수행 환경이 리눅스인지, tensorflow 환경이 1.13 인지 확인 부탁드립니다. 

2.  주피터 노트북을 재 기동하거나, 커널은 다시 Restart 후에 수행 부탁드립니다.  다른 커널은 수행하지 않은 채로 해당 nucleus 주피터 노트북만 기동하시고 학습부탁드립니다.

강의 환경설정 질문

0

38

2

Custom Dataset에서의 polygon 정보 관련

0

83

3

cvat.ai 보안 수준이 궁금합니다

0

78

2

캐클 nucleus 챌린지 runpod 실습 코드 에러 질문드립니다.

0

94

3

추론 결과의 Precision(또는 mAP) 평가 방법

0

83

2

mmdetection mask rcnn inferenct 실습 시 runpod 템플릿 관해서 질문드립니다.

0

58

2

runpod에서 google drive 연결 시 오류 발생

0

106

2

로드맵 선택

0

65

1

mmcv

0

56

2

Anchor box의 Positive 처리 위치

0

60

2

해당 강의 runpod 적용 후 에러 제보드립니다

0

84

2

run pod credit 관련 제보

0

96

2

mmdetection 2.x과 3.x 호환 관련 표기

0

76

2

mm_faster_rcnn_train_kitti.ipynb 실행 오류

0

94

3

질문 드립니다.

0

75

3

mm_faster_rcnn_train_coco_bccd 실행 오류 질문드립니다.

0

77

1

강사님께 수정을 제안드리고 싶은 것이 있습니다.

0

92

1

google automl efficientdet 다운로드 및 설치 오류

0

72

1

이상 탐지에 사용할 비전 기술 조언 부탁드립니다.

0

101

2

OpenCV 관련 질문드립니다.

0

70

2

mmcv 설치관련해서 문의드려요

0

329

3

강의 구성 관련해서 질문이 있습니다

1

135

2

모델 변환 성능 질문드립니다.

0

122

1

NMS 로직 문의 드려요

0

112

2