- Existing Dataset:
- Source: https://github.com/prasunroy/stefann
- 동일한 폰트 사이즈에 대해서 모든 문자 간의 크기와 높이가 동일한 문제 있습니다.
'Abel-Regular' 'AbhayaLibre-Bold' - Custom Dataset:
- 동일한 폰트 사이즈와 높이를 가지고 문자를 실제로 렌더링하여 제작했습니다.
- 문자 간의 상대적인 크기를 반영합니다.
'Abel-Regular' 'AbhayaLibre-Bold'
python3 dataset/generate_data.py
- "resources/fannet.pth":
- 0.5215 on validation set
- M2 MacBook에서 PyQt5가 작동하지 않아 PyQt6로 변경했습니다.
- 원본 코드에서는 텍스트가 배경보다 밝을 경우 제대로 작동하지 않았는데, 바운딩 박스를 생성하기 전에 Tab 키를 통해 이미지를 반전시킨 후 사용하면 잘 작동하도록 코드를 수정했습니다.
- 공식 저장소에서는 TensorFlow를 사용했지만 저는 PyTorch를 사용해 구현했습니다.
- 데이터셋에서는 숫자와 알파벳 대소문자가 있지만 논문과 공식 저장소에서는 26개의 알파벳 대문자만을 사용해 학습시켰습니다. 저는 62개의 모든 문자를 사용해 학습시켰습니다.
- 논문과 공식 저장소에서는 one-hot encoded label에 fully-connected layer를 사용했지만 label encoding과 embedding layer를 사용했습니다. 이 레이어 다음에는 ReLU activation function을 사용하지 않는 편이 모델의 성능이 더 좋았습니다.
self.label_embed = nn.Embedding(N_CLASSES, dim)
- 논문과 공식 저장소에서는 마지막 레이어에서 ReLU activation function을 사용했지만 저는 input tensor를
$[-1, 1]$ 로 normalize했기 때문에 hyperbolic tangent를 사용했습니다. - 논문과 공식 저장소에서는 L1 loss를 사용했지만 ("The network minimizes the mean absolute error (MAE).") 저는 L2 loss를 사용했습니다. L2 loss가 L1 loss보다 수렴 속도가 더 빨랐습니다.
- Instance normalization을 사용해 봤지만 오히려 학습이 잘 이루어지지 않아 제외했습니다.
- For the error saying
KeyError: 'setting text direction, language or font features is not supported without libraqm'
, runpip install --upgrade Pillow --global-option="build_ext" --global-option="--enable-raqm"