목록전체 글 보기 (255)
귀퉁이 서재

이번 포스팅에서는 히스토그램에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/04.img_processing 히스토그램 히스토그램은 도수 분포표를 그래프로 나타낸 것입니다. 쉽게 말해 무엇이 몇 개 있는지 개수를 세어 놓은 것을 그래프로 나타낸 것을 말합니다. 이미지의 픽셀값을 히스토그램으로 표시하는 것은 이미지를 분석하는 데 도움을 줍니다. 예를 들어 전체 이미지에서 픽셀 값이 1인 픽셀이 몇 개이고, 2인 픽셀이 몇 개이고, 255인 픽셀이 몇 개인지까지 세는 것입니다. 이렇게 함으로써 픽셀들의 색상이나 명암의 분포를..

이번 포스팅에서는 이미지 연산에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/04.img_processing 이미지 연산 이미지 연산을 위해서 numpy 연산을 활용하는 방법이 있습니다. 하지만 OpenCV에서도 이미지 연산을 위한 함수를 제공합니다. OpenCV에서 굳이 연산을 위한 함수를 제공하는 이유는 값의 범위 때문입니다. 한 픽셀이 가질 수 있는 값의 범위는 0~255인데, 연산의 결과가 255보다 크거나 0보다 작을 수 있어서 결과 값을 0~255로 제한할 필요가 있습니다. OpenCV에서 제공하는 사칙연산 ..

이번 포스팅에서는 바이너리 이미지를 만드는 대표적인 방법인 스레시홀딩에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/04.img_processing 스레시홀딩(Thresholding) 스레시홀딩은 바이너리 이미지를 만드는 가장 대표적인 방법입니다. 바이너리 이미지(binary image)란 검은색과 흰색만으로 표현한 이미지를 의미합니다. 스레시홀딩이란 여러 값을 어떤 임계점을 기준으로 두 가지 부류로 나누는 방법을 의미합니다. 전역 스레시홀딩 어떤 임계값을 정한 뒤 픽셀 값이 임계값을 넘으면 255, 임계값을 넘지 않으..

파이토치(PyTorch)에 익숙하지 않아 이참에 제대로 배워보고자 강의를 하나 들었습니다. Udemy에서 제공하는 10시간짜리 짧은 강의로 강의명은 PyTorch for Deep Learning and Computer Vision입니다. 개념 설명을 간단하게 한 뒤 파이토치로 라이브 코딩을 하며 딥러닝 모델을 구현합니다. 사실 저는 파이토치만 배우는 강좌를 원했지만 앞단에 개념 설명이 좀 있습니다. 덕분에 딥러닝 복습이 되어 좋긴 했습니다만 파이토치를 다루는 부분이 더 많았으면 좋지 않았을까 하는 아쉬움은 있습니다. 그래도 파이토치를 배우기에 상당히 좋은 강의였습니다. 무엇보다 Google Colab에서 라이브 코딩을 하며 설명하니 이해하기가 쉬웠습니다. 이 강의를 다 듣고 파이토치 Document까지 ..

이번 포스팅에서는 OpenCV로 색상을 표현하는 방식에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/04.img_processing BGR, BGRA 색상을 표현하는 방법으로는 RGB(Red, Green, Blue) 방식이 있습니다. 빨강, 초록, 파랑 세 가지 색의 빛을 섞어서 원하는 색을 만드는 방식입니다. 각 색상은 0~255 사이의 값으로 표시하고 값이 커질수록 해당 색상의 빛이 밝아지는 원리입니다. RGB = (255, 255, 255) 일 때는 흰색이고, RGB = (0, 0, 0) 일 때는 검은색입니다. 그..

이번 포스팅에서는 이미지 내에서 관심 영역(Region of Interest, ROI)을 표시하는 방법에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/04.img_processing 관심 영역(ROI) 표시하기 관심 영역(ROI)이란 말 그대로 영상 내에서 관심이 있는 영역을 뜻합니다. 아래는 일몰 사진입니다. 일몰 사진 내에서 원하는 영역을 표시하는 방법에 대해 살펴보겠습니다. 아래 코드를 실행하면 태양 주위를 초록색 사각형으로 표시한 이미지가 생성됩니다. # 관심영역 표시 (roi.py) import cv2 impo..

