일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 정수와유리수
- JSP/Servlet
- 딥러닝
- 운영체제
- 코딩테스트
- 파이썬라이브러리
- 데이터입출력구현
- CNN
- 데이터베이스
- 파이썬
- 컴퓨터구조
- 컴퓨터비전
- 중학수학
- 혼공머신
- numpy/pandas
- 텍스트마이닝
- CSS
- 자바 실습
- 정보처리기사실기
- 자바
- 연습문제
- C++
- pandas
- 정보처리기사필기
- 영어공부
- 머신러닝
- 데이터분석
- 중학1-1
- html/css
- SQL
- Today
- Total
목록컴퓨터비전 (69)
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
딥러닝 관련 이론 내용은 조금 지루하지만 그래도 공부를 이어가 보겠다. 앞 절에서 특징 벡터의 차원이 2이고 데이터셋 크기가 4인 단순한 OR 데이터셋으로 퍼셉트론의 분류 능력을 예시했는데, 퍼셉트론은 수백 차원 샘플이 수만 개인 분류 문제도 풀 수 있다고 증명도이어 있다. 그런데 퍼셉트론은 선형 분류기이기 때문에 그림 7-12a와 같이 선형 분리 가능한 데이터셋만 100% 정확률로 분류할 수 있는 결정적인 한계가 있다. 퍼셉트론은 그림 7-12b와 같은 선형 분리 불가능한 상황에서는 정확률이 낮을 수밖에 없다. 민스키와 페퍼트는 『Perceptrons』라는 저서를 통해 퍼셉트론의 한계를 체계적으로 지적했다. 그림 7-13a에 있는 XOR 문제를 제시하고 퍼셉트론은 이런 단순한 문제조차 풀지 못한다고..
어제는 밤에 늦게 취침했지만 2시 반에 일어나 평소처럼 공부를 시작해 본다. 그림 7-2의 기계학습 방법론에서 가장 성공하고 주류로 자리 잡은 모델은 신경망이다. 이 절에서는 1940년대에 태동하여 현재 딥러닝으로 발전하는 신경망 역사를 간략하게 살펴본다. 이어 최초의 성공적인 신경망 모델인 퍼셉트론을 통해 신경망에 대한 기초를 다진다. 신경망의 간략 역사1900년대 들어 인간 뇌에 대한 활발한 연구에 힘입어 뉴런의 정체가 조금씩 밝혀진다. 1946년에는 초당 3000회 가량 덧셈을 할 수 있는 세계 최초의 전자식 컴퓨터인 에니악이 탄생한다. 신경 과학자들은 컴퓨터로 인공 신경망을 구현하여 사람처럼 인식할 수 있는 기계를 만들려는 거대한 발상을 한다. 그림 7-9는 사람 뇌를 구성하는 뉴런과 퍼셉트..
이 학습이 오늘의 마지막 공부가 될 것 같다. 조금 전에 감정적으로 매우 힘들고 화가 나는 일이 있었지만 그래도 공부의 자리에 나아가기로 했다. 기계학습을 구현하려면 적절한 소프트웨어 도구가 필요하다. 파이썬은 기계학습을 지원하는 sklearn 라이브러리를 제공하는데, sklearn은 그림 7-2에 있는 비신경망 모델과 얕은 신경망까지만 지원한다. 딥러닝을 구현하는데 가장 널리 쓰이는 도구는 텐서플로와 파이토치다. 텐서플로 소개텐서플로 자체는 프로그래밍이 까다로운 단점이 있다. 이런 단점을 극복하기 위해 프랑쇼와 솔레는 텐서플로 위에서 돌아가는 케라스 라이브러리를 제작해 공개하였다. 대부분 케라스 명령어로 딥러닝을 개발하는데 둘이 한 몸이므로 보통 텐서플로 프로그래밍을 한다고 말한다. 텐서플로를 사용하..
이제 드디어 딥러닝 컴퓨터 비전 학습에 들어가 본다. 딥러닝에 대해서는 다른 여러 권의 책과 강의를 통해 어느 정도 공부했지만 아직 완전히 이해한 것이 아니니 이 공부가 많은 도움이 될 것 같다. 그리고 이 책은 다른 어떤 책 보다 깊이 있게 설명하고 있어 처음 들을 때는 어렵지만 개념을 잡는데 좋은 책이라고 생각한다. 시작하기 전에컴퓨터 비전은 꾸준히 발전을 거듭하였고 다양한 분야에서 실용적인 시스템을 만드는데 성공하였다. 6장에서는 성공적인 알고리즘을 중심으로 비전 에이전트를 직접 제작하는 값진 경험을 했다. 이런 발전에도 불구하고 여전히 해결하지 못한 어려운 문제가 아주 많다. 아래 그림은 두 가지 대표적인 문제다. 그림 7-1 a는 의미 분할 문제로 물체를 구성하는 화소를 모아 영역으로 분할하고 ..
이제 마지막 남은 두 문제를 풀어보려고 한다. 연습문제 풀기 세 번째 문제 5번프로그램 6-5에서 봉합한 영상을 보면 가장자리에 검은색 영역이 나타나는 현상을 확인할 수 있었다. 검은색 영역을 제외하고 오려내는 버튼을 추가하시오. 코드 실행해 보기 c를 눌러 캡처한 후에 파노라마 영상을 제작했는데 실패했다. 그리고 새벽에 했던 것처럼 다시 시도하기로 했다. 이번에도 재질이 극명하게 다른 류의 사진이라서 그런 것 같다. 총 4장의 영상을 캡처했다. 너무 길어서 뒷부분이 잘렸지만 파노라마 영상이 잘 출력되었다. 그리고 검은색 영역을 제거하는 버튼을 클릭했다. 검은색 영역을 제거하고 이어서 봉합을 해주었다. 근데 영상을 보니 전보다 더 거무스름해 보인다...
이어서 3번 문제부터 풀어보겠다. 연습문제 풀기 두 번째 문제 3번프로그램 6-3에 대해 다음 내용을 답하시오.(1) 이 프로그램은 버튼 → 버튼 → 버튼 순으로 클릭하면 제대로 실행된다. 하지만 버튼 → 버튼 순서로 클릭하면 오류가 발생한다. 오류 메시지를 제시하고 이유를 설명하시오.(2) 오류를 방지할 방법을 구상하고 프로그램을 개선하시오. 원래 코드 사진을 하나 저장하고 이 이미지를 불러왔다. 이제 문제를 풀어보자. (1) 버튼 → 버튼 → 버튼 순으로 클릭하면 제대로 실행되지만 버튼 → 버튼 순서로 클릭하면 오류가 발생한다. 오류 메시지를 제시하고 이유를 설명하기 정말로 파일 버튼을 누른 다음 페인트를 하지 않고 오림 버튼을 누르자 다음과 같은 오류가 발생했다...
새벽에만 컴퓨터 비전 공부를 하고 아침에는 다른 공부를 하느라 하지 못했다. 이제 오후에 3시간 정도 공부를 해볼 생각이다. 연습문제는 2시간 만에 풀어보고 나머지 한 시간은 7단원 진도를 나가봐야지. 연습문제 풀기 문제 1번프로그램 6-1은 삑 소리만 낼 수 있다. winsound 모듈이 제공하는 여러 가지 소리를 낼 수 있게 메뉴를 확장하시오.▶ 힌트 : winsound.PlaySound 함수를 이용한다. 문제 풀기winsound.PlaySound를 사용하면 더 다양한 소리를 재생할 수 있다. winsound.SND_ALIAS 옵션을 사용하여 시스템 기본 소리를 호출하거나, 파일 경로를 지정해 특정 음원을 재생할 수 있다. 아래 코드는 버튼을 추가해 다양한 소리를 재생하도록 확장한 예시이다..
이번에는 비디오 특수 효과에 대해서 공부해보겠다. 비디오 특수 효과프로그램 6-6을 조금 수정하면 비디오 버전으로 만들 수 있다. 비디오 버전에서 신경 쓸 점은 웹 캠을 통해 들어오는 초당 30프레임의 영상을 실시간으로 처리하는 일이다. 한 장을 특수 효과 처리하는 시간이 1/30초 이내라면 지연 없이 비디오를 디스플레이할 수 있다. 그렇지 않다면 지연이 발생한다.프로그램 6-7의 실행 결과를 보고 사용자 인터페이스를 확인해보자. 버튼은 웹 캠과 연결하여 윈도우에 비디오 영상을 디스플레이한다. 두 번째 메뉴는 콤보박스로 여러 특수 효과 중에서 하나를 선태할 수 있다. 비디오 영상에 특수 효과 처리하기 이 코드는 PyQt5와 OpenCV를 사용하여 실시간 비디오에 여러 특수 효과를 적용하고 화면에 ..
3장에서 필터로 컨볼루션을 수행하면 엠보싱이라는 특수 효과를 거둘 수 있음을 프로그램 3-7에서 확인했다. 여기서는 엠보싱뿐 아니라 카툰, 연필 스케치, 유화라는 특수 효과로 확장하여 GUI를 붙인 비전 에이전트를 제작해 볼 것이다. 특수 효과의 원리OpenCV는 특수 효과를 휘한 흥미로운 함수를 여러 개 제공한다. stylization은 카툰 효과, pencilSketch는 연필로 스케치한 효과, oilPainting은 유화 효과를 제공한다. sylization과 pencilSketch는 기본값이 설정되어 있어 생략해도 되지만 oilPainting은 기본값이 없으니 꼭 지정해야 한다. 특수 효과에 대한 설명은 다음 링크를 참고하면 된다. 특수 효과를 위한 함수 참고 자료stylization, pe..
이번에는 파노라마 영상을 제작하는 실습을 진행해보겠다. 사진 한 장에 다 담을 수 없는 멋진 장관을 만났을 때 카메라 시점을 조금씩 돌려 여러 장을 찍은 다음 봉합하여 파노라마 영상으로 제작하곤 한다. 파노라마 기능은 디지털 카메라에 내장되어 있고 스마트폰 앱으로도 제공된다. 여기서는 OpenCV를 이용하여 파노라마 영상을 제작하는 비전 에이전트를 만들어본다. 파노라마 제작은 이전 단원에서 소개한 SIFT 특징을 이용하여 구현할 수 있다. OpenCV는 여러 장의 영상을 주면 자동으로 파노라마를 제작하는 sitch라는 아주 편리한 함수를 제공한다. SIFT를 이용한 영상 봉합먼저 프로그램 6-5의 실행 경과를 보고 사용자 인터베이스를 확인해보자. 버튼은 웹 캠으로 영상을 수집할 때 사용한다. 버..