본문 바로가기

728x90
반응형

Python

(83)
[Computer Vision] Trapped-ball Segmentation 👀 본 예제는 Window10의 VSCode, Python3.11.0로 작성되었습니다. Trapped-ball Segmentation은 주로 만화 프레임과 같은 이미지에서 의미 있는 영역을 추출하는데 효과적인 비지도 이미지 분할 기법이다. 이 방법은 이미지의 경계선에 의해 정의된 닫힌 지역을 식별하고 이를 통해 이미지 내에서 분할을 수행한다. 이 알고리즘은 형태학적 연산을 사용하여 큰 폐쇄된 지역을 식별하고, 각 지역에 대해 고유한 값을 채우는 방식으로 작동한다. 동작 순서흑백 또는 색상이 없는 스케치 이미지를 타깃으로 준비한다.형태학적 연산(Morphological Operations)을 수행(침식(Erosion), 팽창(Dilation)하여 각 영역의 경계를 잘 드러내도록 한다.비교적 넓은 영역을 ..
[Python] 연산 속도 올리기 - Numba 🐍 본 게시글은 Python 3.11.0 환경에서 작성되었습니다! Numba는 Python을 위한 Just-In-Time(JIT) 컴파일러로, 주로 수치 계산 및 과학적 컴퓨팅을 최적화하는 데 사용된다.Numpy와 함께 사용될 때 특히 강력하다. 특징JIT 컴파일 : 파이썬 코드를 실행 시간에 컴파일 하여 성능을 향상한다.Numpy 호환 : Numpy 배열과 많은 함수와 연산을 지원한다.GPU 지원 : NVIDIA GPU에서 CUDA를 사용하여 병렬 처리를 지원한다.간편한 사용 : 기존 Python 코드에 주석을 추가하는 방식으로 쉽게 사용할 수 있다. 장점성능 향상 : Python 코드를 C, Fortran과 유사한 속도로 실행 할 수 있게 한다.직관적인 인터페이스 : 코드를 최소한의 수정으로 사용할..
[Python] 병렬 처리 🐍 본 게시글은 Python 3.11.0 환경에서 작성되었습니다! 여러가지 작업을 처리해야 하는 경우 병렬 처리를 통해 훨씬 빠르게 처리할 수 있다.Multi-Processing4개의 작업을 순차적으로 처리해야 하는 경우, 멀티 프로세싱을 통해 병렬로 4개의 작업을 동시에 처리 할 수 있다.멀티 프로세싱은 메모리를 독립적으로 나누어 작업을 처리한다.자원을 독립적으로 점유하여 처리하기 때문에 안정적이다.개별적으로 자원을 점유하기 때문에 리소스 요구량이 크다. 한번에 처리할 수 있는 수는 CPU Core의 개수에 따라 다르다.import timefrom multiprocessing import Pooldef cpu_intensive_task(n): result = 0 for i in range(..
[Python] 연산 속도 올리기 - 프로파일링(Profiling) 🐍 본 게시글은 Python 3.11.0 환경에서 작성되었습니다! 프로파일링은 함수의 호출, 반환, 예외를 추적하고 각 함수 호출과 이벤트를 추적한다. 이를 통해 상대적으로 리소스를 많이 소비하는 부분(병목)을 찾아서 성능 개선에 집중 할 수 있다.import cProfileimport numpy as npdef find_max_python(numbers): max_value = numbers[0] for num in numbers: if num > max_value: max_value = num return max_value# 숫자가 포함된 리스트numbers = [np.random.randint(0,1000) for _ in range(1000000)..
[Python] 연산 속도 올리기 - 내장 함수 사용 🐍 본 게시글은 Python 3.11.0 환경에서 작성되었습니다! 연산 속도를 올리기 위해서 파이썬의 내장함수를 사용하여 개선할 수 있다. 예시 : 리스트 중복 제거 및 정렬import timeif __name__ == "__main__": # 중복된 숫자가 포함된 리스트 numbers = [5, 3, 8, 5, 2, 3, 9, 1, 2, 8, 7] start = time.time() # 1. 중복 제거 unique_numbers = [] for num in numbers: if num not in unique_numbers: unique_numbers.append(num) time.sleep(0.1) # 2. 정렬 (버블 정렬..

728x90
반응형