임의 이미지 자르기를 위한 효율적인 Numpy 슬라이싱
여러 색상 이미지를 나타내는 4D Numpy 배열에서 임의의 16x16 패치를 효율적으로 자르려면(여기서 첫 번째 차원은 이미지 수이고 두 번째와 세 번째는 너비와 높이가 동일함) 스트라이드 기반 접근 방식을 활용할 수 있습니다.
np.lib.stride_tricks.as_strided 또는 scikit- 활용 이미지의 view_as_windows
이러한 메서드는 입력 배열에 대한 보기로 슬라이딩 창을 생성하여 메모리 오버헤드를 줄입니다. Scikit-image의 view_as_windows는 창 모양을 입력 배열의 크기에 해당하는 요소가 있는 튜플로 지정하여 설정을 단순화합니다. 슬라이딩 축에는 창 길이가 할당되고 다른 축은 1로 설정됩니다.
코드 예
<code class="python"># Import scikit-image for view_as_windows from skimage.util.shape import view_as_windows # Get sliding windows w = view_as_windows(X, (1,16,16,1))[...,0,:,:,0] # Generate random per-image offsets x = np.random.randint(0,12,X.shape[0]) y = np.random.randint(0,12,X.shape[0]) # Index and extract specific windows out = w[np.arange(X.shape[0]),x,y] # Reformat if necessary out = out.transpose(0,2,3,1)</code>
이 코드는 4개의 무작위(x_offset, y_offset) 쌍을 생성합니다. 그리고 최소한의 메모리 오버헤드로 주어진 매개변수 내에서 무작위 16x16 패치 4개를 추출합니다.
위 내용은 스트라이드 기반 슬라이싱을 사용하여 4D Numpy 배열에서 무작위 이미지 패치를 효율적으로 자르는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!