본문 바로가기

전체 글

[Paper] ChatGPT is not all you need. A State of the Art Review of large Generative AI models ChatGPT로 대변되는 거대생성 모델(large generative models)이 쏟아져 나오는 시대가 되었다. 다른 모델들은 몰라도 ChatGPT는 사용해 보았을 거라고 짐작해 본다. 아직 사용해 보신 당신이라면.. 한번은 꼭 사용해 봐야 한다. ChatGPT를 느끼는 당신의 생각은 생각보다 훨씬 중요하다. 경험해 보지 않으면 모른다. 안써봤다면 지금 당장 시작해 보길 권한다. 생성형 AI(Generative AI)는 기존의 전문가 시스템(expert systems)이 if-else rule database로 수행하는 데이터 분석 및 분류하는 것과는 다르게 양질의 컨텐츠를 생산해 낼 수 있는 모델을 의미한다. 현대의 생성형 AI(modern generative Artifical intelligenc.. 더보기
[Binary Search && Two pointer]BJ_3151, 합이 0 [문제의 접근] 수학 논리적으로 생각해 보았을 때, 위의 문제는 문제의 복잡도가 $O(n^3)$ 인 문제로 N이 충분히 작다면 Bruteforce로 풀리는 문제라고 생각해 볼 수 있다. 그런데 N이 10000 으로 주어졌기 때문에 Bruteforce는 불가능하다. 그렇다면 $O(n^2 log(n)$ 이나 $O(n^2)$의 접근법을 생각해 보아야 한다. 전자의 경우는 시간 초과가 날 것 같은 우려가 있지만, 제한 시간이 4초 이기 때문에 가능성이 있어 보인다. 방법론은 Lower_bound 와 Upper bound를 이용해서 푸는 방법이다. 후자의 경우는 Two-pointer를 이용하면 될 것 같다. 세 수의 합이 0이 되는 조건을 찾는 문제인데, 합은 숫자의 크기에 의존하고 수의 크기는 정렬이 가능하므로.. 더보기
[BFS]BJ_2146, 다리 만들기 0 또는 1로 이루어진 100 x 100 배열에 대해서 0을 1로 채워가면서 연결되는 최소길이를 구하는 문제이다. 어떻게 접근해야 할까? 일단 격자 형태로 좌/우/상/하를 탐색하는 문제의 경우에는 BFS부터 검토해 보는 것이 좋다. 보통의 BFS 문제가 격자를 바탕으로 이루어지기 때문이다. 이 문제도 확장 형태를 보면 BFS로 풀리는 문제라는 것은 어렵지 않게 유추할 수 있다. 다만, 어려운 점은 시작위치와 도착 위치를 어떻게 잡느냐이다. 시작 위치를 어디로 잡아야 할까? 문제에서 시작 위치와 도착 위치가 정해지는 경우는 시작위치를 queue에 넣고 탐색을 진행하되 도착 위치에서 탐색을 종료하면 된다. 그런데 이 문제는 시작 위치와 도착 위치가 불분명하다. 어떻게 시작해야 할까? 문제에서 제시되어 있는 .. 더보기
Object Detection result metric AP(Average Precision) 아래의 결과는 YOLOv5의 Pretrained된 모델을 이용해서 transfer learning 시킨 후 validation한 결과이다. 여기에서 당신은 어떤 정보를 얻을 수 있는가? Object detection 결과를 읽어낼 수 있는 핵심 요소인 AP에 대해서 정리해 보자. 간단히 정리하자면 Average Precision은 0에서 1사이의 recall value에 대한 average precision(평균 정밀도)를 의미한다. * 결과 해석 1. Class = Object class 2. Images = No. of images for validation 3. Instances = No. of class in validation dataset images 4. P = Precision 5. R =.. 더보기
[DFS & DP] BJ_1937, 욕심쟁이 판다 [문제의 접근] 500 X 500의 배열이 주어지고, 동서남북으로 이동이 가능하다. 당신이 제일 먼저 생각하게 되는 풀이법은? 바로 BFS일 것이다. 그런데 이 문제는 잘 읽어보게 되면, 시작하는 위치와 더불어 방문의 순서가 매우 중요하다는 것을 깨달을 수 있다. 간단한 예시로 아래의 배열을 보자. 가장 작은 대나무의 위치인 5에서 시작한다고 가정했을 때 DFS로 탐색하는 경우는 한번에 한 위치만 방문하기 때문에 위와 같이 최대거리 4를 찾아낼 수 있지만, BFS로 탐색할 경우 최대 거리를 3밖에 찾을 수 없다. 거리 4를 도출하기 위해서는 한번 방문한 위치를 다시 방문해야 하고, 이는 가장 기본적인 BFS탐색 원리를 위배하는 일이다. 즉, 이문제는 DFS로 풀어야 하는 문제다. 보통 DFS로 풀기 위한.. 더보기
[Label Studio] Labeling progrom for YOLO YOLOv5를 이용해서 Object detection을 진행해 볼 예정이다. 사용해 보니 사용법이 심플하고, 여러가지 목적(Object detection, segmentation, classification...)에 대한 지원 뿐만 아니라, export 형식도 다양하게 제공되고 있어 쓸만한 프로그램이라는게 내 생각이다. 학습을 위한 이미지 데이터가 필요하고, 이미지 데이터에 대한 labeling data가 필요하다. Image classfication의 경우는 단순한 class name label이면 족하겠지만, Object detection은 detection object의 이미지 내 위치에 대한 label이 필요하다. YOLO는 하기의 형식을 따른다. YOLO 형식의 label format으로 데이터.. 더보기
[IT tips] Blog 검색엔진 등록, Sitemap 등록 근래에 Tistory로 Blog를 옮겼다. 시작한지 그리 오래되진 않았지만, 글의 제목을 Google에 검색해도 검색이 제대로 되지 않았다. 찾아보니, 문제는 바로 google 검색 엔진 등록 여부 였다. 컨텐츠가 풍부하고 글이 많다면 구글 search 엔진이 알아서 등록해 주겟지만, 미약한 블로그에는 검색 엔진 등록으로 좀더 site 노출을 원활하게 할 수 있다. 구글 검색 엔진에 등록하기 위해서는 "Google Search Console"로 구글링 해본다. Search Console에 들어가보자. 시작하기를 누른다. 좌측 상단의 메뉴 버튼 내에 속성 추가 버튼을 눌러 홈페이지를 추가해 보자. URL 접두어를 선택하고, 사이트 주소를 입력한다. https://상세주소.도메인 (예 https://mysi.. 더보기
Next Permutation Permutation(순열)은 프로그래밍에서 흔하게 사용되는 개념이다. 나무 위키에는 다음과 같이 정의되어 있다. 서로 다른 n개의 원소에서 r개를 중복없이 순서에 상관있게 선택하는 혹은 나열하는 것을 순열(permutation)이라고 한다. 위의 순열의 개념에서 "순서에 상관있게"를 "순서에 상관없게"로 바꾼 개념이 바로 조합(Combination)이다. n과 r이 일정한 수로 주어졌을 때, 어느쪽이 경우의 수가 더 많이 도출될까? 당연하게도, 순열이 그 경우의 수가 훨씬 많다. $_nP_r = n \times(n-1) \times (n-2) \times ... (n-r+1) =$ $n!\over(n-r)!$ $_nC_r = $ $_nP_r\over r! $ = $1\over r!$ $n!\over(n.. 더보기