본문 바로가기

Python/파이썬 프로젝트

인공지능 오픈소스 모델 소스 원천과 활용 방안에 대한 정리

[ 사전과제 ]

파이썬 매크로 기능 확인하기(학생 노션 자료)

 

Windows Macro

2022년 9월 19일

www.notion.so

 

 

[ 이론 1 ] 인공지능 메이커 프로젝트란?

(아래 강의자료 그림을 클릭해 주세요)

https://www.canva.com/design/DAFnunnh8SY/dCJ5bsrkZzqd6Z_CnoZgcA/view?utm_content=DAFnunnh8SY&utm_campaign=designshare&utm_medium=link&utm_source=publishsharelink 

 

 

[ 이론 2 ] 인공지능 오픈소스모델 원천 소스 살펴보기 

 1) 캐글 (구글 인수)

 

Kaggle: Your Machine Learning and Data Science Community

Kaggle is the world’s largest data science community with powerful tools and resources to help you achieve your data science goals.

www.kaggle.com

 

 

캐글(Kaggle)은 데이터 사이언스와 인공지능 학습자들이 모여 경쟁하거나 학습하는 플랫폼입니다. 2010년에 설립되어 현재까지 전 세계에서 가장 크고 활성화된 데이터 사이언스 커뮤니티로 자리 잡았습니다.

(2017년 구글이 인수)

 

캐글의 주요 기능

컴페티션(경진 대회): 기업체나 연구 기관들이 특정 문제에 대한 해결책을 찾기 위해 데이터셋을 제공하고, 참가자들이 모델을 만들어 문제를 해결하는 경진 대회입니다. 이 경진 대회를 통해 실제 문제를 해결하는 능력을 향상시킬 수 있으며, 상위 랭킹에 오르면 상금을 받을 수도 있습니다.

커널(Kernels) / 노트북(Notebooks): 사용자들이 데이터 분석 및 머신러닝, 딥러닝 모델을 만드는 과정을 공유하는 공간입니다. 다른 사람들이 만든 노트북을 참조하거나, 직접 노트북을 만들어 다른 사람들에게 공유할 수 있습니다.

데이터셋: 다양한 주제에 대한 데이터셋을 찾거나 공유할 수 있는 공간입니다. 사용자들은 이곳에서 데이터를 다운로드받아 연구하거나, 자신이 수집한 데이터를 공유할 수도 있습니다.

 


캐글을 활용한 AI 오픈소스 공부하는 방법

커널(Kernels) / 노트북(Notebooks) 학습: 다른 사용자들이 올린 노트북을 통해 코드와 그 과정을 확인하며 배울 수 있습니다. 여기에는 데이터 전처리부터 모델 학습, 결과 분석까지의 과정이 담겨 있습니다.

토론(Forums) 참여: 캐글에는 토론 포럼이 있어, 다양한 주제에 대해 의견을 나누거나 질문을 할 수 있습니다. 이곳에서는 기술적인 질문부터 경진 대회에 대한 전략 공유, 최신 머신러닝 트렌드에 대한 토론까지 다양하게 이루어집니다.

데이터셋 탐색 및 활용: 다양한 주제의 데이터셋을 활용해 본인의 프로젝트를 진행해보세요. 다양한 데이터에 대한 이해는 모델을 만드는 능력을 향상시키는 데 도움이 됩니다.

컴페티션(경진 대회) 참가: 실제 문제를 해결하는 경험을 통해 지식을 실전적으로 활용해보는 것이 중요합니다. 경진 대회에서 제공하는 데이터셋과 문제를 활용해 본인만의 모델을 만들어보세요. 경진 대회가 끝난 후에는 상위 참가자들의 솔루션을 확인하고 배울 수도 있습니다.

 

 2) 티쳐블 머신 (구글)

 

Teachable Machine

Train a computer to recognize your own images, sounds, & poses. A fast, easy way to create machine learning models for your sites, apps, and more – no expertise or coding required.

teachablemachine.withgoogle.com

 

티처블 머신 활용 프로젝트 사례

1) 카카오톡 API와 연결

 

Google Teachable Machine 활용 프로젝트 - 졸지마!

