얼굴인식 (MS Azure Face)

이미지
아이폰 광고에서 보았던 face 인식 기술 을 MS 파이썬 예제를 참조해 만들어 보았습니다. 먼저 Azure나 Machine learning 에 대해 궁금한 전반적인 사항은 이전에 올린 "음성인식" 관련 글을 참조해 주시기 바랍니다. 얼굴 인식의 기본적인 원리는 아래와 같습니다. 1. MS Azure Cognitive(인지) 기술 준비 (서비스 가입후 key 필요) 2. 분석할 이미지를 웹에 업로드 (클라우드 기반이라 로컬 이미지는 동작하지 않네요) 3. 분석할 이미지의 웹주소를 코드에 추가하고 인지 API 함수 호출 4. 클라우드 기반으로 웹 이미지 분석을 마치면, 이미지 속성 (사진에서의 얼굴영역, 나이, 머리색, 성별, 표정 등) 이 호출 함수 리턴값으로 들어옴 즉 웹상의 이미지를 MS 머신러닝 서버에 넣으면, 분석이 나오는데 이를 결과로 받아오는 방식 입니다. 얼굴 인식 알고리즘을 모르더라도, 쉽게 MS 인지 서비스를 이용해 해당 결과를 코드로 구현이 가능합니다. 참 좋은 세상입니다. 사실 얼굴인식 알고리즘은 개인 또는 기업이라도 쉽게 구현할 수준의 것이 아닙니다. 먼저 해당 코드를 실행한 결과부터 살펴보겠습니다. 첫번째로 MS 예제 코드에 링크된 여성의 사진입니다. 가운데 붉은 선으로 표시된 부분이 얼굴을 인식한 부분입니다. 코드를 작성한 후 해당 이미지의 속성을 같이 출력해 보니 다음과 같습니다. face rectangle 정보는 이미지상에 붉은 사각형으로 표시된 얼굴 영역의 좌표를 의미합니다. face attribute는 여성, 24세, 행복한 표정이라고 분석 결과가 나왔습니다. 우리 가족은 어떻게 나올까 싶어, 이미지를 변경해 실행해 보았습니다. ㅎㅎ 일단 4명의 인물에 대한 얼굴 영역을 정확히 인식합니다. 세부 결과는 아래와 같습니다.

음성을 인식해 문자로 변환하는 예제 (MS Azure Speech)

이미지
흔히, 클라우드라고 하면 온라인에 사진이나, 문서 등 파일을 저장하는 공간으로 인식하는 경우가 많습니다. 물론 이런 단순 파일저장도 클라우드 컴퓨팅 서비스의 일부이긴 하지만, MS, 아마존, IBM, 구글 등의 기업들은 좀 더 다양한 기술을 클라우드에서 제공해 주고 있습니다. 예를 들면, MS는 Azure(애져)라는 이름의 클라우드 컴퓨팅 플랫폼에 음성인식, 얼굴인식, 가상머신, 머신러닝 등의 플랫폼을 제공해주고 있습니다. 요즘 많이 사용되는 클라우드 컴퓨팅 플랫폼 서비스는 Google Cloud Platform , MS Azure , Amazon Web Service Cloud   등 3개의 서비스가 대표적입니다. 아래는 MS Azure 에서 사용가능한 서비스들 입니다. 무료, 유료 서비스가 존재합니다. 이 중 MS의 Azure 의 Cognitive(인지) Service 를 이용해 음성을 문자로 바꾸어주는 코드를 MS 예제를 참조해 C++ 로 직접 만들어 보았습니다. 먼저 결과를 보면, 신기하게도 노트북의 마이크에 제가 직접 음성으로 말한 "Hello, This is ocean coding school"을 문자로 변환해 줍니다. 물론 이런 소프트웨어는 많지만, 사용이 아닌 개발 관점의 포스팅 입니다. 영어 발음이 썩 훌륭하진 않지만, 잘 인식하니 기특합니다. ㅎㅎ 재미있네요. 이미 Artificial Intelligence 와 로봇으로 대표되는 4차 산업 혁명이 착착 진행되고 있음을 체감하였습니다. 아래 코드는 프로그램 실행 화면의 결과이며, 처음 실행시 Say something 이라는 문구를 출력합니다. 이때 마이크에 영어로 이야기 하면 그 내용이 잠시 후 화면에 글씨로 옮겨집니다. 사용자가 말한 음성을 서버로 전송한 후, 이를 문자로 변환해 돌려주는 방식입니다. 근데 여기까지 오는 과정이 만만치 않았습니다

파이썬 예제 (자동판매기)