이번 포스팅에서는 창을 관리하는 방법과 키보드 및 마우스 이벤트를 처리하는 방법을 알아보겠습니다. 이번 글 역시 파이썬으로 만드는 OpenCV 프로젝트(이세우 저)를 정리한 것입니다. 코드: https://github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/02.interface 창 관리 우선, 창 관리를 하는 5가지 함수에 대해 알아보겠습니다. cv2.namedWindow(winname, flags) 함수는 winname이라는 이름을 갖는 창을 생성해줍니다. 파라미터는 아래와 같습니다. winname: 창 구분자로 활용될 창 이름 flags: 창 옵션 (cv2.WINDOW_NORMAL: 사용자가 창 크기를 조정할 수 있음, cv2.WINDOW_AUTO..

이번 포스팅에서는 이미지에 도형을 그리는 방법에 대해 알아보겠습니다. 이번 포스팅 역시 '파이썬으로 만드는 OpenCV 프로젝트(이세우 저)'를 정리한 것임을 밝힙니다. 코드: https://github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/02.interface 직선 그리기 우선, 아래와 같이 빈 도화지 같은 하얀 이미지를 준비합니다. (blank_500.jpg) 이곳에 다양한 직선을 그려보겠습니다. cv2.line(img, start, end, color, thickness, lineType) 함수를 호출하여 다양한 선을 그릴 수 있습니다. 파라미터는 아래와 같습니다. img: 그림을 그릴 이미지 파일 start: 선 시작 좌표(ex; (0,0))..

OpenCV를 활용한 대부분의 작업은 이미지를 읽어서 적절한 연산을 적용한 뒤 결과를 출력하거나 파일로 저장하는 것입니다. 이번 포스팅에서는 OpenCV의 가장 첫 번째 단계인 이미지 입출력에 대해 알아보겠습니다. 이 포스팅은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저)를 정리한 것임을 우선 밝힙니다. 코드: https://github.com/BaekKyunShin/OpenCV_Project_Python/tree/master/02.interface 이미지 읽기 OpenCV를 사용해서 이미지를 화면에 표시하는 가장 간단한 코드는 아래와 같습니다. 이미지 파일은 이곳에서 다운받으시기 바랍니다. 참고로 몇몇 사진(바로 아래 예제 포함)은 제가 직접 찍어서 다운받은 폴더에 없을 겁니다. 가끔 이미지 파일..

