API 요청을 관리하는 데에는 여러 이유가 있습니다. 그 중에서도 토큰 버킷을 사용하는 이유는 다음과 같습니다:

  1. 트래픽 제어: 토큰 버킷을 사용하면 API로 들어오는 트래픽을 제어할 수 있습니다. 이를 통해 서버에 과도한 부하가 걸리는 것을 방지하고, 서비스의 안정성을 유지할 수 있습니다.
  2. 사용량 제한: 토큰 버킷을 이용하면 API를 사용하는 클라이언트의 요청 수를 제한할 수 있습니다. 이는 과도한 사용량으로 인한 서버 과부하를 방지하고, 공정한 서비스 이용을 보장합니다.

 

TokenBucket 만들기

토큰 버킷 패턴은 고정된 속도로 토큰을 생성하고, 요청이 들어올 때마다 토큰을 소비하여 일정량의 토큰을 가지고 있는지 확인하여 처리하는 방식입니다. 알고리즘은 아래와 같습니다.

  1. TokenBucket은 버켓(바구니)가 있다고 가정합니다.
  2. 요청이 들어오면, 버켓에서 1개를 소비해서 그 다음의 로직을 진행시킵니다. 요청이 들어왔을 때 버킷에 토큰이 없으면 drop합니다.
  3. 고정된 속도(r)로 버킷에 토큰채웁니다. 

https://www.researchgate.net/figure/Diagram-representing-token-bucket-algorithm_fig1_351452059

 

TokenBucket 을 middle ware 에 추가

- FastAPI의 starlette을 베이스로 작성되어있어서, 이 미들웨어를 서브클레싱해서 손쉽게 token bucket을 사용할 수 있습니다.

- starlette.middleware.base.BaseHTTPMiddleware을 초기화시 app을 받게되어있고 이 베이스클레스는 dispatch라는 함수를 구현하게어 있습니다.

class BaseHTTPMiddleware:
    ...
    
    async def dispatch(
        self, request: Request, call_next: RequestResponseEndpoint
    ) -> Response:
        raise NotImplementedError()  # pragma: no cover

 

dispatch을 함수를 아래와 같이 구현해서 bucket.consume_token()이라는 함수가 bool으로 false or True을 구현하게 함에따라, 예외를 일으킬것인지 다음 로직을 실행시킬것인지를 결정하게 작성합니다.

 

위의 구현을 위해 아래와 같이 tokenbucket을 정의합니다.

초기화시, 버킷의 토큰 최대 저장량(max_len)과 토큰을 채우는 시간(r, refill_rate)을 지정하여 아래와 같이 작성합니다.

 

실행

- 다음과 같이 python3으로 fastAPI을 구동시킵니다.

(misc) (base) heon@gpusvr03:~/repositories/misc/tokenbucket_ex$ python3 app.py 
INFO:     Started server process [4121818]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:30000 (Press CTRL+C to quit)

 

그 후 요청 15개를 보내봅니다. 아래와 같이 10개를 토큰을 다 소비한경우 5개의 요청이 예외처리됩니다.

>>> import requests
>>> requests.get("http://0.0.0.0:30000/")
<Response [200]>
>>> for _ in range(15):
...     requests.get("http://0.0.0.0:30000/")
... 
<Response [200]>
<Response [200]>
<Response [200]>
<Response [200]>
<Response [200]>
<Response [200]>
<Response [200]>
<Response [200]>
<Response [200]>
<Response [200]>
<Response [500]> # 토큰 10개 소비되어 예외처리
<Response [500]>
<Response [500]>
<Response [500]>
<Response [500]>

 

반응형

"-e" 옵션은 설치한 경우 파이썬 패키지를 담는 "site-packages" 디렉토리에 설치되는 것은 동일하나, 심볼릭 링크로 설치가되어 원본소스코드가 변경된 후, 별도의 pip install 명령어 없이, import시 바로 변경사항이 반영되는 옵션

 