이미지
파이썬을 이용해 간단한 자동판매기를 콘솔로 구현해 보았습니다. 파이썬 자료형 중 튜플의 개념과, if, for, while 제어문, 함수의 개념만 이해하고 있다면 별로 어렵지 않을 것 같습니다. 클래스보다는 절차지향위주로 코드를 만들어 보았으며, 동작원리는 다음과 같습니다. 1. 판매 메뉴, 가격 변수 설정 (튜플) 2. 메뉴와 가격을 출력한 후, 돈 투입 3. 무한 반복문을 통해 메뉴를 보여주고, 구입 시 잔액 표시 4. 0 번 메뉴 선택 시 반복문 탈출하여, 프로그램 종료 그럼 전체적인 코드를 한 번 살펴보겠습니다. def showmenu(): print() print("[자판기 판매 메뉴]") for i in range(0, len(menu)): print(i+1, ".", menu[i], "\t가격 : ", price[i]) print() def buy(num): if money < price[num]: print("잔액이 부족합니다. 잔액 : %d" %money) return money else: print(menu[num], " 구입완료") balance = money - price[num] print("잔액 : ", balance) return balance if __name__ == '__main__': menu = ("콜라", "사이다", "생수", "커피") price = (500, 400, 300, 700) money = 0 money = in

Visual Studio에 파이썬 개발환경 추가하기

이미지
MS의 통합개발환경 도구인 Visual Studio(이하 VS)에 Python 개발환경을 추가 구성 하는 방법은 아래와 같습니다. (기존에 VS설치 시 PTVS를 설치하지 않은 경우) 만약 VS를 처음 설치하는 경우라면 설치 시 옵션에서 PTVS를 체크해 설치 하면 됩니다. (이 경우 바로 아래의 3. 파이썬 설치 로 이동 바랍니다) PTVS( P ython T ool for V isual S tudio)는 VS에서 Python을 사용하기 위한 도구입니다. 1. PTVS 설치 (VS 2015 인 경우) 1.1 제어판-프로그램추가/제거->VS 2015 선택 후 수정 1.2 Visual Studio 용 Python 도구 체크 2. PTVS 설치 (VS 2017인 경우) 2.1 VS 2017실행 후 메뉴의 "파일"->"새로만들기"->"프로젝트" 선택 2.2 왼쪽 하단의 Visual Studio 설치관리자 열기 선택 2.3 설치 관리자에서 "데이터과학 및 분석 응용프로그램" 중 Python 언어지원 체크 3. 파이썬 설치  3.1 Python 공식 홈페이지에서 Python을 다운받아 설치 하는 경우 파이썬 공식 홈 파이썬 홈페이지 메뉴의 "Downloads" -> "Windows" 를 선택해 32bit, 64bit 둘 다 또는 선택적으로 설치가 가능합니다.  이 경우는 Python 설치 후 VS 실행 후 메뉴의  &quo

심화반 예제 (화면 캡쳐)

이미지
이번에 만든 주제는 '화면 캡쳐' (Screen Capture)프로그램 입니다. 물론 더 우수한 화면 캡쳐 프로그램도 이미 많이 있지만, 우리의 목적은 늘 그렇듯이 프로그래밍 공부이죠. 공부를 위한 예제로서, 복잡한 개념은 제외하고 캡쳐와 이미지 저장에 포커스 를 맞춰 만들어 보았습니다. MFC 대화상자 기반의 화면 캡쳐 프로그램의 기능 은 아래와 같습니다. 1. 현재 스크린(화면전체) 캡쳐 2. 특정 윈도우만 캡쳐 3. 캡쳐된 이미지를 JPG, BMP 로 저장 그럼 그 설계 과정 을 한번 살펴볼까요. 1. 대화상자 프로젝트를 만들어 컨트롤을 배치 합니다. - 전체화면, 특정윈도우 선택 라디오 버튼 - 저장 옵션 JPG, BMP 라디오 버튼 - 전체화면 캡쳐 시 현재 캡쳐 스크린을 보여줄 픽쳐 컨트롤 - 특정 윈도우 선택 캡쳐 시 모든 윈도우를 표시할 리스트 박스 2. 캡쳐 대상 윈도우 DC 얻기 전체 화면(스크린 윈도우)을 캡쳐 하기 위해 윈도우 DC 얻기는 쉽습니다. GetDC()함수의 전달인자를 NULL로 넣어주면 전체 윈도우 DC를 얻을 수 있습니다.  HDC hdc = ::GetDC(NULL); 나중에 이 hdc를 이용해 이미지를 복사해 저장만 하면 끝이죠. 특정 윈도우만 캡쳐 하기는 이 보다 조금 복잡합니다. 먼저 현재 내 컴퓨터의 모든 윈도우 를 가져와야 합니다. 왜냐하면 어떤 특정 윈도우를 캡쳐할지 알 수 없기 때문에 모든 윈도우를 다 표시하고 사용자가 선택하게 만들기 위함입니다. 바로 아래 API 함수를 호출하면 모든 윈도우의 핸들(HWND)을 가져올 수 있습니다. BOOL EnumWindows(   WNDENUMPROC lpEnumFunc,   LPARAM      lParam ); 첫 전달인자는 콜백함수의 포인터 입니다. 두번째 전달인자는 콜백함수에 전달할 값입니다. 따라서 EnumWidnows 함수호출시 사용할 콜백함수가 하

