boostcampaitech4lv23cv1 / level2_dataannotation_cv-level2-cv-01

Data Annotation Competition - 부스트캠프 AI Tech 4기
1 stars 2 forks source link

EXP: ICDAR Languages #13

Closed KidsareBornStars closed 1 year ago

KidsareBornStars commented 1 year ago

exp letsgo

KidsareBornStars commented 1 year ago

ICDAR2017

ICDAR2019

KidsareBornStars commented 1 year ago

train.py에서 데이터셋 만들어줄 때

train_dataset = SceneTextDataset(data_dir, split='train', image_size=image_size, crop_size=input_size) 윗줄을

ICDAR19_ko_dataset = SceneTextDataset(data_dir, split='ICDAR_Korean_train', image_size=image_size)
train_dataset = SceneTextDataset(data_dir, split='train', image_size=image_size, crop_size=input_size)=input_size)
ICDAR19_en_dataset = SceneTextDataset(data_dir, split='ICDAR_Latin_train', image_size=image_size, crop_size=input_size)
train_dataset = ConcatDataset([t_ICDAR19_en_dataset,t_ICDAR19_ko_dataset])

아래처럼 바꾸어주었다

wooyeolBaek commented 1 year ago

ko+en로 학습중인 것 설명

KidsareBornStars commented 1 year ago

t_ICDAR19_ko_dataset랑 t_ICDAR19_en_dataset 는 json 어떻게 나눠준거야?

그거 범준이가 준 거에서 데이터프레임 만든다음 df.describe()에서 num_bbox인가 25%랑 50%의 중간을 few로, 50%랑 75%의 중간을 many로 했슴다

wooyeolBaek commented 1 year ago

아아 그냥 무시해도 될듯 2017이랑 구조가 다르네 00001 - 01000: Arabic 01001 - 02000: English 02001 - 03000: French 03001 - 04000: Chinese 04001 - 05000: German 05001 - 06000: Korean 06001 - 07000: Japanese 07001 - 08000: Italian 08001 - 09000: Bangla 09001 - 10000: Hindi

그럼 여기서 1001 ~ 2000 & 5001 ~ 6000 사용한거지??

KidsareBornStars commented 1 year ago

그거 형이 준 ipynb기준으로 언어별로 하나하나 나눠서 그걸 stratifiedkfold k=2로 줘서 그냥 한개만 쓰고있어

wooyeolBaek commented 1 year ago

ICDAR2017은 저렇게 번호별로 어디서 나뉘는지 안써있어서 차선책으로 그렇게 나눠서 예를 들면 lang['Korean']이 851개 lang['Latin']이 1550개인데 lang['Korean']과 lang['Latin']의 합집합은 1770개라서 각각 Dataset클래스로 만들고 Concat하면 총 2400개로 중복되는 이미지가 생길꺼같은데?

KidsareBornStars commented 1 year ago

움 사실근데 2019같은 경우에도 일단 1000개씩 언어별로 돼있다고는 하는데 사진별로 다른언어가 포함되어있는 경우 많았었어 근데 진짜 중복되게 넣어준거같다 지금은 그럼 형이 2017에 한 방법으로 해야되는건가?

wooyeolBaek commented 1 year ago

concat하려면 두 집합에 교집합은 없어야하니까 아마 01001 - 02000: English 랑 05001 - 06000: Korean요거만 빼와서 하는식으로 해보면 될듯?

wooyeolBaek commented 1 year ago

데이터셋 구조

ICDAR17 train 1 - 800: Arabic 801 ~ 1600: English 1601 ~ 2400: French 2401 ~ 3200: Chinese 3201 ~ 4000: German 4001 ~ 4800: Korean 4801 ~ 5600: Japanese 5601 ~ 6400: Italian 6401 ~ 7200: Bangla

valid 1 ~200: Arabic 201 ~ 400: English 401 ~ 600: French 601 ~ 800: Chinese 801 ~ 1000: German 1001 ~ 1200: Korean 1201 ~ 1400: Japanese 1401 ~ 1600: Italian 1601 ~ 1800: Bangla

ICDAR19 00001 - 01000: Arabic 01001 - 02000: English 02001 - 03000: French 03001 - 04000: Chinese 04001 - 05000: German 05001 - 06000: Korean 06001 - 07000: Japanese 07001 - 08000: Italian 08001 - 09000: Bangla 09001 - 10000: Hindi

