본문 바로가기
Digital pathology

Yottixel, SISH, RCCNet

by 연금(Pension)술사 2025. 7. 23.

 

 

Preliminary


  • CBIR(content-based image retrieval): 이미지 내용기반 검색 방법. 주로 WSI을 패치화후 집계한 특징을 이용
  • mMV@k (majority top-k accuracy): 상위 k개의 검색결과에서 가장 많이 등장한 라벨이, 쿼리패치 라벨과 정답이 일치하는지를 측

 

 

주요 방법론


  • Yottixel (2019, MIA)
    1. 모자이크 생성
      1. 입력: 하나의 WSI 
      2. 패치화: 저해상도 조직 영역만 패치화 진행(5x)
      3. RGB 히스토그램계산: 각 패치의 모든 RGB histogram 계산
      4. 컬러 기반 클러스터링: 2.에서 계산한 RGB 히스토그램을 벡터로 고려하여 클러스터링을 진행. (색상기반 클러스터, k=9)
      5. 위치 내부클러스터링: 3.에서 계산한 각 클러스터 내부에서도 위치 기반으로 클러스터링을 한번 더 진행 (전체 패치의, 5%)
    2. BoB(Burnch of Barcodes) 계산:
      1. 특징화: 모자이크 패치들을 DenseNet기반으로 특징화. 적용은 DensNet -> KimiaNet으로 추후 사용됨.
      2. 차분 기반 이진화: $\Delta F_{i} = F_{i+1} - F_{i}$. Min-max algorith을 이용한 이진화 (Hamming distance 측정이 CPU에서 유리하기에.. AND 연산만하면됨). 1023비트 바코트
    3. 쿼리방법(쿼리슬라이드 -> DB 슬라이드) 거리측정:
      1. 쿼리슬라이드의 바코드와 특정 i DB 슬라이드의의 패치바코드와 비교를 쌍으로 진행
      2. 쿼리 슬라이드 패치가 Q고, DB 슬라이드의 패치가 D라면
      3. Q * D을 진행하고, D축에 대해서 최소값을 구해서 Q개만 남김. 
      4. 중앙값 계산: D집합에 대해서 중앙값 계산
    4. 모델 평가방법: 2개의 데이터셋
      1. Dataset
        • UMPC(Cancer diagnosis, 다장기)
        • TCGA: Primary site
      2. 실험
        1. Slide to slide: 동일한 primary site인지 찾는 테스크
        2. 분류문제: 서브타입 분류. 검색기능이 좋으면 의미적으로 서로 다른 범주의 결정경계가 있어야한다는 가정.  Leave-one-out으로 쿼리슬라이드 제외하고 어떤 서브타입인지.

=> 패치수준도 계산. 그냥 이진화 특징에 대한 유사도만 계산하면됨.

 

 