파이썬 프로그래밍과정 개설안내

이미지
많은 프로그래밍 언어가 있지만, 요즘 가장 뜨거운 관심을 받는 것은 단연 파이썬 언어입니다. 파이썬은 1991년에 출시되었으며, 창시자인 네덜란드의 "귀도 반 로섬"은 1989년 크리스마스 주간에 연구실 문이 닫혀있어 심심해서 만들었다고 합니다. 아직 우리나라에서 일부 스타트업 기업이나, 머신러닝 분야 종사자들이 주로 사용중이지만,  그 사용자 층이 급격히 증가하고 있으며, 이미 외국에서는 기업, 교육기관에서 주류 언어로 자리잡아 가고 있습니다. 모든 프로그래밍 언어에는, 그 언어만의 철학과 강점, 단점이 존재합니다. 만약 어떤 프로그래밍 언어가 모든 면에서 우수하다면, 다른 언어가 존재할 이유가 없겠지요. 제가 느끼는 파이썬의 가장 큰 강점은 문법이 간결 하여 다른 프로그래밍 언어에 비해 배우기 쉽다 는 점이 아닐까 합니다. 또한, 개발 속도가 타 언어에 비해 빠르고, C, C++과의 연동도 아주 우수합니다. 또한, 제 개인적 관심분야인 머신러닝 계열 (특히, MS CNTK)의 샘플 코드들이 파이썬으로 만들어진 것들이 많아 저도 재미있게 공부해 가고 있습니다. 물론 C, C++에 비해 실행속도가 느리다는 단점은 존재하나, 이는 파이썬을 깊게 공부하면 충분해 해결 가능한 문제입니다. (C++과 접착을 통해, 다만 간단하진 않습니다) 간략히, 파이썬 언어의 장, 단점을 설명드렸고, 학원 파이썬 강좌는  5개월 과정으로 파이썬 교육(이론, 코드 실습)이 진행 됩니다. 아무것도 모른다고 가정하고 교육을 진행하므로, 수업에 대한 부담은 필요없으나, 영어 타자는 사전 연습이 필요 합니다. [파이썬 기초과정 커리큘럼] 1. 하드웨어 소프트웨어 개념 2. 파이썬 기본 자료형 (숫자, 문자, 리스트, 튜플) 3. 이산 수학 기본 (2진수, 논리, 비트 연산 등) 4. 함수(기본개념, 내장, 외장함수) 5. 파이썬 고급 자료형 (딕셔너리, 집합) 6. 제어 명령문(반복, 조건문)

어떤 프로그래밍 언어를 배워야 할까

이미지
제가 많이 듣는 질문중에 하나입니다. 1. 코딩을 처음 접하는 분은 코딩이 무엇인지 물어봅니다. 코딩은 소프트웨어(같은 표현으로 Program, Application)를 만드는 것을 말합니다. 윈도우, 안드로이드, 카카오톡, 게임, 파워포인트 모두 소프트웨어 입니다. 좀 더 정확히 이야기 하자면 윈도우, 안드로이드는 해당 전자기기 내부를 통합(하드웨어, 소프트웨어 모두) 관리하는 운영체제 소프트웨어 (Operating System, OS )이며, 카카오톡, 게임, 파워포인트는 응용소프트웨어( App lication) 라고 분류합니다. 운영체제 소프트웨어는 각종 앱도 관리해야 하며, 모니터, 메모리, 하드디스크 등 하드웨어  기기도 모두 관리해야 하는 막중한 역활을 담당하고 있습니다. 따라서, 운영체제 소프트웨어(이하 OS)를 만드는 것은 응용소프트웨어(이하 앱)을 만드는 것에 비해 상당한 시간과 기술이 필요합니다. 우리가 알고있는 OS는 윈도우즈, iOS, Android, Unix, Linux 등 몇 가지 없습니다. 그만큼 상용화하기 어려운 기술이며, 표준화(대중화) 시키기도 쉽지 않습니다. OS의 종류 일반적으로 우리가 말하는 코딩은 앱(카카오톡, 게임, 파워포인트 등)을 만드는 것을 의미합니다. 좀 더 자세히 표현하면 어떤 OS에 설치되어 동작하는 특정한 목적을 가진 소프트웨어를 만들는 것 이라고 설명드리고 싶습니다. OS든 앱이든 그것을 만들기 위해서는 2진수 기반(전기의 있음 1, 없음 0, 즉 디지털)으로 동작하는 컴퓨터에 내가 원하는 목적에 맞게 동작하도록 명령 을 내려야 하는데요, 이런 명령어들의 조합을 0과 1로만 인간이 작성한다면 굉장히 복잡한 형태가 될 것입니다. 예를 들면 이런 형태의 명령이 될 것입니다. 01110010111111001101110111....  (난해합니다) 왜냐하면 컴퓨터는 정말

