• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

custom TF_Record 파일 생성 시 질문이 있습니다!

21.06.29 16:42 작성 조회수 31

0

삭제된 글입니다

답변 2

·

답변을 작성해보세요.

0

get_tensor_detected_image() 함수에서  

if score > 0.4 인 부분을 없앤 다음에 print(caption) 해서 어떤 것이 output 되는지 확인해 보시지요.

ksg970320님의 프로필

ksg970320

질문자

2021.06.30

말씀하신대로, get_tensor_detected_image() 함수에서 if score > 0.4인 부분을 없앤 다음에 모델을 돌려 실행해보니 아래 사진과 같이 출력되었습니다.

score가 0.4 보다 낮은건 제외되니, 가장 높은 score가 얼마인지 확인한 뒤 그것만 그림으로 출력해 보시면 될 것 같습니다. 

ksg970320님의 프로필

ksg970320

질문자

2021.06.30

바운딩박스의 확률을 확인해본 결과 모두 0.17 정도에서 그치는 것 같습니다... score의 값을 적당한 값으로 조정해 보았지만, 모델자체가 학습한 객체를 인식을 못하는 것 같습니다.

혹시 pretrained 모델을 ssd 가 아닌 faster-rcnn 이나 다른 걸로 바꿔서 진행해봐도 같은결과가 나올까요...?

유튜브에 좀 찾아보니 config 파일에서 아래 사진의 num_examples을 변경하는 사람도 있더라구요! 혹시 저 값도 변경해줘야 되는 건가요...?

부족한게 많아 많은 질문해서 죄송합니다.

현재는 SSD 모델이 실제로도 Detect를 하지 못한것 같습니다.  아래와 같이 테스트를 해보시지요. 

1. 이미지 갯수를 더 늘려서 테스트 

2. faster rcnn을 사용해서 모델의 문제 인지 확인

3. 이미지 사이즈를 더 증가 시킴. pipeline config에서 model->ssd->image_resizer-> keep_aspect_ratio_resizer 에서 min_dimension와 max_dimension을 모두 1280으로 증가

이때 배치 사이즈는 4 정도로 감소. 만약 GPU Memory OOM이 발생 시에는 1280-> 800 으로 감소

그리고 학습을 수행할 때 Loss가 출력이 될 것입니다. 마지막 loss가 어느정도 나오는지 올려주셨으면 합니다. 

ksg970320님의 프로필

ksg970320

질문자

2021.06.30

배치사이즈는 아래 사진의 부분을 16 -> 4로 변경해보라는 말씀이시죠???

네 맞습니다. 

ksg970320님의 프로필

ksg970320

질문자

2021.07.01

교수님 몇가지 질문이 있습니다!

1. 학습하는 코드를 cmd 창에서 실행하니 아래와 같은 에러가 발생하였습니다. 구글에 검색을 해보니 표시한 부분의 step 값이 처음에는 0으로 되어 있었는데 그 부분이 문제인 것 같아서 일단 1로 변경했습니다.

2. 1번 문제를 해결하니 다음과 같은 오류가 발생하였습니다! 정확히 무엇이 문제인지는 파악을 못했지만 느낌상 OOM 오류인 것 같았습니다. 교수님께서 16에서 4로 낮춰보라고 하셨지만, 저는 1로 낮춰서 실행해 보았는데 그 이후부터는 다음과 같은 오류가 발생하지 않았습니다. 개인 GPU는 GTX 1660 SUPER 6GM 사용하고 있습니다.

1, 2번에 제가 설명드린 오류를 해결하긴 했는데, 제가 올바른 방법으로 해결한게 맞는지 피드백 받고 싶어서 질문하게 되었습니다!

->pretrained 모델을 ssd에서 faster_rcnn으로 변경해서 학습을 진행해보고, 모델로 inference를 실행해 보니 다음과 같이 잘 작동하였습니다. loss는 0.02 정도 되었던것 같습니다. config 파일에서 num_steps (학습횟수) 값이 디폴트로 200000 이었는데, 저는 일단 결과만 빠르게 확인해보기위해 50000 번만 진행해 보았습니다. 이번에 피드백 받고 200000 번 다시 돌려서 정확한 loss 값을 측정해 보겠습니다!

잘 동작한다니 다행이군요.

고치신 부분도 맞게 적용하신것 같습니다. 학습 시간이 너무 느리면 batch size는 4 정도로 늘리셔도 될 것 같습니다.

0

안녕하십니까,

어떻게 tfrecord를 만드셨는지, model config는 어떻게 설정하셨는지 알 수 없어서 답변을 드리기가 어렵군요.

제가 이번에 개정판 강의를 만들었습니다.여기에 TFRecord를 생성하는 방법을 기술했습니다. 만드신 TFRecord가 제대로 만들었는지 확신이 없으시다면, 해당 강의 내용을 참조해 보십시요. Tensorflow object detection API 기반이 아니라 AutoML EfficientDet 패키지를 사용하기 때문에 차이는 있습니다만 이해하시는데는  큰 문제는 없을 것이라 생각됩니다.

섹션 14 AutoML EfficientDet 실습 02 에서 해당 내용을 참조하실 수 있습니다.

감사합니다.

ksg970320님의 프로필

ksg970320

질문자

2021.06.30

교수님 말씀을 듣고, config 파일을 계속 확인해본 결과 

num_classes 부분이 옥스포드펫 데이터셋을 학습시킬 때 쓰이던 37로 되어있었습니다. 하지만 현재 저는 로봇 1개만 detect하는 경우여서 1로 수정을 했고, 희망을 품고 학습을 다시 진행하였습니다.

하지만, 이번에는 저번과 같이 여러개의 바운딩 박스가 생기는 문제는 발생하지 않았지만, 로봇을 아예 인식하지 못하는 문제가 발생하였습니다...

-> tf_record 를 생성하는 코드입니다! (강의해서 설명하신거 똑같이 진행하였습니다.)

->학습한 모델을 이용하여 inference 하는 과정인데 로봇을 detect 하지 못합니다...

config 파일 같은 경우는 수업시간에 교수님이 진행하신 것 그대로 진행했습니다. 

-num_classes : 37 에서 1로 변경 (검출할 객체가 1개이므로!)

-fine_tune_checkpoint : pretrained 된 모델 경로 지정해주기

-train, val record 파일 경로 지정해주기!

-batch_size : 16으로 지정하기

-num_steps : 15000으로 지정하기

객체 인식을 왜 못하는지, 어느부분이 문제인지 감이 잡히지 않습니다... ㅠㅠ