아래 예제는 다음과 같이 CNN 모델을 구성하였다. Convolution Network Class 생성자 def __init__(self, input_dim=(1, 28, 28), conv_param={'filter_num':30, 'filter_size':5, 'pad':0, 'stride':1}, hidden_size=100, output_size=10, weight_init_std=0.01): filter_num = conv_param['filter_num'] filter_size = conv_param['filter_size'] filter_pad = conv_param['pad'] filter_stride = conv_param['stride'] input_size = input_dim[1] c..
opencv 이미지 처리 과정 중 궁금한 것들 정리해보려고 한다. 이미지에서 바둑판모양을 추출하려고 알아보니 다음과 같은 설명이 나왔다. 1. 왜 사진을 흑백이미지로 변환할까 ? - 컬러이미지의 경우 RGB 3개의 채널을 사용하는데 흑백 이미지의 경우 1개의 채널을 사용하기 때문에 이미지 처리 속도가 1/3 가량 빨라진다고 한다. - grayscale 로 변환하는 것 외로 HSV(색상, 명도, 채도), YUV(밝기, 색상차) 등이 있다. 2. blur 처리는 왜 하는 것일까 ? - 기존 이미지에 필터를 합성(2D convolution)하여 이미지를 변형하는데 노이즈를 제거하는데 유용하며 이미지가 매끈하게 보이는 효과를 낸다고하여 smoothing 이라고도 불린다. - 노이즈를 제거하는 방법으로는 평균을 ..
FCNN(Fully Connected Neural Network) 에서는 입력 데이터를 1차원 배열 형태로 한정하기 때문에 입력데이터의 공간정보를 손실할 수 있다. 그렇기에 입력데이터의 이미지 공간정보를 유지한 상태로 학습 후 FCNN을 거쳐 결과물을 얻어낼 수 있다. CNN은 이미지의 특징을 추출하는 부분과 클래스를 분류하는 부분으로 나누고 Convolution layer, Pooling layer를 여러 단계 거친다. Convolution Layer는 입력 데이터에 필터를 적용 후 활성화 함수를 반영해야 하며 pooling layer는 선택적이다. convolution, pooling layer를 거친 각각의 결과를 feature map이라고 한다. 1. Channel 컬러 이미지의 경우 픽셀을 rg..
순차표현의 장점으로 표현이 간단하다는 것과 원소의 접근이 빠르다는 것(random access)이 있다.하지만 단점으로는 원소를 중간에 삽입, 삭제가 어렵고 저장공간의 낭비와 효율성적으로 문제가 있다. 연결표현 비순차 표현: 원소의 물리적 순서와 논리적 순서가 일치하지 않아도 되며 다음 원소에 대한 주소를 저장하고 있다. 하나의 노드는 데이터 필드와 링크 필드를 가지고 있다. class ListNode { String data; ListNode link; } ListNode startNode, p1, p2; p1 = new ListNode(); p2 = new ListNode(); p1.data = "첫번째 데이터"; p2.data = "두번째 데이터"; p1.link = p2; p2.link = nul..
algorithm : 특정 문제 해결을 위해 논리적으로 기술한 일련의 명령문 program : algorithm + data structure 알고리즘의 요건 완전성과 명확성 수행단계와 순서과 완전하고 명확해야 하고 지시한대로 실행하면 결과가 얻어 져야함. 입력과 출력 입력 : 알고리즘이 처리해야 할 대상으로 제공되는 data 출력: 입력 data를 처리하여 얻은 결과 유한성 유한한 단계 이후에는 반드시 종료되어야 한다.ADL (Algorithm Description Language) 알고리즘 기술을 위해 정의한 언어이며 사람이 이해하기 쉽고 프로그래밍 언어로의 변환이 용 이하다. ADL 데이터 : 숫자, bool값, 문자 알고리즘의 표현 ADL 명령문 : 지정문, 조건문, 반복문, 함수문, 입력문 …,..
순차적 메모리 할당 방식이며 쌍의 집합이다. 원소들이 모두 같은 타입, 같은 크기를 가진다. 인덱스: 순서를 나타내는 원소의 유한 집합이며 집합 내 상대적 위치를 식별하는데 사용된다. 인덱스 만으로 원하는 원소를 직접 접근하기에 내부 구현을 알 필요가 없다.(정보은닉) 메모리 표현 연속적인 메모리 주소를 배열에 할당한다. 순차 사상: 배열의 논리적 순서와 메모리의 물리적 순서가 같도록 표현한다. 순차 표현: 순차 사상을 이용하여 데이터를 표현한다. 순차 사상의 특징으로 인해 빠르게 검색이 가능하다. 하지만 메모리의 크기를 할당하면 크기를 바꿀수 없다는 점과 삽입, 삭제가 다른 자료구조들에 비해 어렵다는 특징이 있다. 배열 추상 데이터 타입(ADT) public class Array { private Ob..
opencv.js에서 어떻게 이미지를 읽고 웹에 표시하는지에 대해 공부해보았다. HTML HTML 요소는 다음과 같이 설정했다. click button READ an image opencv.js 는 이미지를 cv.Mat 타입으로 저장한다. HTML의 canvas 요소를 cv.Mat로 받을 수 있고 역도 성립한다. ImageData 인터페이스는 canvas 요소 영역의 기본 픽셀 데이터를 표현, 설정할 수 있다. 1. 이미지 데이터 객체를 캔버스로 부터 생성하기 html 요소가 canvas가 아닌 경우 file이 업로드 되었을 때 img의 src를 file의 src로 넣어준다. e.target.files = FileList {0: File, length: 1} File: {name: 'dog.jpg', l..
addEventListener()는 documnet 요소에 event를 부여할 때 사용. addEventListener(event, 실행할 함수) 로 정의한다. 총 3가지의 방법으로 정의할 수 있다. button.addEventListener('이벤트', 함수명) button.addEventListener('이벤트', 익명함수정의); button.addEventListener('이벤트', ()=>{}); 대부분 화살표 함수를 사용하여 정의한다. var button = document.getElementById('btn'); function clickButton() { alert("버튼을 클릭하였습니다."); } // case 1 button.addEventListener('click', clickButt..
openCV는 Open Source Computer Vision의 약자로 영상,이미지 처리에 사용할 수 있는 오픈 소스 라이브러리이다. 머신러닝 관련 부분에도 활용도를 높여가고 있다. openCV.js 사용 opencv.js의 사본을 얻는 방법으로 https://docs.opencv.org/4.5.0/opencv.js 를 참고하였다. 코드는 https://docs.opencv.org/4.x/d0/d84/tutorial_js_usage.html 을 참고하였다. Hello OpenCV.js OpenCV.js is loading... imageSrc canvasOutput openCV Template Matching 사용자의 입력 이미지에서 머신러닝 없이 원하는 부분의 객체가 어디에 위치하는지 알아보다 ope..
웹 페이지가 로딩되었을 때 로딩된 이벤트에 맞춰 원하는 함수, 코드를 호출할 수 있도록 한다. 대표적으로 window.onload 콜백함수가 있다. window.onload window.onload = function() { alert("윈도우 창이 켜졌을 때 바로 실행됨"); } 실행화면 한번에 실행될 load 메서드가 1개보다 많을 시 마지막 onload 메서드만 실행된다. window.onload = function() { alert("윈도우 창이 켜졌을 때 바로 실행됨"); } window.onload = function() { alert("한번에 실행 될 onload 메소드가 1개보다 많을 시 제일 마지막만 실행."); } 실행화면 태그에서 onload 실행화면 특정객체에서 onload 0 실행..