Visual Studio 설치하기

이미지
Visual Studio (이하 VS) 는 MS사에서 만든 통합 개발 환경도구(IDE)입니다. C, C++, C#, Python 등의 언어를 지원하며, 프로그래밍 언어를 이용해 소프트웨어 개발이 가능하도록 만들어 주는 프로그램입니다. (보통은 개발 툴, 또는 IDE 라고 이야기합니다) 버전은 커뮤니티(무료), 프로(유료), 엔트프라이즈(유료) 3가지가 있습니다. 무료 버전은 학생, 개인 개발자, 오픈소스용으로 사용 가능 하며, 이름은 Community 버전이라 부릅니다. 버전별로 개발 규모에 따른 약간의 차이는 존재하나 무료버전(Community)으로도 학원에서 배우는 모든 과정을 다 개발, 수정, 빌드가 가능 합니다. 현재 최신 빌드 버전은 VS 2017버전이 있지만, 버그도 존해하며, 지속적으로 업데이트가 진행중이라 학원에서는 VS 2015 버전을 기준 으로 수업합니다. 자, 이제 어떻게 설치하는지 알아 볼까요. 참고로 VS를 설치하고 사용하게 위해서는 MS 계정이 하나 필요합니다. 무료로 계정을 만들 수 있으니 아래 VS를 설치해 가면서 안내에 따라 만들면 됩니다. 1.  MS VS 다운로드 사이트로 접속  (링크 클릭) 아래와 같은 사이트로 연결되며, 최신 버전인 VS 2017을 다운로드 하는 메뉴가 보입니다. 우리는 VS 2015 버전을 설치할 계획이므로 좀 더 다운로드 페이지의 아래로 내려보면 이전 버전을 다운로드 할 수 있는 링크를 찾을 수 있습니다. 2. 이전 버전을 선택 자, 이제 VS 2015 버전 (커뮤니티 버전)을 다운로드 가능한 페이지로 연결되었으며, 해당 파일을 다운받아 설치해 보겠습니다. 3. 설치 프로그램 설정 설치 마법사가 안내하는 대로 계정을 만듭니다. (무료입니다) 아래 설치 페이지를 참조하여 Visual C++ 항목을 체크해 설치를 진행하면 끝입니다. 저는 유료 버전(프로버전)을 구입해 사용해 약간의 차이는

C++ 강의 도서 안내

이미지
2023.09.20일, 현재 C++ 강의 도서 (MFC는 더이상 수업하지 않으며, Qt로 진행)

합격을 진심으로 축하합니다.

이미지
어제 일요일 등산 중에 반가운 전화 2통을 받았습니다. 학원에 다니는 중3학년 양O훈, 박O원 학생들인데, 대견하게도 대덕 SW 마이스터고 에 당당히 합격했다는 연락이었습니다. 늘 학습태도가 우수한 학생들이라 불합격은 생각해 본 적도 없지만, 그래도 참 기분 좋은 하루였습니다. 대전에 위치한 대덕 SW 마이스터고는 수업료, 입학금, 학교운영비가 모두 무료 이며, 정부에서 지원하는 공립학교(특목고)  입니다. 기숙사 생활을 하게되며, 2018년 신입생 정원 80명중 대전 32명, 전국 48명 을 모집합니다. 입학은 일반 내신 전형(상위 20%이내), 사회통합 전형, 코딩테스트 전형이 있는데 전국 우등생들이 많이 지원하고 있습니다. 전국 48명중 부산지역 3~4명학생이 합격했고, 이 중 학원에서 2명이 합격해 더 대견하고 자랑스럽습니다. 이번주 수업때 맛있는거 사줄게 애들아... 너희들의 새로운 시작을 진심으로 축하하고, 앞으로 4차 산업혁명을 이끌 핵심 인재로 성장해 세계를 누비며 너희들의 꿈을 펼치길 진심으로 기원한다. 꿈을 날짜와 함께 적어 놓으면 그것은 목표가 되고, 목표를 잘게 나누면 그것은 계획이 되며, 그 계획을 실행에 옮기면 꿈은 실현되는 것이다. A DREAM written down with a date becomes a GOAL. A GOAL broken down into steps becomes a PLAN. A PLAN backed by ACTION makes your dreams come true. -그레그 S. 레이드(Greg S. Reid)

이 블로그의 인기 게시물

Qt Designer 설치하기

C++ 예제 (소켓 서버, 이미지, 파일전송)