> 백엔드 개발 > 파이썬 튜토리얼 > 스트라이드 기반 슬라이싱을 사용하여 4D Numpy 배열에서 무작위 이미지 패치를 효율적으로 자르는 방법은 무엇입니까?

스트라이드 기반 슬라이싱을 사용하여 4D Numpy 배열에서 무작위 이미지 패치를 효율적으로 자르는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-03 14:05:03
원래의
309명이 탐색했습니다.

How to Efficiently Crop Random Image Patches from a 4D Numpy Array using Strided-Based Slicing?

임의 이미지 자르기를 위한 효율적인 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