pip install -e 옵션

종종 github에서 `pip install -e .`로 "-e"옵션을 함께 전달하여 파이썬 패키지를 설치하라는 리포지토리가 있습니다

 

예시로 아래와 같은 패키지 디자인의 경로가 있다고 가정합니다. 

(camelyon) @gpusvr03:~/repositories/camelyon$ tree -L 1
.
├── camelyon
├── data
├── LICENSE
├── logs
├── notebooks
├── README.md
├── setup.py
├── tiling_version16.py
├── tiling_version17.py
└── utils.py

이 패키지의 setup.py에는 다음과 같이 설치 명령어가 있습니다. 이 setup.py을 이용하여 "$pip install ."을 해보겠습니다.

아래와 같이 잘 설치됨을 알 수 있습니다. 패키지 설치장소는 가상환경인 "/home/heon/anaconda3/envs/camelyon"에 설치되었습니다. 

 

 

설치한 패키지를 들어가보면, setup.py에서 지정한 p.y파일들이 들어가있습니다.

 

이 패키지를 지우고, pip install -e 옵션으로 설치해보겠습니다. 패키지가 설치된 장소를 들어가보면, *.egg-link만 있습니다.

이 링크의 내용물은 경로만 담겨져 있습니다.

 

*egg.link 파일은 내부에 파일하나나 디렉토리만 담고있습니다. 심볼릭링크를 지원하기위한 파일입니다. 즉, 설치는 했지만 바라보는 소스코드는 원본을 바라보고 있어서, 디렉토리의 변경사항을 바로 추적할 수 있습니다.

https://wiki.python.org/moin/PythonPackagingTerminology

반응형
 

Method

- 모델아키텍처

VLM (Vision Lanuage Model)으로 슬라이드 이미지를 입력으로 레포트를 생성하는 것을 의미합니다 (Figure 2A). 컴포넌트는 2가지입니다. 비젼모델과 언어모델입니다.

  1. VFM(Vision Foundation model): visual features을 생성합니다. 모델은 CTransPath: Swin transformer로 TCGA, PAIP데이터셋을 SSL로 학습한 모델입니다.
  2. Lanuage model: Vision feature와 프롬프트을 언어모델에 전달한 결과를 cross-attention을 이용하여 최종 레포트를 내는 모델입니다. model: BioGPT(Auto-regressive generative model의 Transformer중 디코더 파트만)을 사용했습니다.
  3. Resampler: : 이미지의 일부만 사용하기 위한 장치입니다.
  4. Cross Attention block: 언어모델의 특징, 프롬프트의 특징을 통합하기 위한 블록입니다.
 
이미지 전처리
1. 100X 확대에서의 tiling (mpp1) + non overlapping
2. normalization (pytorch preprocessing 하듯)
 
모델의 학습
1. CTransPath라는 사전학습모델을다시 MIL을 이용해서 재학습시켰다고합니다.
2. CTransPath의 파라미터는 프리징시키고, 언어모델만 파인튜닝합니다.
3. 학습 시 text augmentation을 시킵니다. text augmentation은 GPT-4을 이용해서 paraphrases 시킵니다.
 

 

추론

0. 이미지와 프롬프트의 짝을 VLM에 전달합니다.
1. 이미지를 타일링합니다(tessellation)
2. 비전모델(CTransPath)에 포워딩합니다
3. 이미지 피쳐중에서 일부만 샘플링합니다(Perceiver resampler)
4. 프롬프트는 토큰화되서 언어모델에 전달됩니다.
5. 언어모델의크로스 어텐션블록에서 통합합니다.
Perceiver resampler라는 샘플링 방법을 썼다고합니다.
6. Ensemble refinemnet: 여러개의 pathology report을 생성하게하고, GPT4 모듈을 이용하여 합치도록 합니다.

 

