[10분만에 논문 리뷰] CVPR2022: Out-of-Distribution Data를 이용한 Weakly Supervised Semantic Segmentation

CVPR 2022에 나온 WSSS 관련 논문인 Weakly Supervised Semantic Segmentation using Out-of-Distribution Data입니다. 저자가 한국 사람들이기도 하고, 최근에 OOD 개념에 대해 들어보기도 해서 관심이 생겨 읽어보았습니다. 추가로 지금까지는 논문 내용을 그저 '정리'만 했는데, 이제는 내용을 모두 담지 않더라도 조금 더 분석적, 비판적으로 읽고 생각한 내용을 적어보려고 합니다. Introduction 본 논문에서는 '간단한 이미지 추가'만으로 WSSS 성능을 올릴 수 있었다고 합니다. 그 이미지는 바로 Out-Of-Distribution(이상치) 데이터입니다. 논문 첫 장부터 간단한 그림을 통해 어떤 novelty를 가지고 있는지 확인시켜줍니다..

[10분만에 논문 리뷰] CVPR2022: C-CAM: Causal CAM for Weakly Supervised Semantic Segmentation on Medical Image

CVPR 2022에서 발표된 WSSS (Weakly Supervised Semantic Segmentation) 관련 논문(링크)입니다. 'Semantic' 사전적으로 '의미'라는 뜻을 가지고 있는데, 말 그대로 이미지 안에서 '의미' 단위로 '분할'하는 것이 Semantic Segmentation 이 되겠습니다. 특히나 저는 요즘 의료이미지를 다루고 있기 때문에, Medical Image에 적합한 모델을 찾던 도중 이 논문을 발견했는데요. 코드도 공개했다길래 보니까 지금은 닫혀있네요; Weakly Supervised Learning 이 그 방법상 인류에게 더 도움이 될 거 같다는 생각에 최근에 많이 연구하고 있습니다. Segmentation, Detection을 위해 일일이 사람이 annotation ..

[10분만에 논문 리뷰] Stepwise Feature Fusion: Local Guides Global

Polyp segmentation에서 SOTA를 기록했던 모델입니다. pyramid Transformer Encoder와 Local Emphasis라는 강조 모듈을 사용한 Progressive Locality Decoder를 사용해 성능을 높였다고 합니다. 여기서 속도를 개선해 real-time task에 알맞게 만든 모델이 ESFPNet입니다. Abstract 대장내시경은 대장암을 조기에 찾아내는 데에 필요한 폴립 탐지에 가장 효율적인 기술 사이즈, 형태가 다 다르고 정상 점막과의 경계도 희미해서 정확한 segmentation이 여전히 도전과제임 폴립 이미지가 매우 다양해서 딥러닝 모델조차 현재 데이터셋에 오버 피팅되기 쉬움 pyramid Transformer encoder를 이용한 SSFormer를 ..

[10분만에 논문 리뷰] ESFPNet, real-time lesion segmentation, 실시간 병변 탐지

현재 기준 (2022년 10월 24일) paperswithcode Medical Image Segmentation 분야에서 SOTA를 기록한 알고리즘입니다. 최근에 내시경 영상을 이용한 병변 detection & segmentation을 연구하고 있어 읽어보았습니다. Mix Transformer와 feature-pyramid 모델을 결합해 real-time segmentation이 가능한 모델을 제시했습니다. ABSTRACT - 폐암은 세계적으로 가장 치명적인 질병이기때문에 조기에 발견하는 것이 중요함 - 기관지 내시경(bronchoscopy)으로 이를 탐지하는 게 가장 효율적임 - 전문의들은 white-light bronchoscopy (WLB), autofluorescence bronchoscopy ..

python natsort로 파일을 "이름 순으로" 정렬해보자