오.오.쓰 에 오신 것을 환영합니다. [ 졸지마 프로젝트 ] 입니다. 아래와 같은 순서로 배워보겠습니다. 1. 학습 목표 2. 사전 준비 3. 사전 지식 쌓기 4. 구현 5. 요약정리 ㅁ Trouble Shooting 1. 학습 목표

ai-creator.tistory.com

 

2) 웹플랫폼과 탑재

https://bossycompatiblesubversion.kimten0226.repl.co/

 

마스크 판독기

마스크 판독기 제작자 : 김태은 / 2021.06.02 Start !

bossycompatiblesubversion.kimten0226.repl.co

https://finishedexcitingpolyhedron.ggmt21524.repl.co/

 

repl.it

한국어 일본어 영어 읽기 --> 인공지능 테스트 구글 티쳐블 머신을 연동하여 인공지능 이미지 판단 알고리즘 입니다. 명암 감독기 제작자 : 최윤석 / 2021/6/2 Start

finishedexcitingpolyhedron.ggmt21524.repl.co

 

 

 

관련 강의 자료 (아래 그림 클릭)

https://www.canva.com/design/DAFfGGXdxcE/T46z4qcuAmmtYm9RwD97DA/view?utm_content=DAFfGGXdxcE&utm_campaign=designshare&utm_medium=link&utm_source=publishsharelink 

 

 

3) 아두이노와 연결

https://m.blog.naver.com/clzls8812/222152426216

 

야 너도 할 수 있어ㅋ 아두이노와 티처블머신(teachablemachine)으로 머신러닝 쉽게 하기! (feat. 파이

파이토치와 텐서플로우! 들어만 보고 써보지 않으셨다구요? 차근차근 함께 해봅시다!!!!!!!!! 아니 그러고 ...

blog.naver.com

 

잘모르겠다면, 챗지피티에게 코드 요청

https://chat.openai.com/share/fe8eca33-f59a-4e41-bd71-ad1924c44cfa

 

ChatGPT

A conversational AI system that listens, learns, and challenges

chat.openai.com

 

 3) ML5.js, P5.js (NYU)

 

p5.js

 

 

 

p5.js는 웹에서 인터랙티브한 그래픽과 오디오를 생성하기 위한 JavaScript 라이브러리입니다. 이 라이브러리는 비프로그래머와 예술가들, 디자이너들, 교육자들이 프로그래밍과 디지털 미디어 아트에 접근할 수 있게 도와주는 것을 목표로 하고 있습니다.

 

home | p5.js

안녕하세요! p5.js는 크리에이티브 코딩을 위한 자바스크립트 라이브러리로, 예술가, 디자이너, 교육자, 입문자, 그리고 모두에게 접근성 높고 포용적인 언어를 지향합니다! p5.js는 무료 오픈 소

p5js.org


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 ~

인공지능과 메이커프로젝트 교과서 다운로드 링크 :

https://pythonkorea.com/59

 

인공지능과 메이커 프로젝트 교과서 다운로드

2023년 3월에 서울시교육청에서 출간한 인공지능과 메이커프로젝트 교과서 pdf 공유합니다. AI 융합연구회 선생님들과 함께 집필하였습니다. 전문교과2 과목으로 개설하였고, 인공지능 메이커 교

pythonkorea.com

 

 

 

 4) 미디어파이프(구글 인공지능 모델 프레임워크)

MediaPipe는 Google의 연구 팀이 개발한 머신러닝 소프트웨어입니다. 이는 다양한 기기에서 머신러닝 기반의 응용 프로그램을 위한 유연하고 사용하기 쉬운 프레임워크를 제공합니다.

MediaPipe의 주요 특징

크로스 플랫폼: MediaPipe는 Android, iOS, 웹, 데스크톱 등 다양한 플랫폼에서 사용할 수 있습니다.

다양한 머신러닝 능력: MediaPipe는 객체 감지, 얼굴 인식, 손동작 추적, 자세 추정, 홀로그래피 등 다양한 머신러닝 능력을 제공합니다.

모듈형 프레임워크: MediaPipe는 각 프로세스를 그래프로 구성하여, 사용자가 필요에 따라 유연하게 조합하거나 수정할 수 있습니다.

실시간 성능: MediaPipe는 실시간 또는 거의 실시간 성능을 보여줍니다. 이는 모바일 기기와 같은 제한적인 자원을 가진 기기에서도 사용하기 적합합니다.