실험

  • 데이터셋: 13,000 WSI을 학습(출간시 데이터 공개, 10TB)
  • 벤치마크모델: BioGPT-1B(Text only), GPT-4V(Vision only), Lower baseline(랜덤으로 선택된 병리보고서), Upper baseline(같은 진단명을 가진 두 병리 보고서선택)
  • Metrics:
    1) 중요한 단어의 매칭
    2) 중요한 텀의 매칭(키워드 추출임. ScispCy, NER tool임)
    3) BioBERT에서 유사도 확인: cosine similarity
    4) GPT-3-ADA을 이용한 유사도 확인
 

 

결과

Figure 4: 유사도도 꽤나 성능 좋음
A. 프롬프트 및 이미지를 이용한 포워딩 방법 예시
B. 기존방법론과의 비교: 텍스트 전체를 예측하는 것이어서 좀 어려운 것 같음
C. 프롬프트로만 예측한 분류성능
D. 내부 데이터셋의 데이터분포
E. Accuacy 상에서(회색) MIL이 더 잘맞추긴하지만 HistoGPT1B도 잘맞춤. (GPT-3B은의외로 언더퍼폼)
F. 유사도는 전반적으로 ER모델이 잘맞춤.
 
Figure 5: Zeroshot으로 tickness도 잘맞춤
A. 예측된 tumor tickness랑 regression했을때도 상관있게 나옴.
B. 예측된 tumor tickness랑 regression했을때도 상관있게 나옴. 몇몇 셋은 좀 틀렸는데 알고보니 단위가 달랐음
C. Figure 5B의 플롯팅(attention map)
D. External validatrion set에서의 예측. 슬라이드레벨은 잘맞추는데, 패치수준에서는 못맞추는듯.
E. 암종의 침윤에 따라, Gradient attention map확인
 
 
반응형
조직병리학(Histopathology)은 종양의 형태(morphology)와 표현형(phenotype)등 진단을 위한 부가적인 정보를 연구하는 학문입니다. 대부분 조직병리학에서는 H&E(Hematoxylin & Eosin)으로 조직을 염색합니다. 이때, 표현형의 정보를 부가적으로 더 얻기위해서, 유전학정보를 추가하기도합니다. 유전학 관련 정보에서는 환자의 생존율, 항암제 반응등을 추가로 더 연계합니다. 2021년기준으로 FDA에 243종의 항암제가 승인되어서, 관련 연구는 더 활발해지고 있습니다. 최근에는 AI을 이용한 연구로 DP을 접목시키고자하는데 관련 연구들이 어떤 것들이 있는지 개괄적으로 살펴보겠습니다.
 

딥러닝을 이용한 조직병리학

- 조직병리학에서는 고형암을 병리학(pathology)이나 세포학(Cytology)을 이용하여 검사합니다. 이 때 슬라이드이미지(Whole slide image)을 얻게되는데요. 이 슬라이드 이미지 내에, label에 해당하는 조직이 포함되어있는지를 Slide level label로 사용합니다. 예를들어, 슬라이드이미지 내에 종양이 있는지가 이에 해당합니다. 그렇기에 전체 슬라이드 중에 하나의 종양이라도 있으면 positive로 분류하는 weakly supervised learning형태로 주로 연구가되고있습니다.
 

 

시대적으로 주요했던 연구는 아래와 같습니다.
 

Fundamental task

