본문 바로가기

전체 글

Anaconda 가상 환경 Export 방법 (offline / Linux / tar.gz) Computer A의 가상환경 Env1을 Computer B로 옮기고 싶은 경우 보통 아래의 명령어를 쓴다. conda env export -n Env1 --file Env1.yaml conda env create -n Env2 --file Env1.yaml 문제는 인터넷 사용이 불가능한 환경에서는 해당 명령어로 가상환경을 옮기는 것이 불가능하다는 것이다. 이럴 때는 가상 환경을 통째로 압축한 다음 설치하고자 하는 컴퓨터에서 압축 해제를 하는 방법을 사용하면 된다. tar 명령어를 사용하면 금방이다. ''' Computer A Root - /home/user & Computer B Root - /mnt/user ''' ## Computer A에서 cd /home/user/anaconda3/envs tar.. 더보기
OpenVINO 사용 방법 정리 모델 학습에는 GPU가 필수적이지만 학습이 완료된 모델을 납품할 때는 GPU가 달린 워크스테이션 형태로 납품하는 건 꺼려지게 된다. 비용이 많이 들기 때문이다. 소비자 입장에서도 워크스테이션 비용을 감당해야해서 거부감을 많이 느낀다. 그래서 여러 회사에서는 GPU 없는 MiniPC 환경에서도 충분히 모델을 돌릴 수 있게 경량화 작업을 거친다. Knowledge Distillation 기법을 쓰거나 애초에 사이즈가 작은 network를 사용한다거나 하는데... 이런거 저런거 신경 쓸 거 없이 한 번에 해결해주는 툴이 있다. 바로 인텔의 OpenVINO ToolKit이다. 학습이 완료된 모델을 OpenVINO로 변환해서 사용해보면 inference time이 기대 이상으로 빠르다는 걸 느낄 수 있다. 문제는.. 더보기
부동산 세금 공부 - 취득세, 보유세, 양도세 보통은 잔금일에 등기접수를 같이 하는데 예외적으로 '가계약금→계약금→중도금→등기 이전→잔금'의 순서 계약 진행하는 경우가 있어서 기산일에 대한 정의도 같이 알아둬야 한다. 취득세 - 주택을 매수할 때 내는 세금 - 시세 기준으로 과세 - 계약서 상 잔금일과 등기접수일 중 빠른 날짜가 취득세 기산일 - 기산일로부터 60일 이내에 납부해야 함 - 취득세는 등기접수일에 반드시 납부해야함 / 취득세 납부 시기를 미루고 싶다면 등기접수를 미뤄야 함 보유세 - 주택을 보유하고 있을 때 내는 세금 - 공시지가를 기준으로 과세 - 매년 6월1일을 기준으로 세금 부과 양도세 - 주택을 매도할 때 내는 세금 - 시세 차익을 기준으로 과세 - 실제 잔금지급일과 등기접수일 중 빠른 날짜가 양도세 기산일 - 매도일을 기준으로 .. 더보기
자주 찾게 되는 리눅스 명령어 모음집 파일이나 폴더를 지우고 싶을 때 >> rm -rf "지정 경로" 특정 경로의 용량 확인하고 싶을 때 >> df -h >> du -h "지정 경로" >> du -hs "지정 경로" CPU 사용률에 제한 걸어주고 싶을 때 (백그라운드에서 돌리고 싶으면 뒤에 & 붙이면 됨) >> cpulimit --pid XXXX --limit 30 & 더보기
Loss weight, Class weight, Sample weight 케라스로 모델을 설계한 다음, 학습시키는 과정에서 적용할 수 있는 weight의 종류는 크게 3개이다. Loss weight model.compile( )에서 "loss_weights" 파라미터를 통해 넣어줄 수 있다. 모델에 2개 이상의 loss functin이 걸리는 경우 사용할 수 있는 파라미터이다. (EX) model.compile(optimizer='adam', loss=['binary_crossentropy', 'mse'], loss_weights=[2, 1]) Class weight 클래스 불균형을 해결하기 위한 방법으로 샘플 수가 상대적으로 적은 Class 쪽에 가중치를 부여하는 방식이 있다. model.fit( )이나 model.fit_generator( )의 "class_weight" .. 더보기
Probability Calibration 개념 정리 의료 AI 영역에서 일을 하다보면 의사로부터 "인공지능 모델의 출력값이 정확히 무엇을 의미하는 건가요? 0.7이라는 숫자는 환자가 실제로 질병을 갖고 있을 확률이라는 뜻인가요?"와 같은 맥락의 질문을 되게 많이 듣게 된다. 솔직히 그런 질문을 처음 들었을 때는 '어..? 나도 모르겠는데??...'하는 생각이 제일 먼저 들었다. 출력값에 thr 걸어줘서 단순히 True or False로만 생각해봤지 출력값 그 자체가 갖는 의미에 대해서는 깊게 생각해본적이 없었다. 그래서 이것 저것 검색하다보니 Probability Calibration이라는 개념을 접하게 됐다. 연구가 엄청 활발한 분야는 아닌 것 같은데 Medical Imaging 영역에서는 꼭 필요한 개념이라 차근차근 공부하며 정리해나가고자 한다. Pr.. 더보기
NIA AIHub 원격 서버 환경 구축 1. 서버에 아나콘다 설치 https://jcil.co.kr/18 어렵게 어렵게 설치하고 주피터 노트북 설정도 해서 port 열어서 사용하려고 했더니, 서버 관리하는 곳으로부터 포트 열어주는 건 불가능하고 기존 도커 환경(?)에서 새로 가상환경 설치해서 사용하라는 안내 받음 2. 이게 구조가 아래 처럼 이루어져 있다. "Naver VPN → Window 원격 데스크톱 연결 → 내부 리눅스 서버 접속 → Docker 환경에서 개발" 결론이 뭐냐면 Window 원격 데스크톱 연결로 들어가면 기본으로 제공되는 주피터 노트북이 있는데 여기서 터미널을 열어서 가상환경을 파줘야한다. 또 중요한 건 conda env list 와 같은 명령어는 먹히는데 conda activate 명령어는 안 먹힌다. su 를 먼저 입.. 더보기
Python Multiprocessing 작업하며 발생한 이슈들 정리 1. Queue에서 get( )을 해줘도 Memory 반납이 안 되는 현상 DICOM을 PNG로 변환하는 과정에서 속도 좀 올리려고 Multiprocessing 작업을 하던 중에 Queue( )도 사용하게 됐는데, 이 놈이 get( )을 하면 메모리 반납도 같이 해줘야하는데 계속 들고 있어서 서버가 터지기 직전까지 간 적이 있다. 2~3일 구글링 끝에 원인을 찾게 됐다. Numpy version 문제였다. 1.16에서 1.18로 바꾸니까 잘 되더라. 이 글이 나 같은 현상을 겪는 사람들에게 얼른 노출이 되어 도움이 되길 바라며... https://stackoverflow.com/questions/54419043/memory-use-if-multiprocessing-queue-is-not-used-by-t.. 더보기