Search
🌍

bc3__1__1. title: MMOCR 의 config 파일은 모델과 1:1 대응되지만, 상속을 이용해 파일들이 연결되어 동작하기 때문에 재사용성이 높다.

생성
🚀 prev note
♻️ prev note
🚀 next note
♻️ next note
💡 아이디어조각
13 more properties
MMOCR 프레임워크(from1)는 config 파일을 이용해 모델을 생성합니다. 그런데 모델을 이루는 구성 요소는 다양합니다. 모델의 모델의 디자인, 모델에 알맞은 데이터 로더, 전처리(preprocessing) 파이프라인, 후처리(postprocessing) 파이프라인, 모델에 알맞은 측정항목(metric) 등이 이에 속합니다.
MMOCR 모델의 디자인이나 데이터 로더같은 모델의 구성 요소들을 재사용할 수 있도록 config 파일을 재사용 가능한 별개의 config 파일로 분리하도록 권장합니다. 즉, MMOCR 은 모델 1개에 대해 n개의 config 파일을 사용합니다.
하지만 하나의 모델을 구동시키기 위해 수많은 config 파일들을 불러와야 한다면 코드를 작성하는 것과 별반 다르지 않을 것입니다. MMOCR 은 이런 문제를 피하고자 잘 추상화된 config 파일들을 연결(참고2)해서 사용합니다. 따라서, 우리가 실제로 모델을 생성하기 위해 사용하는 config 파일은 딱 하나입니다(참고1:top of it). 아래 표의 예시에서 살펴볼 수 있듯, 최종적으로 사용하는 config 파일인 modelbackbonescheduler 에 있는 값을 그대로 가져옵니다. MMEngine 에서는 이러한 특징을 상속이라고 부릅니다.
config 파일
scheduler
dataloader
backbone
model (최종적으로 사용)
연결하기
lr = 0.1
dataloader = d
load dataloader backbone = b
load backbone, scheduler dataloader: d backbone: b lr: 0.1
거의 모든 config 파일들은 configs 디렉토리에 들어 있습니다. Detection 역할을 수행하는 MMOCR 모델을 사용하려는 경우 configs/textdet 디렉토리에서, Recognition 역할을 수행하는 MMOCR 모델을 사용하려는 경우 configs/textrecog 디렉토리에서 config 파일을 발견할 수 있습니다. 즉, End to End OCR을 구성하기 위해 필요한 config 파일은 두 개일 것이라고 짐작할 수 있습니다.
config 파일의 확장자는 .py 파일입니다. config 파일에 작성된 정보는 쉽게말해 파이썬의 변수에 불과합니다. 하지만 config 파일에 작성된 변수들은 MMEngine 에 의해 일반적인 파이썬 변수들과 조금 다르게 동작합니다. config 파일은 다양한 기능을 제공하지만 구체적인 특징들은 공식 문서에서 확인하도록 하고 핵심 특징을 살펴봅시다. config 파일이 작동하는 방식의 핵심 특징은 불러온 config 파일의 값을 수정하는 방식입니다. 딕셔너리(dict() 로 생성)의 경우(참고3) 병합 기능과 기존의 딕셔너리에서 일부 값만을 갱신하는 기능을 지원합니다. 아래 표를 살펴봅시다.
config 파일
A.py
B.py (load A)
B.py (최종적으로 사용)
갱신하기
d = dict(a=3, b=1)
d = dict(a=4)
d: dict(a=4, b=1)
병합하기
d = dict(a=3, b=1)
d = dict(c=5)
d: dict(a=3, b=1, c=5)
덮어쓰기
d = dict(a=3)
_base_.d = dict(c=4)
d: dict(c=4)
덮어쓰기
li = [’element1’]
li = [’element2’]
li: [’element2’]
단, 딕셔너리 변수의 경우에도 _base_ 에서 변수를 참조해 값을 할당하는 경우, 혹은 딕셔너리가 아닌 변수의 경우에는 병합과 부분적 갱신을 지원하지 않고 덮어쓰기로만 동작한다는 사실을 주의합시다.
parse me : 언젠가 이 글에 쓰이면 좋을 것 같은 재료들.
1.
None
from : 과거의 어떤 생각이 이 생각을 만들었는가?
1.
supplementary : 어떤 새로운 생각이 이 문서에 작성된 생각을 뒷받침하는가?
1.
None
opposite : 어떤 새로운 생각이 이 문서에 작성된 생각과 대조되는가?
1.
None
to : 이 문서에 작성된 생각이 어떤 생각으로 발전되고 이어지는가?
1.
None
참고 : 레퍼런스