>  기사  >  백엔드 개발  >  효율적인 무작위 이미지 자르기에 Numpy 슬라이스를 사용할 수 있습니까?

효율적인 무작위 이미지 자르기에 Numpy 슬라이스를 사용할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-03 21:02:03324검색

Can Numpy Slices Be Used for Efficient Random Image Cropping?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.