오늘부터 다음주 목요일까지, 6일 가량 딥러닝 모델을 기반으로 한 개인 프로젝트 시간이 주어졌다.
데이터분석&개발을 배우는 영상번역가로서, 평소 번역을 할 때 시간이 소모되는 단순 작업들을 단순화하고 싶었다.
- 자주 틀리는 맞춤법 교정
- 업체에서 자주 고치는 표현으로 미리 교정
- 예전에 번역했던 문장이면 추천으로 뜨게 하기 (트라도스의 번역 메모리 같은 기능)
영상 번역, 특히 영한번역은 화자에 따라 말투/높임말/어조 등이 달라지는데,
영상 속의 인물의 표정이나 사건을 텍스트만으로 파악하기 어렵기 때문에 기존 기계번역에는 한계가 있었다.
파파고로 스크립트 전체를 넣어 번역을 돌려보면, 아예 문맥과 반대되는 번역을 하는 경우도 왕왕 있다.
무튼 그래서 이번 프로젝트로 구현해보고 싶은 기능은,
- YOLO로 영상 속 인물의 표정을 감지 -> 여러 레이블로 분류
- 이렇게 분류한 감정을 문장 앞에 붙여주어, 감정별로 어조를 다르게 번역 모델 돌리기
- 혹은 번역을 하지 않더라도, 화자 인식 + 감정을 인식하여
수민 (화나서) 지금 뭐 하자는 거야?
같이 넷플릭스 한글 자막같이 보다 쉽게 자막을 만들수 있는 모델이었다.
이른바 비전+자연어 처리를 함께하고자 하는 야망어린 기획이었는데,
지금 생각해보니 YOLO는 프레임 기반으로 인식을 하는 거 같고(이를 영상의 시간별로 레이블을 저장할 수 있는지 확인 필요)
영상의 대본에는 타임코드(자막의 시작 시간, 끝나는 시간)가 있지만, 흠.....
적어놓고 보니 구현이 어려울 것 같다.
또 다른 기획은,
파파고의 이미지 번역처럼 사진/영상 속 텍스트를 인식해 이를 Transfomer 기반의 모델로 번역하고,
음성으로 읽어주거나 저렇게 사진 위에 넣게 하는 거였다.
네이버 D2 컨퍼런스에서 파파고 이미지 번역 개발자분의 개발 관련 발표영상을 보니
번역은 Transfomer 기반 모델이고, 텍스트 감지는 Unet과 MaskRCNN을 사용하고, 이를 텍스트 임페인팅으로 채우고, 다시 사진에 입힐 때 단어/문장/문단 단위로 구분해서 각기 번역을 달리하는 그런 복잡한 프로세스였다.
이걸 6일 내에 구현하기는 절대 불가능하지만,
향후 1달짜리 프로젝트에서 이어서 진행할 수 있으니 차근차근 구획을 나눠서 프로젝트를 진행해보려고 한다.
[저번주에 틈틈히 한 것]
Yolo를 사용한 텍스트 인식 모델 찾기
Transformer를 사용한 한-영 번역 모델 레퍼런스 찾기
[그래서 오늘 한 것]
- Yolo를 사용한 텍스트 인식 모델을 코랩에서 클론해서 돌려봤는데, 결과물이 사진 위에 텍스트가 인식된 형식 / polygon 형태의 좌표만 나와서 인식된 텍스트만 프린트하게 하려고 파일을 열심히 뒤져봤는데, 쉽지 않다. 레파지토리 안의 파일 너무 방대하고...
- Transformer를 사용한 한-영 번역 모델 레퍼런스를 코랩에서 클론하여 정상 작동되었다. 이전에 로컬에서 돌리니 램 초과되고, 그때는 코랩에다 깃 클론할줄 몰라서 일일히 한땀한땀 옮겨봤는데 계속 에러나서 결국 모델은 못 돌리는 상태였었다.
다만 학습을 500번 해야 꽤 괜찮은 성능이 나오는데, 코랩 프로 gpu 기준으로 한 번 학습하는데 4분 좀 덜 걸린다.
코랩 프로의 런타임이 최장 24시간이니, 500번 학습을 할 수는 없고 최장 360번까지 학습을 할 수 있을 것 같다.
(일단 100번 돌려보고, 성능을 볼 예정이다. 15번 돌리고 확인해봤는데 번역이 형편없었다.)
하지만 고민되는게, 다른 분이 구현해놓은 레파토리에서 클론을 해서 하라는 대로 파일을 실행하기만 한 결과물을 프로젝트라고 내놓는다면, 그냥 파파고 api를 가져와서 결과물을 내는 거랑 뭐가 다를까...? 하는 생각이 들어서
적어도 텐서플로의 Transfomer 튜토리얼을 보고 한-영 번역을 구현해보는 것은 하고 싶다. 말뭉치도 다운받아놨다구...!
- Hugging Face에서 Transformer 모델을 쉽게 제공한다고 해서, 써보려고 했다가 T5에 홀려서 한창 T5로 기계 번역 모델을 코랩에서 구현하는 방법을 찾아봤는데, 아직은 영어-독어-프랑스어 등 정해진 언어로만 할 수 있는 듯 하다. (혹시 모르니 더 찾아볼까...)
Google의 mT5는 기존 T5 (text-to-text transfer transformer)를 다국어 코퍼스로 확장한 연구로서, 총 101개국 언어를 포함한 데이터를 수집하고, 이를 이용하여 학습함으로써 cross-lingual language task에서 성능 개선을 이루었습니다.
'머신러닝, 딥러닝' 카테고리의 다른 글
딥러닝 프로젝트 3 : Tatoeba opus set, simpletransformers (0) | 2021.04.26 |
---|---|
딥러닝 프로젝트 2: 넷X릭스 자막 전처리 (0) | 2021.04.25 |
skimage 이미지 일괄 리사이즈 방법 (0) | 2021.04.23 |
RCNN을 이용한 Object Detection 따라해보기 1 (0) | 2021.04.20 |
Transformer를 사용한 인공 신경망 한영 번역기 코드 예제 실습 (Colab 버전) (0) | 2021.04.18 |