이번 포스팅에서는 컴퓨터 비전의 대표적인 라이브러리인 OpenCV에 대해서 배워보겠습니다. 그전에 영상 처리와 컴퓨터 비전에 대해 간단히 알아보겠습니다. 영상 처리와 컴퓨터 비전 영상 처리(image processing)는 영상에 여러 연산을 가해서 원하는 결과를 새롭게 얻어내는 과정입니다. 대부분의 영상 처리의 목적은 더 좋은 품질의 영상을 얻는 것입니다. 영상 처리의 사례로는 화질 개선, 영상 복원, 영상 분할 등이 있습니다. 컴퓨터 비전은 영상 처리를 포함하는 포괄적인 개념입니다. 영상 처리가 원본 영상을 사용자가 원하는 새로운 영상으로 바꿔주는 기술이라면, 컴퓨터 비전은 영상에서 의미 있는 정보를 추출해 주는 기술입니다. 예를 들면, 객체 검출(Object Detection), 객체 추적(Obje..

지금까지 데이터 분석 - 머신러닝 - 딥러닝 - 자연어 처리를 공부했습니다. 이것들에 이어 앞으로는 컴퓨터 비전 공부를 하려고 합니다. 사실 자연어 처리도 얕게 공부한 수준이긴 합니다. 이런 상황에서 새롭게 컴퓨터 비전을 공부하는 이유는 캐글에 컴퓨터 비전 관련 대회가 상당히 많기 때문입니다. 자연어 처리 대회가 많다면 그것에 집중하겠는데 아무래도 비전 대회가 많아 이 분야도 공부를 하고 싶었습니다. 공부를 위해 선정한 책은 파이썬으로 만드는 OpenCV 프로젝트(이세우 저)입니다. 주변에서 추천받은 책이기도 하고, 쉽게 쓰였다는 후기가 많아서 이 책으로 선정했습니다. 이 책을 완독하고 내용을 완전히 습득하는데 얼마나 걸릴지는 모르겠습니다. 중간에 캐글 대회와 병행한다면 몇 달이 걸릴 수도 있을 겁니다...

한승태 작가의 [인간의 조건], [고기로 태어나서]라는 두 권의 책을 읽었다. 오디오북으로 들었으니 두 권의 책을 들었다(?)라고 표현해야 맞을지도 모른다. [인간의 조건]은 20대 후반의 저자가 진도 꽃게잡이 배, 서울 편의점과 주유소, 아산 돼지 농장, 춘천 비닐하우스, 당진 자동차 부품 공장에서 체험한 노동 현장에 대해 세밀하게 묘사한 책이다. [고기로 태어나서]는 충남 금산과 전북 정읍의 닭 농장, 경기도 이천과 충남 강경, 그리고 강원도 횡성의 돼지 농장, 경기도 포천과 충남 금산의 개고기 농장에서 노동했던 상황을 생생하게 담아낸 책이다. 정말 엉뚱한 생각이지만 나도 대학을 졸업할 즈음 이런 일을 해본 뒤 나만의 기록으로 남기면 어떨까 상상했었다. 한승태 작가처럼 농장이나 공장의 일이 아닌 건설..

무료 온라인 강좌 플랫폼인 에드위드(edwith)에 앤드류 응(Andrew Ng) 교수님의 딥러닝 강좌가 있어서 한번 들어봤습니다. 이 딥러닝 강좌를 들은 목적은 두 가지였습니다. 첫 번째는 딥러닝 전반에 대한 복습이고, 두 번째는 컴퓨터 비전 학습을 위한 부팅이었습니다. 처음엔 그냥 강의만 듣는 것이고 이미 아는 내용이 많기 때문에 금방 들을 수 있겠지라는 마음으로 시작했습니다. 그런데 총 140강으로 강좌수가 많아서 약 2~3주가량 걸렸습니다. 머신러닝/딥러닝의 대가인 앤드류 응 교수님의 강좌이기 때문에 강의 퀄리티는 말할 필요 없이 좋았습니다. 이론뿐만 아니라 실제 적용을 위한 팁도 알려주어 유용했습니다. 또한, 에드위드에서 한글 자막을 달아줬을 뿐만 아니라 각 강의마다 핵심 개념을 요약정리해주어 ..

실존주의에 대해 제대로 정리하고 싶은 마음에, 3년 전 읽었던 게리 콕스의 [실존주의자로 사는 법]을 다시 한번 읽어봤다. 이 책은 실존주의에 대해 알기 쉽게 정리한 책이다. 너무 어렵지도 너무 얕지도 않은 딱 적당한 수준의 실존주의 입문서라고 생각한다. 표지에는 알베르 까뮈, 시몬 드 보부아르, 장 폴 사르트르, 프리드리히 니체의 얼굴이 실려 있다. 모두 실존주의의 대가들이다. 이 중 실존주의를 발전시키는 데 큰 역할을 한 장 폴 사르트르의 주장에 대해 집중적으로 조명하고 있다. 최대한 쉽게, 그러나 어느 정도 깊이도 있게 실존주의에 대해 정리해보고자 한다. 실존주의란 무엇인가? 우선 실존주의의 개념에 대해 짚고 넘어갈 필요가 있다. 실존주의란 무엇일까? 실존주의는 '사랑이란...' 시리즈와 비슷하다...

제16장 프래그머티즘과 과정의 철학 19세기에서 20세기로 넘어가면서 변화의 개념에 초점을 둔 두 개의 철학이 생겨났다. 프래그머티즘과 과정의 철학이 그것이다. 두 철학은 고정불변의 진리가 있다는 사실을 부인했다. 그 대신 그것들은 변화하는 경험과 형이상학적 과정의 입장에서 사물을 이해해야 했다. 프래그머티즘은 미국의 철학 기조를 마련하는 데 가장 주도적인 공헌을 했다. 프래그머티즘을 처음 주장한 철학자는 찰스 퍼스이며, 윌리엄 제임스에 의해 대중적으로 퍼져 나가게 되었다. 또한 존 듀이는 이 철학으로 미국의 제도상 여러 문제를 개선하는 데 기여했다. 이 세 철학자의 핵심적인 주장은 일생생활을 어떤 식으로든 변화시키지 않는 철학은 별다른 가치가 없다는 것이다. 프래그머티즘은 형이상학적 체계라기보다 문제 ..

제12장 칸트 임마누엘 칸트(1724~1804)는 여든 평생을 독일의 쾨니히스베르크라는 작은 지방 도시에서 살았다. 그는 일생에서 주목할만한 사건의 기복이 없었다. 여행도 하지 않았고 정치적, 사회적 활동도 하지 않았다. 동네 사람들은 그가 산책하는 시간에 시계를 맞췄다고 할 정도로 그는 철저하고 엄격하고 계획적인 사람이었다. 그의 기념비적인 저서로는 [순수 이성 비판](1787), [실천 이성 비판](1788), [판단력 비판](1790)이 있다. 1. 칸트의 문제 형성 칸트는 근대 철학의 혁명을 이룩했다. 플라톤으로부터 시작된 서양 철학은 대륙의 이성론과 영국의 경험론으로 나뉘었고, 그것은 칸트에 의해 합치가 되었고, 칸트로부터 다시 분화되어 나갔다고 해도 과언이 아닐 정도다. 칸트에게는 과 의 문제..

제9장 르네상스 시대의 철학 1. 중세의 마감 중세가 끝나가면서 중세 종교와 철학의 융합은 뒤틀리기 시작했다. 르네상스가 도래하자 이 둘은 파탄에 이르게 되었다. 르네상스는 문자 그대로 재생(rebirth)이라는 뜻이며, 15~16세기 동안 일어난 고대 그리스 학문의 부활을 일컫는다. 중세 시대 학자들은 플로티노스나 아우구스티누스의 저작물에서 플라톤과 아리스토텔레스를 간접적으로 접했다. 그러나 르네상스 기간 동안 그리스 필사본이 아테네에서 로마로 유입되어 원전을 직접 접할 수 있게 되었다. 15세기 구텐베르크의 인쇄술 발명으로 인해 책은 만들기 더욱 쉬워졌다. 그로 인해 문화의 확산은 더욱 빨라졌다. 철학자들은 고대 철학에 주석을 달기보다는, 독창적인 저술에 정진하게 되었다. 또한 로마 가톨릭 교회에 저..

제5장 아리스토텔레스 이후의 고대 철학 아리스토텔레스 이후의 고대 철학은 네 가지 부류로 나뉜다. 그것은 바로 에피쿠로스학파, 스토아학파, 회의주의자, 신플라톤주의자이다. 에피쿠로스학파는 데모크리토스의 원자론을 받아들였고, 스토아학파는 헤라클레이토스의 만물의 근원은 불이라는 개념을 받아들였고, 회의주의자는 소크라테스적인 회의의 방법을 자신들의 탐구 방법으로 이용했고, 신플라톤주의자는 플라톤에게 크게 영향을 받았다. 그들은 모두 실천적인 철학을 강조했다. 알렉산드로스에 의해 로마 대제국이 생기고 그리스의 소도시도 로마 제국에 흡수됨에 따라 더 이상 사람들은 이상 사회에 관한 문제들을 사색하는데 관심을 잃었다. 그들에게 필요한 것은 변화하는 조건 속에서 삶의 방향을 제시해줄 실천 철학이었다. 따라서 더 이상..

'철학이란 무엇인가?', '철학은 무슨 효용이 있는가?'에 대해서 많은 사람들이 궁금해한다. 나 역시 그랬다. 특히 나는 철학사 공부의 의미가 궁금했다. 플라톤의 철학과 니체의 철학은 완전히 상반된다. 그런 상황에서 플라톤 철학을 공부하는 것과 니체 철학을 공부하는 게 도무지 무슨 의미인지 궁금했다. 서로 상반되는 철학 중 어떤 것이 진리인지는 아무도 모른다. 이러한 상황에서 플라톤 철학을 공부하는 것과 니체 철학을 공부하는 것이 어떤 의미가 있는지 정말 궁금했다. 니체 철학이 진리라면 플라톤 철학은 왜 공부하는 것일까? 지난 2,500년간 수많은 철학자가 있었고 각 철학자마다 고유의 철학이 있었다. 철학사를 공부한다는 것이 도대체 무슨 의미가 있는 것인가? 오랜 고민 끝에 답을 구하지 못해 모교의 철학..

이전 장에서는 새로운 문장을 생성하는 seq2seq에 대해 알아봤습니다. 이번 장에서는 seq2seq의 기능을 더 강화시켜 주는 어텐션(Attention)에 대해 알아보겠습니다. 어텐션은 자연어 처리 분야에서 강력하고 중요한 기술 중 하나입니다. seq2seq를 이미 알고 있다는 가정하에 이번 장을 썼습니다. seq2seq를 잘 모르시는 분은 NLP - 13. 시퀀스-투-시퀀스(seq2seq)를 참고해주시기 바랍니다. 이번 장의 모든 글 및 그림은 밑바닥부터 시작하는 딥러닝 2를 참고, 정리하였음을 밝힙니다. 어텐션이라는 메커니즘 덕분에 seq2seq는 인간처럼 필요한 정보에 '주목(Attention)'할 수 있습니다. 어텐션은 기존 seq2seq의 문제점을 해결하여 성능을 향상시킵니다. 우선 기존 se..