Closed seoulsky-field closed 2 years ago
scikit-learn에 있는 CountVectorizer를 이용하여 Vectorize 후 word count등을 이용하여 Euclidean distance를 구해보았으나 inference하는 시간이 너무 오래 걸리는 것으로 보여 Stop함
Jaccard similarity 기법을 이용해보았는데 생각했던 방법과 가장 유사하고 시간도 나쁘지 않게 걸리는 것으로 보여 해당 기법을 이용하는 것으로 결정함
적용 완료 후 issue close하겠습니다.
jaccard simlarity 단편적인 결과 공유 (1)
index 181번 // 앞면: "SL" // 뒷면: "CL" index 377번 // 앞면: "SL // 뒷면: SC" index 7796번 // 앞면: "CLS" // 뒷면: None index 7822번 // 앞면: "SCL" // 뒷면: None index 19154번 // 앞면: "CLS" // 뒷면: None index 19208번 // 앞면: "CLS" // 뒷면: None index 23081번 // 앞면: "SC" // 뒷면: "LC"
단, 대부분의 알약이 색상 및 제형으로 구분 가능함
jaccard simlarity 단편적인 결과 공유 (2)
단, 대부분의 알약이 색상 및 제형으로 구분 가능하며 Custom Jaccard Similarity를 적용할 경우 유사도 1.0을 보입니다.
노션에 추가적으로 기록하였습니다. (https://seoulsky-field.notion.site/06-07-61ad6224eede44ffb99d9ae901e4582b) 보시고 의견 부탁드립니다. @tnsgh9603 @sodabeans @justbeaver97 @SSANGYOON
저만 이런가요..? 사진이 너무 많아서 그런지 로딩 자체가 안 되네요..ㅜㅜ
@justbeaver97 너무 안보이신다면 https://seoulsky-field.notion.site/Model-OCR-Text-Recognition-8bdeb0b8c8cc47e7a65e2a7bde36aff0 에서 제일 하단에 토글로 "아주 작은 결과 추가 분석..!"을 참고하시면 됩니다!
읽어봤는데, 저는 유사도가 높은 알약이 많은 것은 상관이 없을 것 같습니다. 이미 색상/알약 타입/모양 이 3가지로 분류를 한 것에 유사도가 높은 것들을 걸러낸다면, 후보군을 더 줄일 수 있는 오히려 좋은 기회라고 생각합니다. 다만, 유사도가 높은 알약 중에 ground truth가 무조건 존재하면 되겠죠.
@seoulsky-field 공유해주신 2번째 케이스 같은 경우는 정답 index가 1336인데 유사도가 1.0인 7개의 케이스 중에 없는 경우인가요?
@tnsgh9603 넵. Jaccard Similarity에 계산하였을 때 유사도가 1.0인 7개의 케이스에는 없고 (아마 pred에 대한 Jaccard Similarity가 0.6일거에요.) Custom Jaccard Similarity(분모를 Union(gt, pred)의 len이 아닌 pred의 len으로만 따졌을 때)에 계산하였을 때 유사도가 1.0입니다.
@seoulsky-field 오 좋습니다. 이걸로 후보군을 더 줄일 수 있으면 안 쓸 이유가 없을 것 같네요. 다만, 예현님이 말씀하신 것처럼 GT가 후보 중에 있다는 게 전제가 되기만 하면 될 것 같습니다.
필터링해서 어느 정도 걸러주는 작업만 잘 된다면 적용하는게 좋겠습니다! 다만 앞서 말씀하신 것처럼 GT가 후보군에 있어야 할 텐데, 그건 전 단계인 텍스트 모델 prediction에서 문제없다면 괜찮지 않을까 싶습니다.
Custom data에 대해서 deep-text-recognition-benchmark의 성능이 좋지 않은 것으로 판별되어 OCR은 "추후 연구"로 진행하는 것으로 결정되었습니다.
What
OCR 모델의 최종 결과물인 Text 예측 string을 정답과 비교하기 위한 Similarity 등의 metric을 찾고 가장 적합한 metric을 적용하여 넘깁니다.
Why
OCR 모델의 정확도를 고려해보면 "완전히 일치"만 하는 상황이 나타나지 않습니다. 또한, '일치'가 아닌 '포함'만을 사용한다고 했을 때, 너무 많은 후보군이 발생하게 됩니다. 따라서 '포함'과 '일치'를 모두 아우를 수 있는 유사도를 이용하기로 생각하였습니다.
How