전체 글 117

[카카오] 2020 신입 개발자 블라인드 채용 1차 코딩 - 문자열 압축

그냥 무식하게 1개 단위 ~ n-1개 단위 압축 경우의 수를 모두 계산하고 그 중 가장 작은 값은 반환하는 방법으로 해결했습니다. 좀 더 깔끔하게 해결한 코드가 있으면 정리해서 업데이트 하겠습니다.. import math def solution(s): if len(s) == 1: return 1 elif len(set([c for c in s])) == 1: count = len(s) return len(str(count)) + 1 else: answer = len(s) for i in range(1, len(s)): idx = i length = 0 prev = s[:i] count = 1 for j in range(math.ceil(len(s) / i) - 1): curr = s[idx:idx+i] ..

[python] pass, continue, break 활용법

안녕하세요, 오늘은 정말 간단한 python에서 pass, continue, break 문법 각각의 역할과 활용법에 대해서 정리해보겠습니다. 쉽게 정리하자면, pass : 아무 동작도 하지 않습니다. 반복문에서 아무런 영향을 끼치지 않습니다. continue : 반복문에서 다음 loop로 건너뛰면서 loop는 지속됩니다. break : 반복문을 멈추고 loop 밖으로 나갑니다. 말로 설명하는 것보다 쉽게 이해할 수 있도록 아래 예시로 정리하겠습니다. pass는 왼쪽의 결과에서 볼 수 있듯이 코드에 아무런 영향을 끼치지 않습니다. 따라서 pass는 주로 조건문에서 별다른 행동이 필요하지 않을 때, 또는 class 생성시 초기에 별다른 값이 없을때 전체 코드 동작을 확인하기 위해 임시적으로 활용하기도 합니다..

[논문 리뷰] Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network

논문 링크 / 공식 코드 2018년 ECCV 2018에서 발표된 논문입니다. 3년전에 발표된 논문이지만 여전히 여러 데이터셋에서 아래와 같은 좋은 성능을 보여주고 있습니다. 논문의 핵심 내용에 대해서 간략히 리뷰해보도록 하겠습니다. 논문의 핵심 컨트리뷰션은 다음과 같습니다. end-to-end 방법으로 두 가지 문제인 face alignment와 3D face reconstruction을 함께 해결합니다. 직접적인 3D facial structure 예측을 위해 UV position map이라는 새로운 표현을 만들었습니다. 모델 훈련시 position map의 각 point에 다른 weight를 부여하는 weight mask를 사용하여 모델의 성능을 향상시켰습니다. 최종적으로 100FPS의 속도로 2D ..

논문 리뷰 2021.06.17

[논문 리뷰] MnasNet: Platform-Aware Neural Architecture Search for Mobile

오늘 리뷰할 논문은 "MnasNet: Platform-Aware Neural Architecture Search for Mobile"로 구글 브레인에서 CVPR 2019에서 발표한 논문입니다. 이전에 포스팅한 EfficientNet V2에서 NAS를 활용해서 초기 모델을 얻었다고 하는데 그때 MnasNet을 사용했다고 해서 한번 짚고 넘어가고자 이렇게 포스팅을 남깁니다. (구글에서 공개한 official한 코드도 있기 때문에 추후에 직접 사용해보며 코드 리뷰 또한 해볼 예정입니다.) 아래 전체적인 오버뷰를 보면 알 수 있듯이 최적의 모델을 찾기 위해 모델의 accuracy뿐만 아니라 모바일 기기에서 직접 계산되는 latency까지 함께 고려하는 것을 확인 할 수 있습니다. 즉, 모델은 accuracy와 ..

논문 리뷰 2021.05.19

[논문 리뷰] EfficientNetV2: Smaller Models and Faster Training

약 2년 전 공개했었던 EfficientNet은 다른 모델들에 비해 빠른 학습 속도와 좋은 성능으로 Image classification 분야에서 활발하게 활용되었습니다. 그리고 최근 구글에서 기존의 EfficientNet과 비교해서 학습 속도와 정확도를 더욱 개선한 EfficientNet V2를 발표했습니다. 기존의 모델에 비해서 빠른 학습 속도를 보여준다고 하는데 해당 논문의 핵심 부분만 간략하게 정리해보도록 하겠습니다. EfficientNet ? 네트워크의 파라미터 수를 감소시키면 모델이 작아지고 그에 따라서 메모리에 쉽게 올릴 수 있는 등 다양한 이점이 있습니다. 하지만 파라미터 수를 감소시키면 모델의 성능 또한 감소한다는 문제점이 발생합니다. 그렇기 때문에 성능 감소 없이 파라미터 수를 최소화하..

