[ 사전과제 ]
파이썬 매크로 기능 확인하기(학생 노션 자료)
[ 이론 1 ] 인공지능 메이커 프로젝트란?
(아래 강의자료 그림을 클릭해 주세요)
[ 이론 2 ] 인공지능 오픈소스모델 원천 소스 살펴보기
1) 캐글 (구글 인수)
캐글(Kaggle)은 데이터 사이언스와 인공지능 학습자들이 모여 경쟁하거나 학습하는 플랫폼입니다. 2010년에 설립되어 현재까지 전 세계에서 가장 크고 활성화된 데이터 사이언스 커뮤니티로 자리 잡았습니다.
(2017년 구글이 인수)
캐글의 주요 기능
컴페티션(경진 대회): 기업체나 연구 기관들이 특정 문제에 대한 해결책을 찾기 위해 데이터셋을 제공하고, 참가자들이 모델을 만들어 문제를 해결하는 경진 대회입니다. 이 경진 대회를 통해 실제 문제를 해결하는 능력을 향상시킬 수 있으며, 상위 랭킹에 오르면 상금을 받을 수도 있습니다.
커널(Kernels) / 노트북(Notebooks): 사용자들이 데이터 분석 및 머신러닝, 딥러닝 모델을 만드는 과정을 공유하는 공간입니다. 다른 사람들이 만든 노트북을 참조하거나, 직접 노트북을 만들어 다른 사람들에게 공유할 수 있습니다.
데이터셋: 다양한 주제에 대한 데이터셋을 찾거나 공유할 수 있는 공간입니다. 사용자들은 이곳에서 데이터를 다운로드받아 연구하거나, 자신이 수집한 데이터를 공유할 수도 있습니다.
캐글을 활용한 AI 오픈소스 공부하는 방법
커널(Kernels) / 노트북(Notebooks) 학습: 다른 사용자들이 올린 노트북을 통해 코드와 그 과정을 확인하며 배울 수 있습니다. 여기에는 데이터 전처리부터 모델 학습, 결과 분석까지의 과정이 담겨 있습니다.
토론(Forums) 참여: 캐글에는 토론 포럼이 있어, 다양한 주제에 대해 의견을 나누거나 질문을 할 수 있습니다. 이곳에서는 기술적인 질문부터 경진 대회에 대한 전략 공유, 최신 머신러닝 트렌드에 대한 토론까지 다양하게 이루어집니다.
데이터셋 탐색 및 활용: 다양한 주제의 데이터셋을 활용해 본인의 프로젝트를 진행해보세요. 다양한 데이터에 대한 이해는 모델을 만드는 능력을 향상시키는 데 도움이 됩니다.
컴페티션(경진 대회) 참가: 실제 문제를 해결하는 경험을 통해 지식을 실전적으로 활용해보는 것이 중요합니다. 경진 대회에서 제공하는 데이터셋과 문제를 활용해 본인만의 모델을 만들어보세요. 경진 대회가 끝난 후에는 상위 참가자들의 솔루션을 확인하고 배울 수도 있습니다.
2) 티쳐블 머신 (구글)
티처블 머신 활용 프로젝트 사례
1) 카카오톡 API와 연결
2) 웹플랫폼과 탑재
https://bossycompatiblesubversion.kimten0226.repl.co/
https://finishedexcitingpolyhedron.ggmt21524.repl.co/
관련 강의 자료 (아래 그림 클릭)
3) 아두이노와 연결
https://m.blog.naver.com/clzls8812/222152426216
잘모르겠다면, 챗지피티에게 코드 요청
https://chat.openai.com/share/fe8eca33-f59a-4e41-bd71-ad1924c44cfa
3) ML5.js, P5.js (NYU)
p5.js
p5.js는 웹에서 인터랙티브한 그래픽과 오디오를 생성하기 위한 JavaScript 라이브러리입니다. 이 라이브러리는 비프로그래머와 예술가들, 디자이너들, 교육자들이 프로그래밍과 디지털 미디어 아트에 접근할 수 있게 도와주는 것을 목표로 하고 있습니다.
p5.js 특징
직관적이고 접근성 높은 API: p5.js는 직관적인 함수 이름과 쉬운 문법을 사용하여 프로그래밍을 쉽게 접근할 수 있도록 하고 있습니다. 예를 들어, createCanvas(200, 200)은 200x200 픽셀의 그림판을 만들고, background(0)은 배경을 검은색으로 만드는 함수입니다.
그래픽과 오디오에 초점: p5.js는 그래픽과 오디오를 다루는 다양한 기능을 제공합니다. 도형 그리기, 색상, 이미지, 텍스트, 3D, 소리 재생 등 웹에서 인터랙티브한 그래픽과 오디오를 만드는 데 필요한 기능이 제공됩니다.
웹 친화적: p5.js는 웹에서 동작하는 JavaScript 라이브러리이므로 웹 관련 기능들이 많이 제공됩니다. HTML 요소를 생성하고 조작하는 기능, 마우스와 키보드 입력 다루기, 웹캠과 마이크 접근 등의 기능이 있습니다.
p5.js를 이용하면 복잡한 코드 없이도 웹에서 동작하는 인터랙티브한 그래픽과 오디오를 만들 수 있습니다. 이는 프로그래밍 초보자들이나 비프로그래머들이 쉽게 디지털 미디어 아트를 만들 수 있게 하거나, 웹에서 인터랙티브한 시각화를 구현하는 데 유용합니다.
ML5.js
ml5.js는 머신러닝과 AI를 웹에서 쉽게 사용할 수 있도록 만들어진 JavaScript 라이브러리입니다. p5.js 라이브러리의 친화적인 스타일과 디자인 철학을 따르고, TensorFlow.js를 기반으로 하고 있습니다.
ml5.js는 NYU ITP(Interactive Telecommunications Program)와 IMA(Interactive Media Arts) 프로그램이 주도하고 있는 커뮤니티 기반의 오픈 소스 프로젝트입니다. 이 프로젝트에는 여러 개발자와 기여자들이 참여하고 있으며, 인터랙티브 미디어와 디지털 아트 분야에서 교육과 연구를 수행하는 이들이 많습니다.
ml5.js 프로젝트는 누구나 머신러닝을 접근하고 이해하게 하기 위해 시작되었습니다. 이 라이브러리를 사용하면 사용자는 웹 브라우저 상에서 쉽게 머신러닝 모델을 학습시키고 이용할 수 있습니다. 프로젝트의 목표 중 하나는 기술적인 장벽을 낮추어 더 많은 사람들이 머신러닝의 힘을 활용하고 이해할 수 있게 하는 것입니다.
ml5.js의 주요 특징
접근성: ml5.js는 기본적인 JavaScript와 HTML 지식만 있어도 누구나 쉽게 사용할 수 있습니다. 또한 웹 환경에서 동작하기 때문에 별도의 개발 환경을 설정할 필요가 없습니다.
다양한 기능: 이미지 분류, 픽셀 단위의 이미지 분류 (이미지 세그멘테이션), 텍스트 생성, 텍스트 분류, 피쳐 추출, 스타일 전송 등 다양한 머신러닝 기능을 제공합니다.
오픈 소스: ml5.js는 오픈 소스 프로젝트로서, GitHub를 통해 소스 코드를 열람하거나 기여할 수 있습니다.
실제 활용 사례 : 인공지능과 메이커프로젝트 교과서 수록 p.112 ~
인공지능과 메이커프로젝트 교과서 다운로드 링크 :
4) 미디어파이프(구글 인공지능 모델 프레임워크)
MediaPipe는 Google의 연구 팀이 개발한 머신러닝 소프트웨어입니다. 이는 다양한 기기에서 머신러닝 기반의 응용 프로그램을 위한 유연하고 사용하기 쉬운 프레임워크를 제공합니다.
MediaPipe의 주요 특징
크로스 플랫폼: MediaPipe는 Android, iOS, 웹, 데스크톱 등 다양한 플랫폼에서 사용할 수 있습니다.
다양한 머신러닝 능력: MediaPipe는 객체 감지, 얼굴 인식, 손동작 추적, 자세 추정, 홀로그래피 등 다양한 머신러닝 능력을 제공합니다.
모듈형 프레임워크: MediaPipe는 각 프로세스를 그래프로 구성하여, 사용자가 필요에 따라 유연하게 조합하거나 수정할 수 있습니다.
실시간 성능: MediaPipe는 실시간 또는 거의 실시간 성능을 보여줍니다. 이는 모바일 기기와 같은 제한적인 자원을 가진 기기에서도 사용하기 적합합니다.
MediaPipe를 사용하면, 개발자들은 고성능의 머신러닝 모델을 다양한 기기에서 쉽게 활용하고 구현할 수 있습니다. 이는 AR(증강 현실), VR(가상 현실), IoT 등 다양한 분야에서 응용될 수 있습니다.
https://developers.google.com/mediapipe
모델 테스트 예
파이썬 예제코드를 제공하기는 하지만 이전는 한번에 복붙만 하면 돌아가는 코드를 제공했는데, 요즘은 모듈식으로 주어서 오히려 초보자에게 조금 사용하기 어려워진 느낌이다.
따라서 파이썬에서 모델테스트를 할때 gpt를 활용하면 편하다.
gpt가 작성해준 테스트 파이썬 코드를 돌려보니 잘 동작한다.
하지만 제스처를 구분 안해주고, 닫기 버튼을 눌러도 꺼지지 않으니 이를 해달라고 추가 요청을 하였다.
동작확인
GPT가 엄지손가락 위치 기준으로 손바닥, 주먹 여부를 구분하는 코드를 작성했기 때문에 원하는 동작은 아니였지만 동작 방식을 확인하기에는 충분한 코드였다.
(그리고 닫기 버튼 눌르면 꺼지게 해달라고 했는 q 버튼으로 꺼지겠했다. 아마 학습된 코드의 일반적인 방법을 따른 것 같다.)
정확한 자세제어는 좌표값을 스캔해서 사용할 수도 있다.(참고)
학생 활용사례 : 경기기계공업고등학교 메이커프로젝트 캠프 2학년 학생 최x빈
이 외에도 다양한 모델들 예제들이 있으니 확인하자.
5) 깃허브 (MS 인수)
깃허브(GitHub)는 형상 관리 시스템인 깃(Git)을 기반으로 한 코드 호스팅 플랫폼입니다. 깃허브는 개발자들이 소스 코드를 저장하고 공유하는 데에 사용되며, 오픈 소스 프로젝트부터 기업용 소프트웨어 개발에 이르기까지 다양한 목적으로 활용됩니다.
깃허브를 사용하면 개발자들은 소스 코드를 버전 관리할 수 있고, 다른 개발자들과 협업하며 소프트웨어 프로젝트를 효과적으로 관리할 수 있습니다. 깃허브는 분산 버전 관리 시스템인 깃을 기반으로 하기 때문에 여러 개발자가 동시에 작업을 진행하고 변경 사항을 추적할 수 있습니다. 이를 통해 여러 개발자가 동시에 작업하며 코드를 통합하고, 변경 내용을 검토하고, 이슈를 추적하며, 피드백을 주고받을 수 있습니다.
깃허브는 개인 개발자부터 대규모 기업까지 다양한 규모와 유형의 프로젝트에 이용됩니다. 오픈 소스 프로젝트는 깃허브를 통해 소스 코드를 공개하고 다른 개발자들과 협력하여 프로젝트를 발전시킬 수 있습니다. 이렇게 개방적인 환경에서는 개발자들이 소스 코드를 공유하고 개선사항을 제안하며, 다양한 아이디어와 기술적인 지식을 나눌 수 있습니다.
깃허브는 소스 코드 관리 외에도 이슈 트래킹, 프로젝트 관리, 위키, 문서화 등의 기능을 제공합니다. 이를 통해 프로젝트의 진행 상황을 추적하고 관리할 수 있으며, 사용자들은 문서나 위키 페이지를 통해 프로젝트에 대한 정보를 공유할 수 있습니다.
깃허브는 2008년에 톰 프레스코트(Tom Preston-Werner), 크리스 외베르만(Chris Wanstrath), P. J. 하이트(PJ Hyett)에 의해 창업되었습니다. 이들은 개발자들이 협업하고 소스 코드를 공유하는 데에 있어서 더 나은 도구를 제공하고자 깃허브를 만들었습니다. 처음에는 Ruby on Rails 기반으로 개발되었으며, 오픈 소스 프로젝트로 시작하여 전 세계 개발자들에게 큰 인기를 얻었습니다.
깃허브는 창업 이후 지속적인 성장을 거듭하며 2018년에 마이크로소프트(Microsoft)에 의해 약 75억 달러에 인수되었습니다. 이 인수는 오픈 소스 생태계와 개발자들에게 큰 파장을 일으키며 깃허브의 영향력을 한층 높였습니다. 마이크로소프트는 깃허브를 독립적인 개발자 및 기업의 생태계로 유지하면서 꾸준한 투자와 개선을 진행하고 있습니다. 인수 이후에도 깃허브는 많은 개발자들과 기업들에게 주요한 협업 플랫폼으로서의 역할을 이어가고 있습니다.
git과 git허브 활용법을 모른다면, 아래 실습 확인하자.
깃허브를 활용한 인공지능 프로젝트는 정말 많은 사례가 있지만, 최근 한것들 중심으로 안내하겠다.
활용 예시 1 : 두가지 오픈소스를 활용해서 마리오게임 영상인식 컨트롤러 만들기.
동작 확인
오픈소스 1 : mediapie 기반 gesture 인식 컨트롤 오픈소스 찾기
https://github.com/Gokul9404/Virtual-Game-Controller
오픈소스 2 : 마리오게임 오픈소스 찾기
https://github.com/justinmeister/Mario-Level-1
이때, 마리오 게임에서는 a가 점프인데, 위 컨트롤러 코드에서는 space 값을 반환하기 때문에 이 두개를 호환하기 위하여 코드를 수정해 주었다.
활용 예시 2 : opencv 깃허브에서 얼굴인식 모델 가져와서 얼굴 추적 서보모터 만들기
활용예시 3 : 음성인식 캐릭터 로봇
깃허브의 인공지능 오픈소스는 정말 무궁무진하고 공부할 것이 많다. 이런 것들은 평생 공부해도 시간이 부족할 것 같지만, 챗지피티와 함께 소스를 분석하면서 프로젝트를 해나간다면 금방 실력이 키워질 것 같다.
끝.
@ Wonking AI-Maker Class 2023
'Python > 파이썬 프로젝트' 카테고리의 다른 글
미디어파이프를 활용한 인공지능프로젝트 (0) | 2023.10.16 |
---|---|
[파이썬 미니 프로젝트] Pyautogui로 미로찾기 게임 수행하기 (0) | 2023.08.21 |
페어코딩으로 짝꿍과 함께 파이썬 게임제작 (feat. Live Share, git) (0) | 2023.07.19 |
VSCode(Visual Studio Code) 사용법 - 파이썬/깃허브/아나콘다 연동 (0) | 2023.07.18 |
파이썬 API 활용의 기초 2 - 나이스 OPEN API 활용 (0) | 2023.07.13 |