전체 글 15

파이썬 순열, 조합 스택으로 구현하기

보통 순열이나 조합을 구현할 때는 재귀함수를 이용한 dfs로 구현을 하게 됩니다. 하지만 저에게는 재귀함수보다는 stack을 이용한 구현이 좀 더 직관적이고 이해가 쉽기때문에 stack을 이용한 구현방법을 살펴보겠습니다. 순열 lst = [1,2,3,4] n = 2 permutations = [] stack = [([x], [i]) for i, x in enumerate(lst)] # 순열저장리스트, 인덱스리스트 print('초기상태 스택 :', stack) while stack: per, idx_list = stack.pop() # n개를 모두 뽑은 경우 순열을 추가한 후 continue if len(per)==n: permutations.append(per) continue # n개를 뽑지않은경우 f..

파이썬 2022.03.29

Donut : Document Understanding Transformer without OCR 논문리뷰

Abstract 2021년 11월 30일에 네이버 Clova AI 연구팀에서 제출된 논문입니다. 기존의 Visual Document Understanding(VDU)은 OCR을 base로 해서 동작하였기 때문에 계산 cost가 높고 OCR Error에 의한 성능하락이 있어왔습니다. 따라서 해당 논문에서는 OCR 프레임워크가 base에 없는 end-to-end 방식의 새로운 VDU 모델을 제안합니다. 또한 large-scale의 실제 문서이미지에 대한 의존을 줄이기 위해서 Synthetic Document Generator(SynthDog)도 같이 소개하며, 이를 이용해 모델을 pretrain 하였다고 합니다. Donut은 다양한 공공 및 사적 데이터셋들에 대해 시행한 Document Understandi..

AI 2021.12.06

Perceiver IO 논문 리뷰

Abstract 구글 딥마인드에서 제안한 기존 Perceiver의 단점을 보완한 모델입니다. Perceiver 모델은 어떠한 데이터 형태도 처리할 수 있으면서 계산과 메모리 사용이 입력 사이즈에 선형적으로 작동하지만(기존의 transformer는 데이터가 클 수록 느려짐) 간단한 output 형태만 출력이 가능했습니다. Perceiver IO 모델은 output도 latent space를 decoding 과정을 거쳐서 임의의 형태를 출력할 수 있도록 한 모델입니다. NLP, Vision, Audio나 Multi-modal 영역에서도 좋은 결과를 보였습니다. Perceiver IO Architecture 논문에서 제시하는 Architecture를 대략적인 과정을 설명하겠습니다. 크게 Encoding, Pr..

AI 2021.09.24

YOLO v5 Pretrained Pytorch 모델 사용하기

개요 github.com/ultralytics/yolov5 ultralytics/yolov5 YOLOv5 in PyTorch > ONNX > CoreML > TFLite. Contribute to ultralytics/yolov5 development by creating an account on GitHub. github.com Multiple Object Detection을 위해 고안된 모델인 YOLO v5를 사용해보겠습니다. 사용시 다른 프로젝트에서 쉽게 적용할 수 있도록 Model Load와 Image Predction 부분만 실행되도록 detect.py 코드를 수정했습니다. Visual Studio Code, Git, Ananconda(파이썬 가상환경 관리)가 설치되어있고 VS Code에서 An..

AI 2021.03.26

SEER - Pretrainig of Visual Features in the Wild 논문 리뷰

개요 2021년 3월 5일에 Facebook AI Research 팀에서 발표된 논문입니다. 논문 원제는 Self-supervised Pretraining of Visual Features in the Wild 입니다. arxiv.org/pdf/2103.01988v2.pdf 최근에 Self-Supervised Learning(자기지도학습) 분야는 꽤 발전해서 SimCLR, BYOL, SwAV의 방법들은 Supervised Learning과의 격차를 매우 좁혔습니다. 이 논문에서는 SElf-supERvised(SEER) 모델을 제시합니다. SEER는 Self-Supervised Learning 방법으로 SwAV를 사용하였고 모델 Architecture는 RegNetY를 사용하였으며 가장 큰 특징은 랜덤하게..

AI 2021.03.23

백준 1034 번 : 램프 - 파이썬