MediaPipe를 사용하면, 개발자들은 고성능의 머신러닝 모델을 다양한 기기에서 쉽게 활용하고 구현할 수 있습니다. 이는 AR(증강 현실), VR(가상 현실), IoT 등 다양한 분야에서 응용될 수 있습니다.

 

https://developers.google.com/mediapipe

 

MediaPipe  |  Google for Developers

An open source, cross-platform, customizable ML solution for live and streaming media.

developers.google.com

 

모델 테스트 예

 

파이썬 예제코드를 제공하기는 하지만 이전는 한번에 복붙만 하면 돌아가는 코드를 제공했는데, 요즘은 모듈식으로 주어서 오히려 초보자에게 조금 사용하기 어려워진 느낌이다.

 

따라서 파이썬에서 모델테스트를 할때 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허브 활용법을 모른다면, 아래 실습 확인하자.

 

페어코딩으로 짝꿍과 함께 파이썬 게임제작 (feat. Live Share, git)

[ 이론 ] 페어 코딩이란? 페어코딩이 필요한 이유 나의 페어 프로그래밍 탐험기 안녕하세요, 카카오엔터프라이즈 hans입니다. 이번 글을 통해 제가 어떻게 페어 프로그래밍을 처음 접하게 되었고,

pythonkorea.com

 

깃허브를 활용한 인공지능 프로젝트는 정말 많은 사례가 있지만, 최근 한것들 중심으로 안내하겠다.

 

활용 예시 1 : 두가지 오픈소스를 활용해서 마리오게임 영상인식 컨트롤러 만들기.

동작 확인

 

오픈소스 1 : mediapie 기반 gesture 인식 컨트롤 오픈소스 찾기

https://github.com/Gokul9404/Virtual-Game-Controller

 

GitHub - Gokul9404/Virtual-Game-Controller: A Game Controller that works hand gestures made by using Python libraries.

A Game Controller that works hand gestures made by using Python libraries. - GitHub - Gokul9404/Virtual-Game-Controller: A Game Controller that works hand gestures made by using Python libraries.

github.com

 

오픈소스 2 : 마리오게임 오픈소스 찾기

https://github.com/justinmeister/Mario-Level-1

 

GitHub - justinmeister/Mario-Level-1: The first level of Super Mario Bros made with Python and Pygame.

The first level of Super Mario Bros made with Python and Pygame. - GitHub - justinmeister/Mario-Level-1: The first level of Super Mario Bros made with Python and Pygame.

github.com

 

이때, 마리오 게임에서는 a가 점프인데, 위 컨트롤러 코드에서는 space 값을 반환하기 때문에 이 두개를 호환하기 위하여 코드를 수정해 주었다.

 

활용 예시 2 : opencv 깃허브에서 얼굴인식 모델 가져와서 얼굴 추적 서보모터 만들기

https://pythonkorea.com/53

 

얼굴 트래킹 레이저 건 메이킹 자료

1. 동작 영상 2. 아두이노 코드 #include int myArray[2]; byte* ddata = reinterpret_cast(&myArray); // pointer for transferData() size_t pcDataLen = sizeof(myArray); bool newData=false; Servo servo1; //servo1 변수 선언 Servo servo2; //servo2 변

pythonkorea.com

 

활용예시 3 : 음성인식 캐릭터 로봇

https://pythonkorea.com/52

 

[AI 메이커 특강] 경기기계공업고등학교 미니 로봇 음성제어 프로젝트 자료

1. 강의 교안 2. 프로그래밍 코드 제어 https://organic-fontina-944.notion.site/39b6eb967ff44442a6c90aa531654e9b 인공지능 특강 주니 / organic-fontina-944.notion.site 3. 만족도 설문지 https://forms.gle/yMD5nr5ucbfexERP6 경기기계

pythonkorea.com

 

깃허브의 인공지능 오픈소스는 정말 무궁무진하고 공부할 것이 많다. 이런 것들은 평생 공부해도 시간이 부족할 것 같지만, 챗지피티와 함께 소스를 분석하면서 프로젝트를 해나간다면 금방 실력이 키워질 것 같다. 

 

끝.

 

@ Wonking AI-Maker Class 2023