전체 글
-
코드 돌려보기 - Hallo: Hierarchical Audio-Driven Visual Synthesis for Portrait Image Animation (Talking Head Generation)논문 후기와 구현 2024. 8. 3. 08:12
Talking Head Generation미국 대선이 다가오고 있다. 트럼프가 될지 해리스가 될지보다도 사실 내가 궁금한 것은, 이번 대선에서 Diffusion 기술이 어떤 위력을 발휘할 것인가이다. 24년 6월 15일 GitHub에 공개된 Hallo도 Diffusion을 활용한 Talking Head Generation 기술을 다룬다. Hallo: Hierarchical Audio-Driven Visual Synthesis for Portrait Image AnimationFlamingo라고, 투고되자마자 ChatGPT가 공개되어 어마어마한 결과물에 비해 주목을 많이 받지는 못한 불운의 논문이 있었는데, 하여튼 저때부터 뭔가 저런 억지 backronym으로 논문 이름을 짓는 게 아주 유행을 하는 것 같..
-
KCC 2024 참여 후기논문 후기와 구현 2024. 8. 3. 07:55
KCC란? 한국컴퓨터종합학술대회(KCC)는 한국정보과학회(KIISE)에서 매년 주최하는 학술대회이다. 고성능컴퓨팅, 국방소프트웨어, 데이터베이스, 모바일응용및시스템, 사물인터넷, 소프트웨어공학, 스마트시티, 알고리즘, 언어공학, 오픈소스소프트웨어, 인공지능, 인공지능응용, 전산교육시스템, 정보보안및신뢰컴퓨팅, 정보통신, 컴퓨터그래픽스및상호작용, 컴퓨터시스템, 프로그래밍언어 등 다양한 분야의 논문을 받으며, 또한 학부생, 주니어(고등학생) 논문도 접수받는다. 주니어(고등학생) 논문을 제외하고, 총 800여 편 정도가 accept된다. 그중 학부생 논문은 300여 편이다. accept율은 공개되지 않은듯하다. 나는 언어공학(NLP) 부문에 학부생논문을 투고했다. 2024년 KCC의 일정은 아래와 같았다:논..
-
[Python] 프로그래머스 / 2018 KAKAO BLIND RECRUITMENT / [3차] 자동완성코딩테스트 2024. 6. 19. 23:08
문제 링크 트라이(Trie) 자료구조최근에야 검색창 자동완성 기능에 NLP가 활용되지만, 고전적으로는 트라이 자료구조가 활용된다. 여러 단어를 Tree 자료 구조로 관리하는 것이다. 이 문제에서 예시로 들고 있는, gone, guild를 예시로 들면 다음과 같다 : (root) | g / \ o u / \ n i / \ e l | d 더 자세한 설명은 이 블로그에서 상세히 작성해놓은 것이 있다. 정답 코드#트라이 자료구조 만들기class TrieNode: def __init__(self): self.children..
-
[Python] 백준 1261 : 알고스팟코딩테스트 2024. 6. 17. 23:02
어려워보이지만, 결국은 Dijkstra0은 빈칸, 1은 벽이다. 좌측 상단에서 우측 하단으로 이동할 때, 최소한의 벽을 파괴하고 도달해야 한다. 이 문제는 잘 살펴보면 Dijkstra 문제이다. (x좌표, y좌표, 뚫은벽 개수) tuple을 queue에 넣어 관리하면서 최소로 벽을 뚫어나가면 되는 것. 정답코드import heapqimport sysM, N = map(int, input().split())graph = []for i in range(N) : row = [] a = input() for j in range(M) : row.append(int(a[j])) graph.append(row)visited = [[False] * M for _ in range(N)]..
-
[Python] 백준 1197 : 최소 스패닝 트리코딩테스트 2024. 6. 17. 22:54
문제 링크 Kruskal 알고리즘 Kruskal 알고리즘 자체에 대한 설명은 여기로. 최소 스패닝 트리(MST) 문제에서, 코드로 구현하기 더 쉬운 것은 Prim 알고리즘이지만, 때때로 Kruskal 알고리즘이 필요할 때가 있다. Kruskal 알고리즘은 사실 사람 입장에서 더 쉬운 방법이라고 생각한다. 왜냐하면 "간선"을 고를 때, Cycle이 되는지 안 되는지 파악하는 코드가 꽤나 복잡하기 때문이다. 그렇기에 다음의 코드를 알아두면 좋다.#시작은, 모든 노드의 부모 노드는 자기 자신#0번 노드의 부모는 0, 1번 노드의 부모는 1...parent = list(range(V))#부모 노드를 찾는 코드#부모가 자기 자신이 아니라면 부모의 부모를 재귀적으로 찾는 것def find(parent, x): ..
-
[Python] 프로그래머스 / 이중우선순위큐코딩테스트 2024. 6. 17. 21:01
문제 링크heapq의 함정자료구조 시간에 다들 Max Heap과 Min Heap 구조에 대해 배웠을 것이다. Tree 구조를 이용해서 리스트에서 최소값이나 최대값을 찾는 시간을 O(logN)으로 줄인 획기적인 기법이다. 이를 파이썬에서 쉽게 사용할 수 있도록 지원해주는 라이브러리가 heapq이다. (Min Heap만 가능) 그런데, 코테에서 아무 생각 없이 heapq를 자주 사용하다보면, heapq를 그저 시간효율성이 좋은 sort()로 착각하기 쉽다는 것이다! 여기 예시가 있다.import heapqa = [21, 20, 8, 19, 1, 14, 6, 8, 30, 26]heapq.heapify(a)a#[1, 8, 6, 19, 20, 14, 8, 21, 30, 26] 위에서 보면, a[0]가 최소값이 것..
-
[Python] 프로그래머스 / 최고의 집합코딩테스트 2024. 6. 17. 20:22
사실 이 문제의 경우 굉장히 쉬워서 그렇지, 코테에서 이렇게 수학적 풀이를 해야 하는 경우가 나오면 당황스러울 때가 많다. 보통 코테의 정잡은 수학적 풀이보다는 각종 알고리즘을 이요한 "탐색"이 정답인 경우가 많기 때문이다. 그러나 아무리 탐색을 쓰더라도 수학적 풀이를 이용해 탐색의 효율성을 증대시키는 문제가 생각보다 많기 때문에, 이런 유형에도 익숙해질 필요가 있다. 키 아이디어 정수 \( n \)개로 이루어진 집합이 있고, 이 집합의 합이 \( s \)일 때, 각 정수들이 가능한 한 비슷해야 곱이 최대이다. 산술평균-기하평균 부등식으로 증명할 수 있다. 산술평균-기하평균 부등식 산술평균-기하평균 부등식에 따르면, 양의 정수 \( x_1, x_2, \ldots, ..
-
[Python] 프로그래머스 / 과제 진행하기코딩테스트 2024. 6. 17. 20:02
문제 링크키 아이디어 1. 당연히 stack 자료구조 활용하는 문제2. plans 리스트에서 heapq를 활용해 작업의 시작 시간 순으로 새로운 list인 plans_ 만들기3. "11:59" 형식의 시간은 split(":")하고 int()하기 (60*hh + mm)4. while plans_ 루프 이후에 while stack해줘야 함 import heapqdef solution(plans): n = len(plans) plans_ = [] for name, start, playtime in plans: heapq.heappush(plans_, (convert_time(start), int(playtime), name)) answers = [] stack =..