www.acmicpc.net/problem/1034 1034번: 램프 첫째 줄에 N과 M이 주어진다. N은 행의 개수이고, M은 열의 개수이다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 램프의 상태가 주어진다. 1이 켜져있는 상태이고, 0이 꺼져 www.acmicpc.net 알고리즘 공부를 시작한지 얼마 안되어서 생각보다 어렵게 느껴지네요. 어쨌든 제가 이해한 풀이대로 적어보도록 하겠습니다. 1 0 1 1 0 0 1 0 1 K=3 인 예제를 가지고 설명해보겠습니다. 1. 각 행마다 0의 개수를 구합니다. 예제에서는 1행은 1개, 2행은 2개, 3행은 1개가 됩니다. 2. (0의 개수가 K보다 작거나 같고), (K가 짝수면 0의 개수도 짝수, K가 홀수면 0의 개수도 홀수) ..

파이썬 2021.03.18

Lambda Networks 논문 리뷰

1. 개요 Google Research가 ICLR 2021에서 발표한 Lambda Networks에 대한 논문 리뷰입니다. 람다레이어는 입력과 다른 contextual한 정보에 대한 long-range 상호작용을 self-attention 없이 구현했습니다. 이 레이어는 linear attention과 attention map을 사용하지 않는다는 점에서는 비슷하지만 위치정보와 내용정보의 상호작용을 모델링할 수 있습니다. 결과를 보면 LambdaResNets은 EfficientNets보다 3.2 - 4.4x 빠르며 비슷한 정확도를 보였습니다. 2. 특징 데이터에서 long-range 정보를 모델링하는 것은 머신러닝에서 중요한 문제입니다. Self-attention은 이러한 문제를 해결했지만 메모리의 높은 ..

AI 2021.03.02

TransUNet - Transformer를 적용한 Segmentation Model 논문 리뷰

개요 2월 8일에 나온 Medical Image Segmentation을 목적으로 만들어진 TransUNet입니다. TransUNet은 기존의 발표된 ViT(Vision Transformer)를 이용해 인코딩 후 디코더를 이용해 Upsampling하여 Segmentation을 진행합니다. U-Net이 들어간 이름에서 알 수 있듯이 Upsampling시 기존 U-Net처럼 Skip Connection을 이용해 Segmentation Detail을 더 높여주는 방식을 취했습니다. TransUNet은 multi-organ CT Segmentation에서 State-of-the-arts 성능을 달성했습니다. Architecture TransUNet의 Architecture입니다. 여기서 중요한 점은 다음과 같습..

AI 2021.02.25

파이썬 pyautogui와 키보드 후킹을 통한 자동 클릭 매크로

개요 저번에 만들었던 키보드 후킹 클래스를 이용해 매크로 기록을 시작하고 f2를 누르면 자동으로 위치가 순차적으로 기록되며 f4를 누르면 위치종료를 끝내고 매크로를 실행하는 프로그램을 만들어보겠습니다. 키보드 후킹이 어떤건지 모른다면 아래 링크를 참조하세용 yhkim4504.tistory.com/2 파이썬 키보드 후킹을 통한 pyautogui 제어 개요 최근에 pyautogui를 통해서 자동으로 클릭하는 매크로 프로그램을 개발중이었는데 생각해보니 마우스가 파이썬으로 계속 제어되고 있는데 어떻게 중단하지? 라는 생각이 들었다. 맨 처음에 yhkim4504.tistory.com 후킹코드 import threading import keyboard import pyautogui from time import s..

파이썬 2021.02.24

Vision Transfromer (ViT) Pytorch 구현 코드 리뷰 - 3

github.com/FrancescoSaverioZuppichini/ViT FrancescoSaverioZuppichini/ViT Implementing Vi(sion)T(transformer). Contribute to FrancescoSaverioZuppichini/ViT development by creating an account on GitHub. github.com 위 코드를 참고하여 리뷰하였습니다. 개요 지난 글에서 patch embedding에 이어 multi head attention까지 진행하였고 이제는 VIT Encoder 구조를 구현해 보겠습니다. Residual Block class ResidualAdd(nn.Module): def __init__(self, fn): super()..

AI 2021.02.22