python으로 데이터를 다룰 때 파일 경로의 리스트를 읽어오는 불러오는 경우가 많습니다. 저는 파일 이름을 순서대로 정렬해 가져와야 했습니다. 이 단순한 작업이 겉으로는 쉬워 보이지만, 처음에는 많이 헤매었습니다. 그래서 해결방법을 공유하고자 합니다. 시간이 없으신 분들은 가장 아래 코드만 보시면 됩니다. 파일 경로를 리스트로 받아올 때 문제점 예시 폴더에 1부터 22까지 번호가 매겨진 jpg 파일을 넣어놓았습니다. data - 1.jpg - 2.jpg - 3.jpg ... - 20.jpg - 21.jpg - 22.jpg python 내에서 이 파일들의 경로를 순차적으로 가져오기위해 os.listdir를 이용해봅니다. import os a = os.listdir('data') print(sorted(a..

vscode에서 black으로 code format 자동화하기 (python)

이번 게시물에선 python의 강력한 code formatter인 black을 vscode에서 사용해보도록 하겠습니다. 기업의 개발팀에서는 큰 규모의 코드를 다루다 보니, 코드 통일 및 재사용을 위해 code convention을 진행하고 code style이나 format를 설정합니다. black은 파이썬 코드 스타일인 pep8에 따라 코드를 자동으로 포맷해줍니다. 따라서 일일이 손으로 형식을 맞춰줄 필요가 없고, 생각보다 직관적으로 코드를 변환해줍니다. 0. vscode에 python Extension 설치하기 이 단계는 vs code를 사용하는 python 개발자라면 필수이기 때문에 생략하겠습니다. 1. 현재 작업 환경에 black 패키지 설치하기 우선 pip를 통해 black을 설치합니다. 호스트..

Ubuntu 20.04에서 swap 메모리 설정하기

Swap 메모리는 하드디스크의 일부를 RAM처럼 사용하도록 만들어진 메모리입니다. 지금 사용중인 컴퓨터의 메모리를 초과하는 프로그램을 돌리거나 딥러닝 네트워크를 학습시킬 경우에, 일부 용량을 Swap 메모리로 설정해놓음으로써 메모리가 run out 되는 것을 막을 수 있습니다. RAM 4GB에 Swap 메모리 2GB를 설정한다면, 총 6GB의 메모리를 사용할 수 있는 것입니다. 그러나 RAM 장치가 아닌, HDD 장치를 사용하는 것이기 때문에 읽고 쓰는 속도가 급격히 느려집니다. Best option은 그냥 가용할 수있는 RAM 용량을 넘지 않게 프로세스를 조정하는 것이 좋습니다. Ubuntu에서는 이 Swap 메모리를 쉽게 설정할 수 있습니다. 적어도 학습 도중에 터지지는 않게 설정할 수 있는 것이지요..

docker container에서 디스플레이를 못찾는다?

개발 혹은 머신러닝 환경을 분리하기 위해 docker container를 쓰는 분들이 있으실 겁니다. 라이브러리뿐만 아니라 운영체제까지 별도로 관리할 수 있어 편리한 기능이죠. 그러나 기본적으로 docker는 터미널 기반으로 동작하기 때문에 UI를 가지고 있지 않습니다. 그 때문에 프로그램에서 UI를 띄우거나, opencv를 이용한 이미지 파일을 띄울 때 (ex. cv2.imshow(img)) 출력할 디스플레이를 찾지 못해 에러가 발생하곤 합니다. 보통은 can't find display~ 나 fails to open display~ 등의 에러 메시지가 출력됩니다. 이를 해결하려면 container를 run 할 때 local 디스플레이 값을 넘겨주어야 합니다! (ubuntu 20.04 기준으로 작성했습니..

📜 이제서야 작성하는 2021년 회고

지난 2020년 회고는 1월 7일경에 작성했지만... 생각해보니 2021년 회고를 깜빡했습니다... 사실 2021년에 더 많은 일이 벌어졌고, 더 다양한 경험을 했는데 말이죠. 무려 3개월이 지나서야 지난 2021년을 돌아봅니다. 대학생활의 끝 2021년 8월부로 졸업을 했습니다. 상반기 동안은 취업활동을 하면서 졸업 논문 작업을 마쳤습니다. 재밌던 점은 한국IT서비스학회에서 주최하는 학술대회에 참여한 것입니다. 졸업프로젝트로 진행한 '한국 ETF 대시보드 개발' 프로젝트를 발표했는데, 사람들 앞에서 제 프로젝트를 발표하는 것이 설레고 새로웠습니다. 비록 큰 반응을 얻진 않았지만, 참가하신 분들의 피드백과 질문을 통해서 프로젝트를 다시 한번 돌아볼 수 있었고, 대학 생활의 매듭을 잘 지었다고 느꼈습니다...

vscode n번째 글자에 세로선 추가하기 (easy)

보기좋은 코드를 작성하기위해 최대 코드 길이를 지정해놓은 분들이 계실겁니다. 보통 pep8이나 google python 가이드를 따르면서 최대 79자, 80자, 100자, 120자 등 개발자나 팀마다 다르게 다양한 코드 길이를 사용합니다. 오늘은 vscode에서 간단한 세팅으로 원하는 maximum line length에 표시를 해봅시다. (10초만에 설정 가능합니다.) 1. vscode를 켜고 F1을 눌러 settings.json 파일을 엽니다. Preferences: Open Settings (JSON)을 클릭. 환경에 따라 다른 파일도 가능합니다. 2. editor.ruler를 추가합니다. 아래 내용을 settings.json에 삽입합니다. { ... "editor.rulers": [ { "colu..