논문 리뷰 2021.05.16 (1)

[논문 리뷰] Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric CNN Regression

논문 링크 2017년에 ICCV에서 발표된 논문입니다. 현재 Paper with code의 3D Face Reconstruction 부문에서 Github 스타 수가 가장 높으며 3D Face Reconstruction (Florence dataset) 벤치마크에서 3등에 위치하고 있습니다. 작성된지 4년이나 지났지만 3D Face Reconstruction에 대한 많은 인사이트를 얻을 수 있을거 같아 자세히 읽고 핵심 내용에 대해서 정리해보도록 하겠습니다. [1] Introduction 해당 논문은 이전의 컴퓨터 비전에서 3D Face Reconstruction을 수행할 때 고려해야 했던 얼굴 포즈, 표정, 조명 등의 다양한 문제들을 간단한 CNN 모델을 학습시킴으로써 해결하는데 초점을 맞춘 것 같습니다..

논문 리뷰 2021.05.01

[tf.data] TensorFlow Input Pipelines

딥러닝 기법을 사용할 때, 가장 중요하다고 생각되는 부분은 단연 데이터입니다. 데이터를 수집하고 전처리하는 등의 데이터 준비 과정이 최종 모델의 정확도에 가장 큰 부분을 차지한다고 생각합니다. 공들여 준비한 데이터를 모델 훈련에 사용할 때 다양한 데이터 입력 방법들이 존재합니다. 이번 포스트에서는 준비된 이미지 데이터를 사용하기 위한 입력 파이프라인 방법에 대해서 정리해보도록 하겠습니다. tf.data.Dataset classes = os.listdir(path) filenames = glob(path + '/*/*') random.shuffle(filenames) labels = [classes.index(name.split('/')[-2]) for name in filenames] 위 4줄짜리 코드로..

텐서플로우 2021.04.20

[논문 리뷰] How far are we from solving the 2D & 3D Face Alignment problem?

paper / code Face Alignment란, 이미지상의 사람의 얼굴에서 특징(feature)을 추출하는 기술을 뜻 합니다. 수 많은 사진들을 대상으로 그림 1과 같이 정확한 얼굴의 정면 데이터를 얻기 위해서는 크게 다음 3가지 단계가 필요합니다. 1. 이미지에서 얼굴 영역을 찾는 Face Detection (얼굴 검출) 2. 찾은 얼굴에서 눈, 코, 입 등의 특징을 찾는 Face Alignment (얼굴 정렬) 3. 특징점을 이용해 얼굴 영역을 동일한 형태와 크기로 변경하는 Normalization (정규화) 소개 본 논문은 위 단계 중 2단계인 Face Alignment에 대한 논문입니다. 저자는 deep learning을 활용한 2D face alignment 모델을 제안하고 성능을 평가하여..

논문 리뷰 2021.03.30

[연결 리스트] 두 수의 덧셈

* leetcode 2. Add Two Numbers Q. 역순으로 저장된 연결 리스트의 숫자를 더하라 # 입력 (2 -> 4 -> 3) + (5 -> 6 -> 4) # 출력 7 -> 0 -> 8 # 설명 342 + 465 = 807 풀이. 전가산기 구현 def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: root = head = ListNode(0) carry = 0 while l1 or l2 or carry: sum = 0 # 두 입력값의 합 계산 if l1: sum += l1.val l1 = l1.next if l2: sum += l2.val l2 = l2.next # 몫(올림)과 나머지(값) 계산 carry, val = divmod(..

Linux Two-Factor Authentication 적용하기

Two-factor authentication (2FA)는 Multi-factor authentication의 한 종류로 서버 접속을 위해서 기존에 사용하던 password 이외에 추가적인 OTP 또는 verification code를 요구하여 서버 보안을 더욱 강화하는 방법입니다. 5분만에! 간단하게 설정하는 방법에 대해서 알아보도록 하겠습니다. Step 1 - Google PAM 모듈 설치 일단, 서버에 Google PAM 모듈을 설치해야합니다. 이 모듈은 사용자가 TOTP를 사용하여 Linux 시스템에서 인증할 수 있게 해줍니다. # 먼저 Ubuntu repositories를 업데이트하고, $ sudo apt-get update # google pam을 설치합니다. $ sudo apt-get ins..

프로그래밍 2021.02.15