개 픽셀 비율
개 주석 데이터를 파싱하는 마지막 단계는 각 이미지에서 개(들)을 나타내는 픽셀의 비율을 구하는 것입니다. 이 정보를 계산하고 나중에 분석할 수 있도록 컬럼으로 추가하려면, 이 강의에서 배운 다양한 기법을 활용하셔야 해요.
픽셀 비율을 계산하려면, 먼저 각 개를 나타내는 총 픽셀 수를 계산한 다음 이미지 단위로 합산하세요. 바운딩 박스는 다음 공식으로 계산할 수 있어요:
(Xend - Xstart) * (Yend - Ystart)
참고: 이 경우에는 바운딩 박스가 서로 겹치는 가능성은 무시해도 됩니다.
비율은 전체 "dog" 픽셀 수를 이미지의 전체 크기로 나눈 뒤 100을 곱해 계산하세요.
joined_df DataFrame은 이전에 사용하던 그대로예요. pyspark.sql.functions는 F로 별칭이 지정되어 있어요.
이 연습은 강의의 일부입니다
PySpark로 데이터 정제하기
연습 안내
- 파이썬 함수를 정의해 튜플의 리스트(개 객체들)를 입력으로 받아 이미지별 "dog" 픽셀의 총합을 계산하세요.
- 위 함수를 UDF로 만들어 DataFrame에
'dog_pixels'라는 새 컬럼을 생성하세요. - 이미지에서
'dog_pixels'의 비율을 나타내는 또 다른 컬럼'dog_percent'를 만드세요. 값이 0~100% 범위가 되도록 하세요. 컬럼 지정 시 문자열 컬럼명만 사용하세요(예: df.columnname이 아니라 "columnname"). - 이미지에서
'dog_pixels'가 60%를 초과하는 행을 SQL 스타일 문자열(예: 'columnname > ____')로 필터링해 처음 10개 행을 출력하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Calculate total pixels occupied by dogs in the image
def dogPixelCount(doglist):
totalpixels = ____
for dog in doglist:
totalpixels += (dog[____] - ____[1]) * (____[____] - ____)
return totalpixels
# Define a UDF for the pixel count
udfDogPixelCount = ____
# Add a new column 'dog_pixels' containing the pixel count for dogs in each image
joined_df = ____
# Add a column 'dog_percent' representing the percentage of the image occupied by dogs
joined_df = joined_df.____('dog_percent', (____ / (____)) * ____)
# Show the first 10 annotations with more than 60% dog
____