Python 4

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

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

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

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

파이썬 키보드 후킹을 통한 pyautogui 제어

개요 최근에 pyautogui를 통해서 자동으로 클릭하는 매크로 프로그램을 개발중이었는데 생각해보니 마우스가 파이썬으로 계속 제어되고 있는데 어떻게 중단하지? 라는 생각이 들었습니다. 처음에는 그냥 sys의 stdin같은걸 사용해서 제어하려 했지만 몇번 해본결과 안된다는걸 확인하였고 다른 창에서도 제어할 수 있도록하는 키보드 후킹을 사용하여야 했습니다. 결론적으로는 keyboard 라이브러리를 사용하여 백쓰레드에서 계속 후킹해주는 방법으로 간단하게 해결을 했습니다. keyboard Library https://github.com/boppreh/keyboard boppreh/keyboard Hook and simulate global keyboard events on Windows and Linux. - ..

파이썬 2021.02.16