• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

웹카메라 손글씨 영상 인식 예제 실행 시 오류 질문

20.09.04 23:07 작성 조회수 724

0

수강신청하여 차근차근 코드를 보며 따라가고 있는 수강생입니다.

현재 "웹카메라 손글씨 영상 인식 딥러닝 프로그램" 부분의 예제를 수정 없이 따라 가고 있습니다.

아래의 어느분께서 질문 하셨듯이, 종이에 숫자를 적어서 웹카메라 화면에 찍히면, 초록색 박스는 잘 그려지지만, 저 역시 계속 "Number is : 0" 이라는 결과 값만 나타내고 있습니다.

종이에 적힌 숫자가 초록색 박스까지 잘 그려지는 것을 보면, 숫자는 잘 가져 오는 것으로 보여서, 확인 하기 위해, 디버깅 목적으로  "cv2.imshow('img_roi', img_roi)" 코드를 아래와 같이, threshold 를 숫자 영상에 적용시킨 결과 값을 다른 창으로 찍어 보았습니다. 

      img_roi = thresh[y_position:y+h+margin, x_position:x+w+margin]
      num = cv2.resize(img_roi, (SZ,SZ))
      num = num.astype('float32') / 255.
      cv2.imshow('img_roi', img_roi)

결과는 아래와 같이 나옵니다. 이 결과로 미루어 보면, 5라는 숫자가 에지로 잘 깨끗하게 인식되는 것으로 보이므로, 아마도 코드에서 여기까지 실행 되는 것 까지는 문제 없는 것으로 보입니다.

다음 단계로, 이젠 러닝머신 모델을 적용 시키는 곳에 문제가 있는 지 보기 위해, 

      result = model.predict(np.array([num]))

      print(result)

위에 보시는 바와 같이, print(result) 를 이용하여 model 의 예측 값을 찍어 봤는데, 아래 결과와 같이 항상 0 만 가장 높은 값으로 예측을 하고 있었습니다. 

[[21.99546   -7.138553  -5.428708  -7.0515757 -5.142455  -7.3482  -9.117873  -7.2267165 -6.30136   -4.09639  ]]

이러한 현상은 다른 숫자를 가지고 테스트 해도, 항상 0 값만 예측을 하고 있습니다. 

마지막으로 제가 해본 것은 혹시 model 을 불러 들이는 부분이 잘못되었는 가를 체크 하기 위해서, 아래와 같이 

model = tf.keras.models.load_model('digits_model.h5') 함수 이후에, model.summary() 를 추가하여 모델의 상태 체크해 보았습니다. 

model = tf.keras.models.load_model('digits_model.h5')

model.summary()

그 결과는 아래와 같습니다.

여기서 질문이 있습니다. 

노마드님께서 올리신 예제 "RBP_DL12_openCV_get_image.jpynb" 를 jupyter notebook 에서 실행 시키다 보면, model 의 summary 를 print 하는 부분이 동일 하게 존재 하여, step 별로 따라 가면서 실행 시키면, summary 의 결과가 차이점이 있다는 것을 발견 하게 되었습니다. 아래는 "RBP_DL12_openCV_get_image.jpynb" 의 예제의 model.summary()의 결과 입니다. 아래에 보시는 바와 같이  "RBP_DL12_openCV_get_image.jpynb"의 예제에서 print 한 model.summary 에서는 4개의 layer 가 보이고, 위에서 보여진 "RBP_DL_MNIST_camera.py" 의 예제에서 print 한 model.summary 에서는 3개의 layer 만 보입니다. 

혹시 이것이 문제인가요?

만약, 이것이 문제라면, 어떻게 이문제를 풀수가 있는지요?

답변 5

·

답변을 작성해보세요.

0

안녕하세요?

결국 성공하셨네요. 축하합니다.

수강생 몇 분들이 동일한 문제를 겪으셔서 확인해보니 이전 MNIST예제에서 좀 다른 형태로 모델을 구성해서 그런 것이었습니다. 잘 아시겠지만 모델을 만드는 방법은 수학공식처럼 정해진 것이 아니고 다른 방법을 사용할 수 있습니다.

그래서 이전에 만들어진 모델에 맞게 prediction하는 이 프로그램에서는 0을 보여줬던 겁니다. 혼동을 드려서 미안합니다.

뒤에서 모겔 정확도 99%로 높이는 특별강의에서는 또 다른 방식으로 MNIST를 만들어 볼겁니다.

감사합니다.   

0

권혁준님의 프로필

권혁준

질문자

2020.09.08

링크걸어주신 곳에서 모델 파일을 다시 다운 로드 해서 실행 해보니, 아래와 같이 잘 나오네요. 감사합니다.

0

안녕하세요?

아래 링크의 모델파일로 다시 해보시겠어요?

https://drive.google.com/file/d/172SfEoa_QmJ2si9QdDjYPenBnwD8ecl-/view?usp=sharing

감사합니다.

0

권혁준님의 프로필

권혁준

질문자

2020.09.05

사용하고 있는 model 파일은 링크를 걸어 주신 크리애플 웹사이트에서 다운 받아서 사용하고 있습니다.

다운 받은 zip 파일을 풀어서, rnn 폴더 안에 있는 예제 파일과 모델 파일을 사용하여 테스트 하고 있습니다.

다시 한번 확인 하여 보아도 모델 파일 이름은 digits_model.h5  로 동일 하고, 재 테스트 결과 또한 계속 0 을 출력 합니다.

결국, 말씀 하신대로 모델 파일을 따로 보내 주시면, 그걸로 테스트를 해봐야 할 것 같습니다.

모델 파일은 제가 어떻게 받아 볼 수 있는 지요?

0

안녕하세요?

참 열심히 공부하고 코드까지 확인하시는 모습이 훌륭하십니다.

최근에 몇 분이 이렇게 0값이 나와서 모델을 의심하고 제가 다시 실행해 봤는데 잘 되서 이상하다 생각하고 있었습니다.

말씀하신데로 모델이 의심스러운데 혹시 같은 모델 digits_model.h5 파일을 사용하고 계신가요?

다시 확인해 주시고 그래도 안되면 제가 모델파일을 따로 보내드리겠습니다.

감사합니다