Numpy 슬라이스를 사용한 효율적인 이미지 자르기
Numpy 슬라이스를 사용하여 이미지 자르기에 대한 최적화된 접근 방식을 찾다가 한 사용자가 스트라이드의 타당성에 의문을 제기했습니다. 단일 패스에서 무작위 자르기를 생성하는 기반 방법.
스트라이드 기반 패치 추출
응답에서는 np.lib.stride_tricks.as_strided 또는 scikit-image의 view_as_windows 활용을 제안합니다. 입력 배열의 슬라이딩 윈도우 보기를 생성합니다. 이 방법은 추가 오버헤드를 발생시키지 않고 메모리 효율성을 유지합니다.
View_as_Windows 설명
view_as_windows를 사용하면 사용자가 window_shape 인수를 지정할 수 있으며, 이는 창의 각 차원에 따른 슬라이딩 창 크기를 나타냅니다. 입력 배열. 슬라이싱용이 아닌 축은 값 1을 받습니다. 슬라이싱 후 결과 배열에는 이 1 값에 해당하는 싱글톤 차원(길이 1)이 있는 뷰가 포함됩니다.
해결책
제안된 솔루션은 view_as_windows를 활용하여 슬라이딩 창을 추출한 다음 무작위로 생성된 오프셋을 기반으로 이러한 창에 인덱싱하는 것입니다.
<code class="python"># Get sliding windows w = view_as_windows(X, (1, 16, 16, 1))[..., 0, :, :, 0] # Index and get specific windows out = w[np.arange(X.shape[0]), x, y] # Reshape to match loopy code format (optional) out = out.transpose(0, 2, 3, 1)</code>
이 접근 방식을 사용하면 각 이미지에 대해 고유한 무작위 오프셋을 사용하여 이미지를 효율적으로 자를 수 있으므로 for 루프입니다.
위 내용은 효율적인 무작위 이미지 자르기에 Numpy 슬라이스를 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!