- 2015 (Erosun and Rubin) : Brain tumor에서의 histologycal grading.
- 2017 (Cruz-Roa et al): Breast Ca tumor dectection. 타일링(Tesselating)도 진행. Accurate and reproducible invasive breast cancer detection in whole-slide images: A Deep Learning approach for quantifying tumor extent. Sci Rep(https://doi.org/10.1038/srep46450.)
- 2019 (Campanella G et al): weakly supervised learnig. Clinical-grade computational pathology using weakly supervised deep learning on whole slide images
- 2020 : 고형암의 subtyping 을 예측 (Gleason grade 예측 및 segmentation). Artificial intelligence for diagnosis and grading of prostate cancer in biopsies: a population-based, diagnostic study. Automated deep-learning system for Gleason grading of prostate cancer using biopsies: a diagnostic study.
- 2021: Breast ca 에서의 HER2 enriched, luminal A, luminal B, normal, basal 등의 분자진단에 사용되는 서브타입 예측.A deep learning image-based intrinsic molecular subtype classifier of breast tumors reveals tumor heterogeneity that may affect survival
 
 

Advanced task

1. Biomarker prediction (or genetic mutation)

- 2020: TCGA 17,000 WSI을 모두 학습한 딥러닝모델 연구. 높은 분류성능. 분자진단에 활용가능한 바이오마커(TP53, BRAF, TIL)도 예측이 가능. 2) MSI(Microsatellite instability)의 바이오 마커도 예측
A deep learning image-based intrinsic molecular subtype classifier of breast tumors reveals tumor heterogeneity that may affect survival
Pan-cancer computational histopathology reveals mutations, tumor composition and prognosis
 

2. Clinical outcome 예측

2.1 Response 예측
- biomarker은 환자의 outcome을 예측할 수 있는 간접적지표(proxy)임.
- 2020: CTx 반응을 예측 (Nasopharygeal Ca)[48]. Neuadjuvant CTx후에 CR(Complete response)예측[49]. 면역항암제 예측 반응 예측[50]
[48] Deep learning pathological microscopic features in endemic nasopharyngeal cancer: Prognostic value and protentional role for individual induction chemotherapy
[49] Deep learning-based predictive biomarker of pathological complete response to neoadjuvant chemotherapy from histological images in breast cancer
[50] Using Machine Learning Algorithms to Predict Immunotherapy Response in Patients with Advanced Melanoma. Clin Cancer Res
 
2.2. Prognosis 예측
- Survival 등의 예측입니다.
- 2019: Tissue proportion [52]와 모양형태가 환자 survival에 연관있을 수 있음을 예측[51]
[51] Comprehensive analysis of lung cancer pathology images to discover tumor shape and boundary features that predict survival outcome
[52] Predicting survival from colorectal cancer histology slides using deep learning: A retrospective multicenter study
 

3 Clinical genomics

- 암의 고유한 특징은 유전체 정보에 녹아있습니다. 그렇기에 인간유전체에 대한 해석을 연구하는 것이 암의 임상유전학에서 매우 중요합니다.
3.1 Subtyping
- 2022: Molecular subtyping (Non negative matrix factorization)을 이용한 unspervised ML로 클러스터링
3.2. Discover novel variants
- 2018: Cancer driver mutation 찾기.
3.2. Drug efficacy
- 2018: Cancer cell line에서 drug efficiacy 예측
 
 

4. Multimodality

- 임상적으로 환자의 치료과정을 이해할 때, 한 데이터만 분석하는게 아니라 다른 데이터도 분석합니다. 마찬가지로 최근 연구는 여러 데이터를 혼합(multi-modality)하여 분석하는 것을 연구합니다.
 
- 2018: Surival prediction. WSI와 IDH mutation, 1p/19q 데이터를 혼합하여 gliomas 환자의 survival을 예측 [99]
[99] Predicting cancer outcomes from histology and genomics using convolutional networks. PNAS
- 2019: WSI와 RNA expression data을 혼합하여 survival prediction을 예측 [100]
- 2021: Gliomas의 Grading 예측 [103]
- 2022: WSI, genomic data, radiology image 합친 연구
[100] Deep learning with multimodal representation for pancancer prognosis prediction. Bioinformatics
[103] Deep Neural Network Analysis of Pathology Images With Integrated Molecular Data for Enhanced Glioma Classification and Grading. Front Oncology
 
 

Outlook