17도 이런식으로 돼있더라구 그냥 English를 포함하는 이미지를 모두 English로 볼지 아니면 저대로 1000장씩 English 이런식으로 볼지 애매하네 오피스 아워 보고 든 생각은 어차피 언어는 어떤 언어인지 구분할 필요없이 정확항 위치 찾아내는게 중요하니까 어제 얘기처럼 동양서양언어 비율 맞은 정도로 하고 멘토님이 올려주신 Data Boosting 방식으로 일단 학습 & valid 추론해서 Vertical, illigibility, 같은 EAST가 잘 탐지 못하는 것들을 진짜 예측이 잘 안된다면 ICDAR19에서 찾아서 넣어줄까 생각중

KidsareBornStars commented 1 year ago

concat하려면 두 집합에 교집합은 없어야하니까 아마 01001 - 02000: English 랑 05001 - 06000: Korean요거만 빼와서 하는식으로 해보면 될듯?

이렇게 하면 그 이미지들에 있는 특정 소수언어들의 portion이 너무 작아서 성능에 문제있을까봐 안했는데 별로 상관 없으려나? 우선 Latin같은 경우 거의 7000장이어서 아마 거의 모든 언어 이미지에 조금씩 들어가있을거같아서 전혀 상관없는 korean-arabic 돌리고 이거 어느정도 나오면 그다음에는 korean-japanese나 korean-chinese로 성능 비교해보려고

wooyeolBaek commented 1 year ago

이렇게 하면 그 이미지들에 있는 특정 소수언어들의 portion이 너무 작아서 성능에 문제있을까봐 안했는데 별로 상관 없으려나?

KidsareBornStars commented 1 year ago

이렇게 하면 그 이미지들에 있는 특정 소수언어들의 portion이 너무 작아서 성능에 문제있을까봐 안했는데 별로 상관 없으려나?

  • 맞아 나도 그렇게 생각해 ㅋㅋㅋ 그러고 오피스아워에서 EAST모델이 가로 글씨는 잘 탐지하고 polygon이나 세로를 잘 탐지 못한다고해서 언어에 포커스를 둘게 아니라 그쪽으로 진행해야 고민중

  • 추가로 생각해볼 문제는 박스 사이즈나 개수 관련해서 train split 나누면 언어 분포가 달라져서 그거도 언어분포나 vertical horizontal 같은 기준이 좀 확실해 보이네

데이터 분포로 보면 vertical이 되게 적은걸로 나와서, 일단 데이터를 다 합치는게 중요하긴 하겠다. 그리고 우리가 만든 annotation에서 polygon을 다 사각형 형태로 바꿔서 해보는건 또 어떠려나??

wooyeolBaek commented 1 year ago

데이터 분포로 보면 vertical이 되게 적은걸로 나와서, 일단 데이터를 다 합치는게 중요하긴 하겠다. 그리고 우리가 만든 annotation에서 polygon을 다 사각형 형태로 바꿔서 해보는건 또 어떠려나??

KidsareBornStars commented 1 year ago

아 내가 답이 늦었네 ㅜ vertical이 절대적으로 개수가 적은것도 좀 해결해봐야 할 것 같아 근데 icdar 데이터에서는 vertical도 polygon도 없어서 데이터 수집하는데에 어려움이 있을거같아서 이것도 해결해야할 문제이겠네 ㅠ

wooyeolBaek commented 1 year ago

맞아 그래서 최대한 모아볼 수 있는 것 찾아보려고 생각해보고 여기 적어봤어

https://www.notion.so/Language-exp-1fab48048a6a4d4e802907a65668c0b5

KidsareBornStars commented 1 year ago

맞아 그래서 최대한 모아볼 수 있는 것 찾아보려고 생각해보고 여기 적어봤어

https://www.notion.so/Language-exp-1fab48048a6a4d4e802907a65668c0b5

잘 정리해줘서 고마워 ㅠ 읽어보고 적용해보려고 해볼게!!!

근데 혹시 이부분에서 1e-2를 더해주는 이유는 뭐야? 잘 이해를 못했어 내가 ㅠ

image
wooyeolBaek commented 1 year ago

