잡다한 AI 관련 글들

    [Utilities] Tmux 입문

    [Utilities] Tmux 입문

    Introduction 리눅스 서버 환경에서 자주 사용되는 tmux는 terminal multiplexer의 한 종류로, 하나의 터미널 콘솔에서 여러 개의 터미널을 생성하고 관리할 수 있는 기능을 제공한다. 생성한 터미널 세션들은 터미널 콘솔과 독립적으로 background에서 실행되어, 사용자가 직접 세션을 종료하거나 컴퓨터가 종료되지 않는 한 프로세스가 지속되며 생성된 세션은 여러 유저로부터 동시에(!) 접속하는 것도 가능하다. 이런 특성은 많은 수의 커맨드 명령어 기반 프로세스를 안정적으로 실행시켜야 할 때 유용하다. 오늘은 tmux의 사용법에 대해 간략히 정리해 보겠다. 1. Installation $ sudo apt-get install tmux tmux가 설치되어 있지 않다면, 터미널에서 ap..

    [PyTorch] 모델 파라미터 초기화 하기 (parameter initialization)

    [PyTorch] 모델 파라미터 초기화 하기 (parameter initialization)

    Introduction 슬슬 딥러닝 프레임워크에 대해서도 포스트를 올리려 한다. 주로 쓰는 프레임워크는 파이토치(PyTorch) 이며, 간간히 유용하다 싶은 기능들을 찾으면 하나씩 정리해 올릴 생각이다. 새롭게 안 정보를 정리도 할 겸, 공유도 할 겸 적는 글들이니 편하게 봐 줬으면 한다. 이번에는 파이토치에서 모델의 파라미터를 초기화(initialize) 하는 방법에 대해 포스팅한다. 1. Weight Initialization Mechanism 사실 파이토치에서는 기본적인 모듈 클래스(Linear, ConvNd 등) 를 초기화 할 때, 자동으로 파라미터를 적절히 초기화 해 주고 있다. 하나의 예시로, nn.modules의 Linear 클래스의 이니셜라이저를 살펴 보자. class Linear(Modu..

    [Python] 타이핑 / 타입 힌트 (typing / type hint)

    [Python] 타이핑 / 타입 힌트 (typing / type hint)

    Introduction 파이썬은 기본적으로 동적 타입 언어 (dynamically typed language) 이다. 이 말은 결국 어떤 변수에 값을 대입할 때, 타입을 선언해 줄 필요가 없다는 말이다 (프로그램 실행 중에 타입이 결정됨). 이런 특성은 C++이나 Java 등 변수를 선언할 때 부터 타입을 strict 하게 지정해 줘야 하는 정적 타입 언어들과 비교된다. 컴파일 이후에 유연하게 타입이 결정된다는 특성 덕분에 파이썬은 빠른 개발이 가능하며 언어 자체의 진입 장벽이 낮다는 장점이 있지만, 타입 안전성이 컴파일 단계에서 보장되지 않아 실행 중 예상치 못한 TypeError와 마주할 수 있다는 단점도 있다. Type hint 이런 문제에 대응하기 위해 Python 3.5 버전 이후부터 기본 모듈..

    [Review] Patch SVDD (2부: Method & experiment)

    [Review] Patch SVDD (2부: Method & experiment)

    이전 포스트: Patch SVDD Review 1부 paper link: arxiv.org/pdf/2006.16067.pdf github (PyTorch): github.com/nuclearboy95/Anomaly-Detection-PatchSVDD-PyTorch 지난 번 포스트에 이어서 리뷰를 작성한다. 1부에서는 논문에서 풀고자 했던 문제인 (image) anomaly detection과 anomaly segmentation, 그리고 성능 지표인 AUROC에 대해서 간략히 알아봤다. 이번에는 논문에서 제시된 새로운 anomaly detection 방법론과 그 결과에 대해 정리할 예정이다. (In-line LaTeX 구문을 써 봤는데 모바일 버전에선 제대로 보여지지 않는 것 같다! 방법을 찾으면 추후 ..

    [Python] 언패킹 (Unpacking)

    [Python] 언패킹 (Unpacking)

    Introduction 파이썬 언어에는 몇 가지 특징적인 기능들이 존재하는데, 그 중 하나가 바로 언패킹(Unpacking) 구문이다. 오늘은 이 언패킹에 대해 간단하게 정리해 보려 한다. Iterable Unpacking 파이썬 문법 하에서는, 대입식의 좌측 항에 튜플 혹은 리스트를 가져다 놓는 것이 가능하다. 아래의 예제를 보자. (var_a, var_b) = (5, 7) print(f"Variable A: {var_a}") print(f"Variable B: {var_b}") 대입식의 좌측과 우측이 모두 튜플로 이루어져 있고, 좌측 튜플의 변수들은 우측 튜플로부터 상대적인 위치를 고려해 값을 대입 받고 있다. 코드는 정상적으로 돌아가 5와 7을 출력한다. 물론 좌측 항이 리스트로 이루어진 경우에도 ..

    안녕하세요

    안녕하세요

    AI와 관련된 일을 하다 보면 구글에 뭔가를 검색해 볼 일이 참 많다. 그러다 보면 잡다한 코딩 테크닉부터 라이브러리 사용법이나 최신 알고리즘 리뷰까지 정말 다양한 블로그 글을 접하게 된다. 학계나 현업자 분들이 꾸준히 정리해 놓은 자료로부터 적지 않은 도움을 받다 보면서, 나도 대학원 과정과 실무 (비록 짧지만) 를 통해 얻은 직관과 잡다한 노하우들을 정리해 공유해 보고 싶다는 생각이 들었다. 이렇게 막연하게 테크 블로그를 시작해 보고 싶다는 마음만 갖고 있다가, 어느 날 이유없는 뽐뿌로 인해 블로그를 개설해 버리는 식으로 첫 스타트를 끊었고, 생각나는 내용들부터 하나하나 올려보기 시작했다. 처음이다 보니 아직 블로그의 방향성이 완벽히 fix 된것은 아니지만 대략적인 계획은.. 일을 하면서 얻은 잡다한..

    [Review] Patch SVDD (1부: Anomaly detection 개요)

    [Review] Patch SVDD (1부: Anomaly detection 개요)

    최근에 anomaly detection에 관련된 페이퍼들을 읽을 일이 많이 있었는데, 개인적으로도 하나씩 다시 정리해볼 겸 논문 리뷰 글을 주기적으로 올릴 생각이다. paper link: arxiv.org/pdf/2006.16067.pdf github (PyTorch): github.com/nuclearboy95/Anomaly-Detection-PatchSVDD-PyTorch 이번 논문은 Patch SVDD로, 새로운 image anomaly detection method를 제시한다. 자세한 내용을 설명하기 이전에, 여기서 다루고자 하는 문제인 image anomaly detection이 무엇인지에 대해 먼저 짚고 넘어가자. (편의를 위해 각종 definition과 notation은 논문의 내용을 빌린다..

    [Python] PEP 8: E722 do not use bare 'except'

    [Python] PEP 8: E722 do not use bare 'except'

    Introduction 파이썬에는 PEP 8 (Python Enhancement Proposal #8) 이라는 스타일 가이드가 있다. PEP 8 은 파이썬 코드를 깔끔하고 읽기 좋게 작성하기 위한 일련의 규칙들로, pycodestyle 과 같은 코드 스타일 분석 도구를 사용하면 쉽게 PEP 8 가이드를 따르고 있는 지 확인할 수 있다. (이런 툴들은 보통 vscode 같은 IDE에도 내장시켜 사용할 수 있다) 본인도 최근에서야 PEP 8 스타일 가이드 툴을 적용해 봤는데, 한 가지 이유가 궁금해지는 스타일 suggestion이 있었다. E722 do not use bare 'except' 이 제안은 보통 다음과 같은 방식으로 예외를 처리할 때 발생한다. try: ... # 오류 발생을 catch 하고 싶..