- 데이터 많이 필요: Cacncer은 너무 heterogenous하기에 작은 사이즈의 데이터로는 편향이 있을 수밖에 없습니다.
- Internal bias: 성, 인종, 사회경제적 특징들에 따라 제한적
- Regulatory approval: 마켓에 나가기까지는 QC팀, 재무팀등의 지원이 필요
- Explainablity가 필요: Black box모델이라는 한계
반응형

 

 

 

회전변환시에 필요한 matrix을 roration matrix라고하며, 2D와 같이 표현할 수 있습니다.

$M(\theta)=
\begin{bmatrix}
    cos\theta & -sin\theta \\
    -sin\theta & cos\theta
\end{bmatrix}$

이 공식의 유도과정을 이해해보겠습니다.

그림1.

위 그림과 같이 구하고자하는 평면에 두 벡터가 있습니다. 이 그림의 요소들은 다음과 같습니다.

  • G(x, y): 회전시키기 전 벡터
  • G'(x',y'): G을 $\theta$만큼 회전시킨 벡터, 
  • r:G벡터와 G'벡터 길이
  • $\theta$: G을 G'으로 반시계방향(counter-clockwise)으로 회전한 벡터

위 그림에 따라 x, y은 아래와 같이 표현할 수 있습니다.

  • $ x=r cos v $  
  • $ y=r sin v $
  • $ x'=rcos(v+\theta)$
  • $ y'=rsin(v+\theta)$

3번 째, 4번째 식의 $ v+\theta$은 삼각함수의 덧셈정리로 풀면 아래와 같습니다.

  • $x'=rcos(v+\theta) = r(cos(v)\cdot cos (\theta) -sin(v)\cdot sin (\theta))$  (코코마사사)
  • $y'=rsin(v+\theta) = r(sin(v) \cdot cos (\theta) + cos(v) \cdot sin(\theta))$ (싸코코)

위 식에서 $cosv$ 와 $sinv$은 이미 알려져 있으니, 대입하여 알 수 있습니다. 

  • $x'=r(x \cdot cos(\theta) - y \cdot sin(\theta))$
  • $y'=r(x \cdot sin(\theta) + y \cdot cos(\theta))$  (x을 앞으로 정렬)

위 식에서 r이 1인 경우는 단순히 선형결합형태이므로, 선형결합 형태로 나타낼 수 있는 메트릭스로 표현 할 수 있습니다.

$\begin{bmatrix} x' \\ y' \end{bmatrix}= 
\begin{bmatrix}
    cos\theta & -sin\theta \\
    sin\theta & cos\theta
\end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}$

 

Python implementation


파이썬으로 위의 방법을 구하면 아래와 같이 작성할 수 있습니다. 주의할 것은 여기서 는 각도이며, 여기서는 30도를 라디안 단위로 변환하여 사용해야 합니다.

import numpy as np

# 각도를 라디안으로 변환
theta = np.deg2rad(30)

# 회전 행렬 생성
R = np.array([[np.cos(theta), -np.sin(theta)],
              [np.sin(theta), np.cos(theta)]])

# G 벡터 생성 (임의의 값으로 설정)
G = np.array([1, 0])  # 예를 들어, G = (1, 0)으로 설정

# G' 벡터 계산
G_prime = np.dot(R, G)

print("G' 벡터:", G_prime)
print("회전 행렬:")
print(R)

 

References


https://www.cuemath.com/algebra/rotation-matrix/

반응형

요약


Breast cancer관련 병리이미지의 분류문제에서, SSL을 활용할 때, 전체 데이터셋을 다활용하지 않고 50%정도 활용해도 전체를 사용한 것과 비등한 결과를 냈음. 또한, 인코더 전체를 다 사용하지 않고 일부레이어만 사용해도 큰 퍼포먼스의 저하가가 발생하지 않고, 오히려 오르는 경우도 관찰됨

 

Introduction