SISH(2022, Nature biomedical engineering)

  1. 모자이크 패치 추출: Yottixel 방식과 동일하게 2-stage로 클러스터링
  2. VQ(Vector quantised)-VAE 사전학습:
    1. 이산 코드북 학습: $e \in \mathbb{R}^{k\times}D$에서 가장 가까운 코드북을 택해서 d로 양자화가 가능 (VAE와의 차이는 latent z을 연속형을 쓰는게 아니라, 양자화해서 사용)
      • K, D의 코드북 사전 모양: K=128개 codewords, 각 code차원은 256차원. KxD에서 D에 가까운 K을 선택하게 함.
      • Encoder(x): 64x64의 특징화가 진행. 이 64x64의 각 위치마다 256-d vector가 생성. 
      • Encoder -> $z_{e}$ (연속표현) -> Vector quantization -> $z_{e}$에서 가장 가까운 코드라인 선택-> one-hot으로 양자화 ($z_{q}$) -> 디코더로 재구성
  3. 인덱스 생성: 3단 AvgPool진행: 토큰맵을 2x2 average poolinㅎ을 3번해서 (64->32->16->8)로 각각 세 가지의 스케일링을 진행. 이 토큰값을 모두 더해서 x,y,z을 만들고 m(=p)=x+y10^{6}+z10^{11}으로 자리수를 분리함. (z가 저배율특징)
  4. 보조 특징 추가: DenseNet121기반의 특징화를 이진화해서 1023bit 특징백터를 생성 (색감/위치만 가지고는 질감 구분이 부족할 수 있어서 이렇게 진행). fusion하는건아니고 보조 feature로 사용.
  5. 검색
    1. Guided-vEB Search:
      • 인덱스 확장: 상수C (50x10^{11}), 반복회수T: 10. 쿼리할 패치의 인덱스m으로부터, 원래키랑 인접 10xC만큼 거리가 있는 인덱스들을 후보세트에 넣음.
      • vEB 탐색(Forward/Backward search): 각 후보키에 대해서, vEB.succesor(). 앞쪽 375개, vEB Predecessor()으로 뒷쪽 375개를 구함. 즉, 총 10개씩 반복 x 2(선행+후행) x 375개씩 가져옴. (vEB트리가 정렬 정수키 구조여서 가능) [반 엠데 보아스 트리]
      • 해밍필터: 가져온 이웃키의 패치 바코드와 쿼리바코트와의 해밍거리를 계산해서, 일부만 남김. 즉, 저배율의 색/위치만 비슷하고 질감이 다른 경우를 제거.
    2. 슬라이드 랭킹:
      1. 모든 패치마다 Guided vEB search을 진행. 슬라이드(i)당 R={r_{1},... r_{k}}가 생성
      2. 가중빈도 계산: r_{i}안에 슬라이드 label의 빈도를 샘. (메타데이터를 이용. 각 장기에서 드문 진단일수록 가중치를 더)
      3. 슬라이드 진단 라벨을 사용: 쿼리패치 $p_{i}$에 대해서, 여러 유사한 슬라이드가 나올꺼니까, 슬라이드가 희귀한 라벨수록 가중치를 더 많이줌.
        • 가중치: 라벨 빈도$f_{k}$의 역수로 가중치 부여. $w_{k}  = 1 / f{l}$. 드물게 존재하는 희귀종양은 후보 리스트 안에 조금만 모여도 정보가치가 크다고 생각.
      4. Clean: |r_{i}|의 길이가 너무 긴경우 5-95 수준에서 잘라 버림.
      5. Filtered by prediction: 가장 확실한 5개의 패치를 선택(엔트로피 기준)하고, 라벨 가중합을 구해서 슬라이드 GT을 구함. 다른 $r_{i}$의 최다 라벨이 pseudo-GT와 다르면 $r_{i}$을 삭제. (다수결 원칙0
      6. 엔트로피 오름차순으로 정
    3. 기타
      1. rare cancer dataset: TCGA와 BWH cohort을 비교해서 구함. 1.785 slide정도 획득.
    4. 평가방법
      1. Slide dataset
        • TCGA: 13개의 장기, 29개의 서브타(yottixel과의 비교). 20x tilinng
        • CPTAC
        • BWH (in-house data)
      2. Patch:
        1. Kather100k:
        2. BWH in-house prostate
        3. WSSSS4LUAD
        4. Atlas

 

 

 

  • RCCNet (2023, Medical image analysis)
    1. 대조학습: Contrastive learning이며, 2개의 InfoNCE으로 진행.
      • 입력: $x_{p}, x_{k}, x_{q}$
      • 특징화: Feature extractor에서 각각 3개의 특징벡터 생성 $h_{p}, f_{k}, h_{q}$
        • 각 2개의 MLP 해드가 붙어있어서, 각 2개의 벡터를 생성. 예) $h_{p} -> g_{p_{1}}, g_{p_{2}}$
        • 원본만 그대로 하나의 벡터를 사용
      • 대조학습
        • weighted InfoNCE: 2번째 그룹벡터 $g_{p_{2}, g_{q_{2}}, g_{k}}$ 로 대조학습. (단점: 유사패치임에도 원본이랑은 달라서 밀어버리는 경우가 있음)
        • group-level InfoNCE: 미니배치 내부에서 클러스터링을 하고, 클러스터링 중심끼리 양/음으로 나눠서 학습.
          • 미니배치(N=256)에서 임베딩을  S=30개의 클러스터로 묶음
          • negative & positive 정의 (각각의 뷰에서..., Cross-view contrastive learning)
            • Anchor: $g_{p_{1}}$
            • Positive centroid: $g_{h_{1}}$에서 가장가까운 centroid
            • negative centroid: 그
          • Q개의 클러스터로 진행.
          • 미니 배치내에서, 각 클러스터별 맴버쉽을 계산
    2. 검색: SISH와 유사
    3. 주요결과:
      1. Yottixel, FISH 보다 좋음.

 

 

HSHR( High-Order Correlation-Guided Slide-Level Histology Retrieval With Self-Supervised Hashing )

반응형