여러 Numpy 슬라이스를 사용한 효율적인 무작위 이미지 자르기
컬러 이미지를 나타내는 4D Numpy 배열이 주어지면 목표는 무작위를 효율적으로 선택하는 것입니다. 각 이미지에 대해 고유한 자르기 위치를 사용하여 각 이미지를 16x16으로 자릅니다.
for 루프를 사용하는 순진한 접근 방식은 불필요한 메모리 오버헤드와 계산을 발생시킵니다. 이 프로세스를 최적화하기 위해 np.lib.stride_tricks.as_strided 메서드 또는 scikit-image의 view_as_windows 함수를 활용합니다.
view_as_windows 사용
view_as_windows 함수는 겹치는 창을 만듭니다. 입력 배열 내에서 추가 메모리 할당 없이 원본 데이터에 대한 뷰를 효과적으로 생성합니다. (1, 16, 16, 1)의 창 모양을 지정하여 단계 크기가 1인 두 번째 및 세 번째 축(너비 및 높이)을 따라 슬라이딩 창을 만듭니다.
특정 창을 인덱싱하려면 다음을 기준으로 합니다. 무작위 오프셋 쌍(x, y)에 대해 다음 단계를 사용합니다.
이 방법은 다양한 오프셋으로 여러 이미지를 자르는 효율적인 접근 방식을 제공하여 메모리 오버헤드를 줄입니다. 및 반복 접근 방식과 비교한 계산 시간.
위 내용은 Numpy 슬라이스를 사용하여 여러 이미지에서 무작위 16x16 패치를 효율적으로 자르는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!