의료인공지능은 그 목적성이 강해, 대게는 지도학습으로 학습됩니다. 지도학습시에는 라벨이 있는 데이터를 많이 필요로하는데, 이 데이터를 만들기위한 비용이 매우 큽니다. 하지만 최근에, 라벨 없는 데이터에서 그 특징을 사전학습하는 자기지도학습(Self-supervised learning)으로 획기적인 성능향상을 많이 보였습니다.

 문제는 이런 SSL을 할 때, 많은 데이터로 활용하다보니, 컴퓨팅 자원, 시간등이 많이 들어갑니다. 본 연구는 SSL할 때, 정말 이런 많은양의 데이터를 넣어 성능이 나오는가? 1) 더 적은 양을 SSL해도 성능이 유지되는 경우는 없는가2) SSL시 사용되는 인코더를 다 쓸필요는 있는가? 3) SSL에 사용되는 Contrastive learning시 샘플링 작업에 따라 성능 개선이 있는가?를 알아보기위한 논문입니다.

 

Methods


  • SSL method for contrastive learning: MoCo v3  
  • Architecture: tiny Swin Transformer

 

MoCo: MoCo을 알기전에, 대조적학습(contrastive learning)을 이해해야합니다. 대조적학습은 인코딩된 샘플 $\{ k_{0}, k_{1},...,k_{N}\}$ 가 있을 때, 각각을 딕셔너리의 키(key)로 고려합니다. 즉, 쿼리(q)에 대해 하나의 positive key가 있고, 그 외에 다른 키들은 negative key로 고려합니다. 이 때, 손실함수는 아래의 손실함수를 사용합니다.

