본문 바로가기

전체 글

(105)
[Chapter 1]starGAN 리뷰 StarGAN이란 starGAN[1]은 multi-domain image-to-image translation 방법이다. 헤어, 성별, 나이 등 다양한 도메인 간 변환을 수행해야 할 때 cycleGAN[2]의 경우 각각의 변환당 generator를 생성해야 하지만, starGAN의 경우 unified architecture model로 하나의 generator로 다양한 도메인 간 변환이 수행 가능하다. cycleGAN의 경우 머리와 성별, 머리와 나이 등 한 이미지를 다양한 도메인으로 변환을 하려는 경우, 여러 번의 변환을 거쳐야 한다. 이런 방식은 비효율적이고, 결과의 품질도 낮다. 반면에 starGAN은 한 번에 여러 도메인으로 변환을 수행할 수 있다. starGAN은 유연한 변환이 가능해 효율적이며..
[Style Trasfer]Instance normalization Style Transfer에서 contrast의 중요성 stylized image의 contrast는 대부분 style image의 contrast에 의해 결정되며 content image contrast와 거의 독립적이라는 것을 아래 이미지에서 확인할 수 있다. content image를 style image의 style로 변환할 때 styleization의 결과가 일반적으로 content image의 contrast에 의존해서는 안된다. stylized image의 contrast는 style iamge의 contrast와 비슷하기를 원하기 때문에 generator는 content image에서 contrast information을 제거해야한다. 아래 이미지에서 contrast normalizati..
Anomaly detection Anomaly detection란 anomaly detection이란 정상적인 동작에서 벗어난 observation을 식별하는 것이다. 비정상적인 데이터는 technical glitch 같은 critical incident나, 잠재적인 기회(소비자의 행동)를 나타낼 수 있다. 여기서 machine learning은 anomaly detection을 자동화하기 위해 점진적으로 사용된다. anomaly detection은 3가지 categories(Supervised anomaly detection, Semi-supervised anomaly detection, Unsupervised anomaly detection)가 있다. anomaly detection은 intrusion detection, fraud..
[프로그래머스]불량 사용자 1. 2중 반복문을 돌려 banned_id에 매핑되는 user를 store 배열에 저장한다. 2. 저장한 배열을 이용해 가능한 모든 경우의 수를 구하기 위해 user_count 함수를 이용해 깊이 우선 탐색을 이용한다. 3. 모든 경우의 수를 저장한 total 배열을 정렬한 후 비교해 중복되는 값을 제외한 개수를 구한다. #include #include #include #include using namespace std; int MAX = 0; map M; vector total; vector store[8]; vector temp; vector temp_copy; void user_count(int cur) { if (cur >= MAX) { temp_copy = temp; sort(temp_copy...
[프로그래머스]외벽 점검 DFS(or permutation)와 백트래킹을 이용해 모든 경우의 수를 탐색했다. weak의 처음부터 끝까지 반복문을 순회하는데, 각 반복마다 해당 weak의 위치부터 dist 거리만큼 검사한다. 검사하면서 weak의 위치면서, 아직 방문하지 않았다면 방문 표시를 하고 백트래킹 기법으로 방문 표시를 다시 제거하기위해 store 배열에 저장한다. 다음 dist를 검사하기 위해 search_result 함수를 호출한다. 마지막으로 현재 반복문에서 store에 visited 위치를 알려주는 변수를 추출해 방문표시를 제거한다. 위의 순서를 반복하면 답을 찾을 수 있다. #include #include #include #include using namespace std; bool visited[250]; boo..
[프로그래머스]블록 이동하기 구현이 어려운 문제다. 어떻게 풀지 생각하는데 오래 걸리지 않았는데, 신경써야 할 부분이 많아 풀이하는데 오래걸렸다. 풀이 방법은 다음과 같다. 로봇이 이동할 수 있는 경우는 회전하거나 전체가 움직이는 경우다. 1. 회전의 경우 로봇의 각 좌표를 기준으로 회전했을 때 가능한 경우가 있으면 이동한다. 2. 전체가 움직이는 경우는 2개 좌표에 같은 값을 + 또는 - 연산을 진행해 가능한 위치가 있으면 이동한다. 3. 1,2 번을 통해 이동한 좌표는 다시 방문하지 않도록 visited 배열을 이용해 표시한다. 4, 1,2,3 번을 반복하다 목표 좌표에 도착하면 값을 반환한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ..
[프로그래머스]기둥과 보 설치 시뮬레이션 문제는 있는 그대로 구조를 구현하는게 중요하다는 것을 명심하자 기둥과 보 문제는 다음과 같이 풀이하는데 핵심은 다음과 같다. 1. 주어진 build_frame 배열을 순회하면서 기둥과 보를 설치하는데 check_gidung, check_bo 이 때 함수를 이용해 설치가 가능한지 검사한다. 2. 삭제하지 못하는 경우가 있을 수 있는데 remove_gidung, remove_bo 사용해서 주변의 보와 기둥이 있다면 현재 삭제하려고 하는 것을 제거한 후에도 구조가 유지되는지 확인한다. 최대한 있는 그대로 구현하는 것이 중요하다는 점을 꼭 명심하자 #include #include #include using namespace std; const int MAX = 150; bool gidung[MAX][..
[프로그래머스]자물쇠와 열쇠 이 문제는 모든 경우의 수를 찾아서 문제를 해결했다. 문제를 해결한 순서는 다음과 같다. 1. 우선 키를 90'회전하면 4개의 키를 얻을 수 있다. 2. 구해진 4개의 키를 1차원으로 펼쳐주는데 이때 자물쇠의 크기보다 키의 크기가 작으면 자물쇠의 크기에 맞도록 여백(0값)을 추가한다. 3. 키를 1차원으로 펼친것과 같이 자물쇠도 펼쳐준다((키 == 자물쇠) 여부를 비교하기 편하게 하기 위함) 4. 자물쇠를 위아래로 이동시하면서 자물쇠와 키가 맞는지 검사하고(동일하다면 return true) 가능한 모든 형태를 저장한다. 5. 4번 과정에서 저장한 값을 이용해 좌우를 이동하면서 자물쇠와 키가 맞는지 검사하며, 동일하다면 true 값을 return 한다. 6. 4,5번 과정에서 자물쇠와 키가 맞지 않았다면 ..