
위의 오류는 Super Resolution과 관련해 코드를 실행하면서 먼저 만난 오류이다.
import cv2
img = "이미지 불러오기"
sr = cv2.dnn_superres.DnnSuperResImpl_create()
sr.readModel('ESPCN_x2.pb')
sr.setModel("espcn",2)
cv2.imshow('org',result)
cv2.imshow를 실행하자마자 계속해서 커널이 죽는 문제가 발생했다.
정확히 어떤 것 때문에 커널이 죽는지 파악이 안됐지만 superres를 모델에서 imshow를 불러오는 과정 중 충돌이 일어나는 것 같았다..
(메모리 할당량은 괜찮다고 판단했기 때문에)
그래서
from google.colab.patches import cv2_imshow
cv2_imshow(result)
이미지를 불러오는 방법만 바꿔주니 이미지가 화면에 잘 보였다.
그래서 잘 해결된 줄 알았으나...
EasyOCR과 코드를 합치면서 같은 문제가 발생했다.
EasyOCR 코드가 진행되면서
import easyocr
reader = easyocr.Reader(['ko'])
result_str = reader.readtext(result,detail=0)
로그를 찍어보니 마지막 줄이 실행될 때 계속 the kernel appears to have died. it will restart automatically. 👈 다음과 같은 오류가 발생했다.
이것 저것 검색해본 결과 메모리 할당으로 인한 오류가 가장 많이 나왔다.
하지만 위의 코드를 실행할 때 메모리 할당이 초과될 만큼의 코드는 아니라고 판단되었다.
EasyOCR kernel died로 여러가지 찾아본 결과,
세 가지 해결 방법이 있었다.
pythonos.environ['KMP_DUPLICATE_LIB_OK']='True' 실행나는 가장 간단한 방법인 1번을 실행해보았지만, 해결되지 않았다..

이렇게 👍 해결 된것으로 추정되는 엄지척이 3개나 있었지만..나는 해결이 되지 않았다.
일단 젤 간단하니 한번 실행해보는 것을 추천 !
(super resolution 때에도 실행해봤지만, 역시나 해결되지 않았었음)
저번 Super Resolution을 실행할 때, module 'cv2' has no attribute 'dnn_superres' update version 👈 이 오류를 만났었는데 단순히 opencv의 version을 변경해주었더니 잘 해결이 되었다.
그래서 또 버전 지원 문제가 아닐까? 라고 생각되었다.

여기도 버전 변경 후 해결했다는 후기가 있었다.
module 'cv2' has no attribute 'dnn_superres' update version 이 오류를 해결하기 위해
pip3 install opencv-contrib-python==4.5.5.62
로 버전을 바꿔줬었는데 여기서 버전 변경을 위해 다음과 같이 코드를 실행했다.
pip uninstall opencv-python
pip uninstall opencv-contrib-python
pip uninstall opencv-contrib-python-headless
(혹시 남아있는 opencv 때문에 버전이 꼬일 수 있어 opencv와 관련된 모든 것을 삭제 해줌)
pip3 install opencv-contrib-python==4.5.4.60
이렇게 opencv 버전을 4.5.4.60로 변경해준다.
kernel을 restarted해주고 실행하니 커널이 죽는 문제가 해결되었다.
EasyOCR 성능 개선을 위해 Super Resolution도 실행해줘야해 버전이 또 꼬이면 어쩌지 했지만 더행히 4.5.4.60 버전은 둘 다 오류 없이 진행됐다 !
[2번 방법] 으로 잘 해결됐기 때문에 메모리 할당을 늘려주는 방법을 진행하진 않았다.
(위에서 말한 것 처럼 메모리 할당이 초과할 만큼의 코드가 아니라고 판단했기 때문이다.)
좋은 정보 감사합니다.