$L_{q}=-log(\frac{\psi(q,k^{+})}{\psi(q,k^{+} + \sum_{i=1}^{K}{\psi(q,k_{i})}})$

용어설명

  • $\psi(q,k^{+})$: q은 이미지(x)로부터 augmentation 1번에 의해 생성된 벡터, $k^{+}$은 같은 이미지(x)로부터 augmetnation 2번에 의해 생성된 벡터를 의미합니다. 둘 다 같은 origin(원본이미지)으로부터 만들어진 vector입니다.
  • $\sum_{i=1}^{K}{\psi(q, k_{i})}$: K은 negative sample을 의미하고 N-1과 동일합니다. 위에서 사용되었던 이미지(x)의 그 외 이미지들을 의미합니다.
  • $N$: 배치사이즈 또는 memory queue의 길이를 의미합니다.

유사도

  • 유사도함수($\psi (x_{1}, x_{2})$): $exp(sim(x_{1},x_{2})/\tau)$ 입니다. sim은 cosine similarity도 가능합니다.여기서 타우($\tau$)은 "temperature scale"이라고 부르며, 클수록 평활해지는 분포의 값을 가집니다(URL)

해석

  유사도 함수($\psi$)은 항상 양의 값을 갖습니다. 따라서, log 내부 값의 값은 항상 0보다 크고 1보다 작은 값을 가집니다. 즉 log값이 (-inf, 0)을 갖기에, 음수(-)을 곱하여 (0, inf)로 손실함수 값을 계산합니다. (query, positive)의 유사도가 클수록(query, negtaive) 유사도가 작을수록 0으로, (query, positive)의 유사도가 작고, (query, negtaive) 유사도가 클수록 inf의 손실함수 값을 갖습니다.

아키텍처

 MoCo에서는 feature collapse을 방지하기위해서, 서로 다른 encoder 2개를 사용하여, query, key을 생성합니다. query을 생성한 인코더의 가중치(파라미터)를 $\theta_{q}$라 하고, k로부터 얻은 $theta_{k}$라고하면, 가중합을하여 파라미터를 업데이트 합니다. m은 모멘텀계수(momentum coefficient)라고 합니다.

$\theta_{k} <- m \theta_{k} + (1-m) \theta_{q} $

 

샘플링방법


1. Semnatically-relevant contrastive learning (SRCL): 추가적인 positive sample을 구하기위한 샘플링 방법

 SRCL와 MoCo의 가장 큰차이는 positive smapling수의 차이가 있습니다. 배치당 positive sample을 1개씩만 얻는 MoCo와 달리, SRCL을 더 많은 수를 뽑습니다. 주요 가정은 같은 슬라이드 이미지에서 나온 패치들은 더 유사성이 높을 테니, negative로 취급하면 안된다라는 것입니다.

SRCL의 positive sampling 방법은 슬라이드 내의 위치정보를 사용하지는 않고, 유사도 기반으로 샘플링하는 방법입니다. 배치 또는 메모리큐에서 코사인유사도가 가장 큰 5개의 패치를 골라, positive sample로 정의하고, 그외를 negative로 정해서 contrastive learning을 합니다. 이 논문에서는 Poistive sample이 5개를 고르려면, 인코더가 충분히 학습되어야한다는 가정하에, 파라미터가 잘 학습된 구간이라고 생각할만한 5에폭 이전까지는 일반적인 contrastive learning을 돌리고, 이후로 SRCL로 학습했습니다.

$L_{q}=-log(\frac{\sum_{j=1}^{S+1}\psi(q,k^{+})}{\sum_{j=1}^{S+1}\psi(q,k^{+}) + \sum_{i=1}^{K}{\psi(q,k_{i})}})$

  • S: 추가적인 positive samples의 수
  • K: negative 샘플의수. (N-S-1). N 배치 또는 매모리 큐의 수, 1은 자기자신 (query), S은 positive sample 수  

 

2. Negative smaplign (N-Sam)

3. Dynamic sampling (DS)

 

실험 및 평가


 

  • 행1-2: tiny Swin Transformer의 스크래치모델로부터 50에폭을 돌리고, AdamW 옵티마이저를 사용했때, 약 에폭은 25회이상돌리고, 데이터는 4%정도만 돌렸음에도 SOTA인 CTransPath와 유사한 성능이 보였습니다. 심지어 일부 테스크에서는 좀 더 좋은 성능을 보였습니다. 카멜레온데이터셋에서는 오히려 성능이 감소하는것을 보였습니다. 저자들은 이 이유는 CTransPath모델이 TCGA로 다장기로 SSL했을 때, Camelyon16 데이터셋이 섞여들어가서, 잘나올수 밖에없다고 합니다.
  • 행1,행3-5: SSL시 사용하는 데이터를 몇프로 까지 줄여도 성능이 유지되는가를 확인했을 떄, 50%정도 까지 사용해도 전체 데이터셋을 사용했던 MoCo-v3와 유사했다고 합니다. 50%면 충분하다는 실험적인 증거로 제시합니다.
  • 행1,행6-10: 인코더를 전체 사용하는게 아니라 몇번쨰 중간레이어을 사용하는 경우에 따라 성능을 비교했습니다. 1, 2번째 레이어에서 가져오는 경우 성능이 저하되었지만, 끝에서 두번쨰(last 2)의 차원을 가져오는 경우는 오히려 성능이 증가함을 보였습니다.
  • 행1, 행11,12,13: 이 실험에서는 Negative sampling(N-Sam)과 Dynamic sampling(DS)가 상대적으로 더 좋은 결과를 냈습니다.

 

결론


유방암의 WSI encoder을 학습을 SSL로 학습할 때, 요구되는 자원을 좀 더 적게 쓸수 있다는 분석을 얻었습니다. 특히, 데이터를 전체 다 사용하지 않더라도 downstream task에서 전체 사용하는 것과 비등한 성능을 보였다는게 놀랍습니다. 또한, 인코더 전체를 굳이사용할필요는 없고, 마지막인코더를  제이하는 경우가 오히려 weakly supervised learning에서 더 나은 성능일 보였습니다.

반응형

+ Recent posts