아 저거 분모가 0인 경우가 있어서 오류 방지로 넣었어

KidsareBornStars commented 1 year ago

아 저거 분모가 0인 경우가 있어서 오류 방지로 넣었어

근데 ratio가 1보다 작으면 그냥 가로보다 세로길이가 긴거니까 vertical로 간주해도 괜찮지 않나? specific하게 0.3을 선택한 이유는 뭐야??

wooyeolBaek commented 1 year ago

아아 저거는 캐릭터단위 어노테이션이나 원형에 써진 글자들 같은거는 세로 글자가 아니더라도 세로가 가로보다 긴 것들도 있었고 진짜 세로 글자들만 가져오려면 좀 극단적으로 줘야 진짜 세로로 써지는 것들만 그나마 뽑히는거 같더라구 지금은 수치를 좀더 미세하게 주려고 분자 분모를 바꿔서 ratio > 2 이런식으로 뽑아보려고하는데 서버가 안돌아가지고 오늘 이상하네..

KidsareBornStars commented 1 year ago

음 근데 일리가 있긴 하다 나는 icdar2019에서 제공하는 synthetic 한국어 dataset으로 vertical만 추려서 넣어볼까 싶어가지고 하고있는데 극단적으로 한번 줘보고 결과 여기에 다시 써볼게 1보다 작게하면 엄청많이나오긴 하는데 좀 허수가 있는거같다

wooyeolBaek commented 1 year ago

나는 저번에 얘기한 Data Boosting 방식으로 ICDAR17로 학습한 모델로 valid 셋 추론해서 hmean 낮은 사진들 봤는데 여기서 좀 더 탐색해보고 잘 못맞추는 사진들 train에 추가하고 이상치라고 보이는 사진 빼고 돌려볼께

KidsareBornStars commented 1 year ago

나는 저번에 얘기한 Data Boosting 방식으로 ICDAR17로 학습한 모델로 valid 셋 추론해서 hmean 낮은 사진들 봤는데 여기서 좀 더 탐색해보고 잘 못맞추는 사진들 train에 추가하고 이상치라고 보이는 사진 빼고 돌려볼께

ㅋㅋㅋ 왤케 많이 수정했어

image
  • data boosting 방식은 나도 해보면 좋을거같은데 이 위에 boosting과정을 형이 새로 만든거야 아니면 clone한 github가 있어?
  • 그리고 결국 아마 testset은 우리가 annotation한대로 polygon 이런것도 많을거같아서 결국은 upstage data를 같이 학습시켜서 실험해봐야되지 않을까 싶은데 이거는 어떻게 생각해??
  • 내가 확인해본 결과 synthetic 데이터에서 ratio를 0.3으로 줬을때 대체로 1글자짜리가 vertical로 나오는데 이게 오히려 한글자씩 학습해서 밑에 사진같은 vertical box가 있을 때 더 잘 맞출 수 있지 않을까 생각 드는데 어때?
image

항상 많은 의견 공유해줘서 고마워!

wooyeolBaek commented 1 year ago

ㅋㅋㅋㅋ 17이랑 19에 중복되는 이미지가 있다는 걸 발견해서 못쓰는 의견이 돼서 일단 지웠어 ㅋㅋㅋ 지웠던걸 upstage 데이터셋에 적용해서 다시 써보자면 ㅋㅋ

wooyeolBaek commented 1 year ago

viz 이거는 ICDAR17로 학습한 모델로 valid셋 추론 결과 hmean 낮은 이미지들 결과인데 스코어가 좀 이상한게 몇개 보이긴해서 스코어보다는 예측 박스 위주로 참고하면 좋을듯해

KidsareBornStars commented 1 year ago

내 질문들

wooyeolBaek commented 1 year ago

Untitled-2 저사람은 augmentation한 이미지들 사용하긴 했는데 밑에 내려가니까 랜덤한 이미지 써도 된다고 하더라구 그래서 저기서 말하는 Candidates에 upstage를 사용해보면 어떨까

KidsareBornStars commented 1 year ago

음 아 그렇구나 오키 일단 이해는 한거같아 이따가 다시 이야기해주라!! 우선 잘자!

KidsareBornStars commented 1 year ago

이거는 이제 닫을까?

quasar529 commented 1 year ago

실험 방향 정해졌기 때문에 닫겠습니다!