전체 글

전체 글

    [Utilities] libpng warning: iCCP: known incorrect sRGB profile

    [Utilities] libpng warning: iCCP: known incorrect sRGB profile

    Introduction 학습에 이미지 데이터를 사용하다 보면 libpng warning: iCCP: known incorrect sRGB profile 라는 메시지가 콘솔 창에 출력될 때가 있다. Error가 아닌 warning이기도 하고, 뭔가 에러가 레이즈 되어 프로세스가 멈추는 것도 아니지만 데이터를 훑을 때마다 반복적으로 메시지가 출력되니 콘솔 창이 난잡해진다. 특히 tqdm으로 프로세스 진행 상황을 트래킹하고 있다면 더더욱 문제를 뜯어고치고 싶을 것이다. 그래서 이번엔 이 메시지가 무슨 의미를 가지며, 어떻게 해결할 수 있는지 알아보려고 한다. 위 메시지는 libpng 라이브러리에서 발생시키는 메시지로,이미지 내에 유효하지 않은 iCCP (iCC Profile) chunk가 존재할 때 발생한다...

    [Python] Logger 사용법

    [Python] Logger 사용법

    Introduction The Hitchhiker's Guide to Python 이란 책에는 다음과 같은 구절이 등장한다. The only time that print is a better option than logging is when the goal is to display a help statement for a command line application. Shell과 같은 커맨드 인터페이스에서 --help 옵션을 받아 사용법 도움말을 출력할 때 이외에는 항상 logging이 print보다 낫다는 뜻으로, 사실상 웬만한 상황에서는 print 대신 logging을 사용하는 것이 낫다는 의미이다. 그 이유로는 아래와 같은 내용을 들고 있다. The log record, which is create..

    [Python/Teams] 파이썬 프로세스에서 Teams로 메시지 보내기

    [Python/Teams] 파이썬 프로세스에서 Teams로 메시지 보내기

    Introduction 이전에 잠깐 파이썬 프로세스가 종료될 때에 팀즈나 이메일 등으로 알림을 받아보는 법에 대해서 알아봤었다. 링크 이전 글에서 소개한 툴은 딥러닝 모델의 학습에 특화된 알림 툴이어서 트리거 할 수 있는 메시지 종류도 한정적이었고 사용처도 제한되어 있었는데, 최근에 파이썬 프로세스로부터 팀즈로 메시지를 원하는대로 보내야 할 일이 생겨서 이번 기회에 관련 내용을 정리해 보려고 한다. Teams Connector Setup Add connector 먼저 메시지를 받기 원하는 팀즈 채널에서 커넥터를 구성해 주어야 한다. 위 사진처럼 채널 옆의 점 세개를 누른 후 커넥터 설정 창으로 진입하자. 커넥터 설정 창에서 Incoming Webhook 을 검색하고 추가되어 있지 않으면 추가를 해 주자...

    [OpenCV] cv2.fillPoly 도중 Segmentation fault + gdb 사용법

    [OpenCV] cv2.fillPoly 도중 Segmentation fault + gdb 사용법

    Introduction 얼마 전 모델 학습을 돌리다가 시작 후 3~4일쯤 지나서 Segmentation fault (core dumped) 라는 메시지와 함께 아무 에러 트레이스백 없이 프로세스가 종료되는 현상이 반복적으로 발생했다. 따로 디버거를 활성화 시켜 놓고 돌리지도 않았고, 무엇보다도 학습 시작 후 한참 이후에 아무 정보 없이 프로세스가 종료되니 디버그를 도저히 진행할 수가 없었다. 그런데 어느날, 학습 시작 후 몇 분만에 에러가 재현되는 학습 세팅을 발견해 비로소 디버그 작업에 착수할 수 있었다. 빠르게 제목의 상황의 해결법을 보고 싶다면 우측 목차를 통해 문제 해결 단락으로 넘어가자! 삽질의 과정 파이썬 스크립트 실행 도중 Segmentation fault 에러가 발생할 때 파이썬 디버거 (..

    블로그 1년 결산

    블로그 1년 결산

    Introduction 어제 자로 블로그를 개설하고 첫 포스트를 올린 지 1년째가 되었다. 1년이 된 김에 그 동안 어떤 글을 써왔고, 얼마나 많은 사람들이 어떤 정보를 얻기 위해 방문했는지 한번 정리해 보면 좋을 것 같아 블로그 활동 결산을 해 보기로 했다. 작성한 포스트 갯수 12개월 간 총 34개의 포스트를 작성했다. 약 한 달에 3개 꼴로 작성한 셈이지만, 작성 시점으로 봤을 때 2021년 4월에 13개로 가장 많은 글을 작성했고 나머지 월들에 대해서는 월별 1~2개의 포스트 수를 유지하고 있다. 블로그를 처음 시작할 때만 해도 기운이 팔팔 넘쳐서 한달 내에 무려 13개의 글을 작성하는 기염을 토했는데.. 지금 보면 어떻게 저렇게 많은 글을 순식간에 찍어냈는지 이해할 수 없다. 5월부터는 차츰 일..

    [Python/VSCode] 독스트링 스타일과 autoDocstring

    [Python/VSCode] 독스트링 스타일과 autoDocstring

    Introduction 예전 포스트에서는 파이썬의 독스트링에 대해 간략히 소개를 했었다. 링크 독스트링은 파이썬 스크립트 내부에 함수, 클래스, 모듈에 대한 정보를 적어놓은 문자열로 그 자체로 코드 도큐멘테이션의 기능을 한다. 독스트링이 꼼꼼하게 적혀있을수록 작성자 이외의 다른 사용자가 코드의 목적과 작동 방식을 파악하기가 쉬워지며, 최종적으로는 이런 독스트링들을 모아 하나의 라이브러리 문서를 구성하는 것도 가능하다. 이전 글 말미에서는 정형화된 문서화 컨벤션을 따라 독스트링을 작성해 놓으면 문서화 툴을 이용한 라이브러리 도큐멘테이션이 가능하다고 언급했는데 이번 포스트에서는 어떤 독스트링 스타일 컨벤션 들이 있는지 알아보고, 일관된 스타일의 독스트링을 작성하는 데 도움이 되는 툴을 소개할 것이다. Doc..

    [Anaconda] 아나콘다 환경 export, import, clone 하기

    [Anaconda] 아나콘다 환경 export, import, clone 하기

    Introduction 기존에 사용하고 있던 아나콘다 가상환경을 다른 머신에서도 사용하고 싶다던가, 혹은 기존의 가상환경 위에서 새 패키지를 테스트 해 보고 싶은데 디펜던시가 꼬일 가능성이 커 안전하게 별도의 동일한 가상환경을 만들어 쓰고 싶을 때가 있다. 패키지가 몇 개 안 깔려 있는 가상환경인 경우엔 그냥 별도의 가상환경을 똑같이 만들고 필요한 패키지들을 다시 설치해 주면 되지만, 이 작업을 여러 번 수행해야 한다던가 필요한 패키지의 수가 많은 경우 이런 방식에는 한계가 있다. 다행히도 아나콘다에서는 이런 작업을 편하게 하기 위한 몇 가지 기능들을 제공하고 있다. 1. Export conda environment 아나콘다에서는 현재 가상환경을 yaml 파일 형태로 export 하는 것이 가능하다. c..

    [Python] Pythonic 이란?

    [Python] Pythonic 이란?

    Introduction Pythonic 한 코드란 무엇일까? 본인은 pythonic 한 코드란 파이썬의 특징적인 기능들을 잘 살리면서 파이썬의 철학에 맞게 작성한 코드라고 두루뭉술하게 알고 있었고, 이전 포스트에서도 굉장히 여러 번 pythonic이란 단어를 언급했었다. 하지만 막상 pythonic 하다는 것이 정확히 어떤 것을 뜻하는지 인지하고 있나 생각 해 보니, 그렇지 않다는 것을 깨달았다. 따라서 이번 포스팅에서는 Pythonic 한 코드에 대해서 알아보도록 하겠다. What is Pythonic? Pythonic 하다는 표현에 대한 설명은 꽤나 다양한 버전이 존재한다. 1. 파이썬 언어의 특징적인 기능들을 이용해 보기 좋은 / 명확한 / 유지보수가 쉬운 코드를 작성하는 것, 2. 파이썬 커뮤니티..