Closed KidsareBornStars closed 1 year ago
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])
아래처럼 바꾸어주었다
t_ICDAR19_ko_dataset랑 t_ICDAR19_en_dataset 는 json 어떻게 나눠준거야?
그거 범준이가 준 거에서 데이터프레임 만든다음 df.describe()에서 num_bbox인가 25%랑 50%의 중간을 few로, 50%랑 75%의 중간을 many로 했슴다
아아 그냥 무시해도 될듯 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 사용한거지??
그거 형이 준 ipynb기준으로 언어별로 하나하나 나눠서 그걸 stratifiedkfold k=2로 줘서 그냥 한개만 쓰고있어
ICDAR2017은 저렇게 번호별로 어디서 나뉘는지 안써있어서 차선책으로 그렇게 나눠서 예를 들면 lang['Korean']이 851개 lang['Latin']이 1550개인데 lang['Korean']과 lang['Latin']의 합집합은 1770개라서 각각 Dataset클래스로 만들고 Concat하면 총 2400개로 중복되는 이미지가 생길꺼같은데?
움 사실근데 2019같은 경우에도 일단 1000개씩 언어별로 돼있다고는 하는데 사진별로 다른언어가 포함되어있는 경우 많았었어 근데 진짜 중복되게 넣어준거같다 지금은 그럼 형이 2017에 한 방법으로 해야되는건가?
concat하려면 두 집합에 교집합은 없어야하니까 아마 01001 - 02000: English 랑 05001 - 06000: Korean요거만 빼와서 하는식으로 해보면 될듯?
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에서 찾아서 넣어줄까 생각중
concat하려면 두 집합에 교집합은 없어야하니까 아마 01001 - 02000: English 랑 05001 - 06000: Korean요거만 빼와서 하는식으로 해보면 될듯?
이렇게 하면 그 이미지들에 있는 특정 소수언어들의 portion이 너무 작아서 성능에 문제있을까봐 안했는데 별로 상관 없으려나? 우선 Latin같은 경우 거의 7000장이어서 아마 거의 모든 언어 이미지에 조금씩 들어가있을거같아서 전혀 상관없는 korean-arabic 돌리고 이거 어느정도 나오면 그다음에는 korean-japanese나 korean-chinese로 성능 비교해보려고
이렇게 하면 그 이미지들에 있는 특정 소수언어들의 portion이 너무 작아서 성능에 문제있을까봐 안했는데 별로 상관 없으려나?
맞아 나도 그렇게 생각해 ㅋㅋㅋ 그러고 오피스아워에서 EAST모델이 가로 글씨는 잘 탐지하고 polygon이나 세로를 잘 탐지 못한다고해서 언어에 포커스를 둘게 아니라 그쪽으로 진행해야 고민중
추가로 생각해볼 문제는 박스 사이즈나 개수 관련해서 train split 나누면 언어 분포가 달라져서 나누는 기준도 언어분포나 vertical horizontal 같은 기준이 좀 확실해 보이네
이렇게 하면 그 이미지들에 있는 특정 소수언어들의 portion이 너무 작아서 성능에 문제있을까봐 안했는데 별로 상관 없으려나?
맞아 나도 그렇게 생각해 ㅋㅋㅋ 그러고 오피스아워에서 EAST모델이 가로 글씨는 잘 탐지하고 polygon이나 세로를 잘 탐지 못한다고해서 언어에 포커스를 둘게 아니라 그쪽으로 진행해야 고민중
추가로 생각해볼 문제는 박스 사이즈나 개수 관련해서 train split 나누면 언어 분포가 달라져서 그거도 언어분포나 vertical horizontal 같은 기준이 좀 확실해 보이네
데이터 분포로 보면 vertical이 되게 적은걸로 나와서, 일단 데이터를 다 합치는게 중요하긴 하겠다. 그리고 우리가 만든 annotation에서 polygon을 다 사각형 형태로 바꿔서 해보는건 또 어떠려나??
데이터 분포로 보면 vertical이 되게 적은걸로 나와서, 일단 데이터를 다 합치는게 중요하긴 하겠다. 그리고 우리가 만든 annotation에서 polygon을 다 사각형 형태로 바꿔서 해보는건 또 어떠려나??
아 내가 답이 늦었네 ㅜ vertical이 절대적으로 개수가 적은것도 좀 해결해봐야 할 것 같아 근데 icdar 데이터에서는 vertical도 polygon도 없어서 데이터 수집하는데에 어려움이 있을거같아서 이것도 해결해야할 문제이겠네 ㅠ
맞아 그래서 최대한 모아볼 수 있는 것 찾아보려고 생각해보고 여기 적어봤어
https://www.notion.so/Language-exp-1fab48048a6a4d4e802907a65668c0b5
맞아 그래서 최대한 모아볼 수 있는 것 찾아보려고 생각해보고 여기 적어봤어
https://www.notion.so/Language-exp-1fab48048a6a4d4e802907a65668c0b5
잘 정리해줘서 고마워 ㅠ 읽어보고 적용해보려고 해볼게!!!
근데 혹시 이부분에서 1e-2를 더해주는 이유는 뭐야? 잘 이해를 못했어 내가 ㅠ
아 저거 분모가 0인 경우가 있어서 오류 방지로 넣었어
아 저거 분모가 0인 경우가 있어서 오류 방지로 넣었어
근데 ratio가 1보다 작으면 그냥 가로보다 세로길이가 긴거니까 vertical로 간주해도 괜찮지 않나? specific하게 0.3을 선택한 이유는 뭐야??
아아 저거는 캐릭터단위 어노테이션이나 원형에 써진 글자들 같은거는 세로 글자가 아니더라도 세로가 가로보다 긴 것들도 있었고 진짜 세로 글자들만 가져오려면 좀 극단적으로 줘야 진짜 세로로 써지는 것들만 그나마 뽑히는거 같더라구 지금은 수치를 좀더 미세하게 주려고 분자 분모를 바꿔서 ratio > 2 이런식으로 뽑아보려고하는데 서버가 안돌아가지고 오늘 이상하네..
음 근데 일리가 있긴 하다 나는 icdar2019에서 제공하는 synthetic 한국어 dataset으로 vertical만 추려서 넣어볼까 싶어가지고 하고있는데 극단적으로 한번 줘보고 결과 여기에 다시 써볼게 1보다 작게하면 엄청많이나오긴 하는데 좀 허수가 있는거같다
나는 저번에 얘기한 Data Boosting 방식으로 ICDAR17로 학습한 모델로 valid 셋 추론해서 hmean 낮은 사진들 봤는데 여기서 좀 더 탐색해보고 잘 못맞추는 사진들 train에 추가하고 이상치라고 보이는 사진 빼고 돌려볼께
나는 저번에 얘기한 Data Boosting 방식으로 ICDAR17로 학습한 모델로 valid 셋 추론해서 hmean 낮은 사진들 봤는데 여기서 좀 더 탐색해보고 잘 못맞추는 사진들 train에 추가하고 이상치라고 보이는 사진 빼고 돌려볼께
ㅋㅋㅋ 왤케 많이 수정했어
- data boosting 방식은 나도 해보면 좋을거같은데 이 위에 boosting과정을 형이 새로 만든거야 아니면 clone한 github가 있어?
- 그리고 결국 아마 testset은 우리가 annotation한대로 polygon 이런것도 많을거같아서 결국은 upstage data를 같이 학습시켜서 실험해봐야되지 않을까 싶은데 이거는 어떻게 생각해??
- 내가 확인해본 결과 synthetic 데이터에서 ratio를 0.3으로 줬을때 대체로 1글자짜리가 vertical로 나오는데 이게 오히려 한글자씩 학습해서 밑에 사진같은 vertical box가 있을 때 더 잘 맞출 수 있지 않을까 생각 드는데 어때?
항상 많은 의견 공유해줘서 고마워!
ㅋㅋㅋㅋ 17이랑 19에 중복되는 이미지가 있다는 걸 발견해서 못쓰는 의견이 돼서 일단 지웠어 ㅋㅋㅋ 지웠던걸 upstage 데이터셋에 적용해서 다시 써보자면 ㅋㅋ
이거는 ICDAR17로 학습한 모델로 valid셋 추론 결과 hmean 낮은 이미지들 결과인데 스코어가 좀 이상한게 몇개 보이긴해서 스코어보다는 예측 박스 위주로 참고하면 좋을듯해
저사람은 augmentation한 이미지들 사용하긴 했는데 밑에 내려가니까 랜덤한 이미지 써도 된다고 하더라구 그래서 저기서 말하는 Candidates에 upstage를 사용해보면 어떨까
음 아 그렇구나 오키 일단 이해는 한거같아 이따가 다시 이야기해주라!! 우선 잘자!
이거는 이제 닫을까?
실험 방향 정해졌기 때문에 닫겠습니다!
exp letsgo