목록전체 (275)
컴굥일지
1. 모션 인식 - OpenPose OpenPose는 신체의 관절을 추론하는 기술입니다. 이후, 관절들을 선으로 이어서 보여줍니다. OpenPose는 얼굴, 손, 몸의 skeleton을 그릴 수 있습니다. 자세 추정이 필요한 저희 팀은 이 기술을 사용하기로 결정했습니다. (with python) 2. OpenPose 설치하기 https://github.com/CMU-Perceptual-Computing-Lab/openpose 위 링크에 들어가서 파일들을 다운로드 받아야 합니다. 파일을 압축해제 후, models 폴더에 들어가서 getModels 파일을 실행해야 합니다. 윈도우 환경에서는 아래에 표시한 파일을 실행하고, 그 외의 경우에는 그 밑의 getModels.sh를 실행하면 됩니다. 파일을 실행하면 ..
1. 모션 인식 - Teachable Machine 모션 인식을 위해 사용해 본 기술들은 아래와 같습니다. 1. Teachable Machine 2. OpenPose (OpenCV) with Python 3. PoseNet with javascript 위의 3가지 중에 가장 쉬운 것은 Teachable Machine이었습니다. 유튜브에서 Teachable Machine을 사용하여 자세 추정을 하는 동영상을 찾았습니다. 이걸 보고 따라 하며 TM 사용법을 알게 되었습니다. 깃허브나 기술 블로그들을 읽는 것도 좋지만, 동영상으로 설명해주는 것이 가장 이해하기 쉬운 것 같아서 아래에 첨부합니다. https://youtu.be/9SwdGFzFb5Y (세상에서 가장 쉬운 인공지능 만들기 2탄 | Teachable..
1. 프로젝트 주제 변경 사유 저번 포스트를 보면 알 수 있겠지만, 저희 팀은 GPT를 사용하여 동화를 "생성"하려고 했었습니다. 하지만, 방학 중에 GPT를 계속 사용하면서 많은 스트레스를 받았었습니다. 먼저 KoGPT2를 사용하여 "문장"을 생성하면 그나마 말이 되는 문장이 나왔습니다. 하지만 "문단"을 생성하려고 하면, 문법은 물론이고 내용이 너무 이상하게 나왔습니다. 그래서 GPT3를 사용하여 한국어로 문단을 생성하려고 했는데, 한국어 학습이 너무 덜 되어있었는지 KoGPT2보다도 내용이 이상하게 나오는 것 같았습니다. GPT3가 한국어가 아니라 영어는 많이 학습이 되어있기 때문에, 영어 동화로 주제를 틀어보기로 했습니다. 이때까지만 해도 약간의 희망을 가지고 있었지만, 결과는 그리 희망적이지 않..
문제 https://www.acmicpc.net/problem/9184 문제 내용 문제에서 주어진 재귀 함수 의사 코드를 코드로 구현하면 되는 문제이다. 문제 풀이 문제에서 주어지는 코드를 보면, w(a, b, c)가 호출되는 수가 많다. 따라서, 재귀 문제이지만 dp(동적계획법)을 이용해서 문제를 풀어야 한다. 문제에서 주어진 재귀 코드 안의 조건을 위에서부터 1,2,3,4로 하자. 1번과 2번 조건은 그대로 재귀 함수로 구현하면 된다. 3번과 4번 조건은 재귀 함수가 많이 호출되기 때문에, dp를 사용해야 한다. 따라서 dp[a][b][c]의 값이 0이 아니라면 이미 계산이 된 것이기 때문에 값을 바로 return 하면 된다. dp[a][b][c]의 값이 0이라면 3번과 4번의 방식으로 계산을 하게 ..
문제 https://www.acmicpc.net/problem/11651 문제 내용 (x, y) 좌표를 입력받아, y좌표를 증가하는 순으로 정렬한다. 만약, y좌표가 같을 경우, x좌표가 증가하는 순으로 정렬하면 된다. 문제 풀이 pair로 입력받아서 sort로 정렬한다. sort로 정렬을 할 때에, 3번째 인자로 compare 함수를 구현하여 넣어준다. 코드 #include #include #include using namespace std; bool compare(paira, pairb) { if (a.second == b.second) { return a.first < b.first; } else { return a.second < b.second; } } int main() { ios_base::..
문제 https://www.acmicpc.net/problem/2751 문제 내용 수를 입력받아서 정렬하여 출력하면 된다. 문제에서는 O(nlogn)의 시간 복잡도로 풀라고 되어있다. 문제 풀이 c++의 경우는 sort()를 쓰면 쉽게 정렬할 수 있다. 코드 #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //입력 int n;cin >> n; vector arr(n); for (int i = 0; i > arr[i]; //정렬 sort(arr.begin(), arr.end()); //출력 for (int i = 0; i ..
문제 https://www.acmicpc.net/problem/1436 문제 내용 666이 들어간 숫자 중에서 n번째 숫자를 출력하면 되는 문제이다. n=1이면 666, n=2이면 1666, n=3이면 2666 이런 식으로 진행된다. 문제 풀이 완전탐색으로 문제를 풀었다. 숫자의 크기를 1씩 키워가며 666이 들어있는지를 확인했는데, 이를 위해 숫자를 문자열로 변환하는 과정이 필요하다. 코드 #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //입력 int n; cin >> n; //문제 해결 int num = 666; string tmp; whil..
문제 https://www.acmicpc.net/problem/17478 문제 내용 숫자를 입력받아서, 위와 같이 재귀적인 응답을 출력하는 문제이다. 문제 풀이 재귀 함수를 만들어 풀면 된다. 다만, 이 문제에서 주의해야 할 점은, ----가 아닌 ____(언더바)라는 것이며, 공백도 주의해야 한다. 따옴표 또한 출력해야 하기 때문에 \" 같은 방식으로 작성해야 한다. 마지막으로, 함수를 만들 때 return type을 int로 하면 백준에서 런타임 에러가 발생했다. void로 하는 것을 추천한다. 코드 #include using namespace std; string str=""; void recur(int n) { string line = str; if (n==0) { cout
문제 https://www.acmicpc.net/problem/10872 문제 내용 재귀를 사용하여 팩토리얼 함수를 구현하면 되는 문제이다. 문제 풀이 재귀 문제 중에 가장 기본적인 문제이다. 함수 안에 반드시 종료 조건이 있어야 함을 유의하면 된다. 코드 #include using namespace std; int factorial(int num) { if (num > n; //결과 출력 cout
문제 https://www.acmicpc.net/problem/7568 문제 내용 전체 사람들의 몸무게와 키를 입력받아, 덩치 등수를 순서대로 출력하면 된다. 덩치 등수는 자신보다 몸무게와 키 모두 큰 사람의 수 + 1 을 하면 된다. 문제 풀이 완전탐색으로 문제를 해결할 수 있다. pair로 몸무게와 키를 입력받는다. 이후, 반복문을 돌며, 자신보다 몸무게와 키가 모두 큰 사람의 수를 count 하고, 출력하면 된다. 코드 #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //입력 int n; cin >> n; vectorarr; int w, h;..