파이썬 13

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

보통 순열이나 조합을 구현할 때는 재귀함수를 이용한 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

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

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

github.com/FrancescoSaverioZuppichini/ViT FrancescoSaverioZuppichini/ViT Implementing Vi(sion)T(transformer). Contribute to FrancescoSaverioZuppichini/ViT development by creating an account on GitHub. github.com 위 코드를 참고하여 리뷰했습니다. 개요 패치임베딩까지 진행하였고 이번에는 Multi Head Attention을 진행해보도록 하겠습니다. MHA(Multi Head Attention) MHA는 위 그림과 같이 진행됩니다. VIT에서의 MHA는 QKV가 같은 텐서로 입력됩니다. 입력텐서는 3개의 Linear Projection을 통해..

AI 2021.02.22

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

개요 이미지를 패치들로 나누어 Transformer Encoder에 적용한 Vision Transformer의 구현코드 리뷰입니다. github.com/FrancescoSaverioZuppichini/ViT FrancescoSaverioZuppichini/ViT Implementing Vi(sion)T(transformer). Contribute to FrancescoSaverioZuppichini/ViT development by creating an account on GitHub. github.com 위 원본링크에 쉽고 자세하게 구현되어 있으나 공부목적으로 작성된 코드 리뷰입니다. 위 코드저자는 Einstein Notation 라이브러리들을 사용하여 각종 텐서계산을 구현하고 있습니다. 이러한 Ein..

AI 2021.02.19