Bắt đầu ngayBắt đầu miễn phí

Phần trăm pixel thuộc về chó

Nhiệm vụ cuối cùng khi phân tích dữ liệu chú thích về chó là xác định phần trăm pixel trong mỗi ảnh thuộc về chó (một hoặc nhiều con). Bạn sẽ cần dùng các kỹ thuật đã học trong khóa này để tính toán thông tin đó và thêm vào dưới dạng các cột phục vụ phân tích sau này.

Để tính phần trăm pixel, trước hết hãy tính tổng số pixel đại diện cho mỗi con chó rồi cộng chúng lại cho cả ảnh. Bạn có thể tính hộp bao (bounding box) bằng công thức:

(Xend - Xstart) * (Yend - Ystart)

LƯU Ý: Trong trường hợp này bạn có thể bỏ qua khả năng các hộp bao chồng lấp nhau.

Với phần trăm, hãy lấy tổng số pixel "dog" chia cho tổng kích thước của ảnh, rồi nhân với 100.
DataFrame joined_df vẫn giống như lần bạn dùng gần nhất. pyspark.sql.functions được đặt bí danh là F.

Bài tập này là một phần của khóa học

Làm sạch dữ liệu với PySpark

Xem khóa học

Hướng dẫn bài tập

  • Định nghĩa một hàm Python nhận vào danh sách các tuple (các đối tượng chó) và tính tổng số pixel "dog" cho mỗi ảnh.
  • Tạo một UDF từ hàm này và dùng nó để tạo cột mới tên 'dog_pixels' trên DataFrame.
  • Tạo thêm cột 'dog_percent', biểu diễn phần trăm 'dog_pixels' trong ảnh. Đảm bảo giá trị nằm trong khoảng 0–100%. Chỉ dùng tên chuỗi của cột (ví dụ, "columnname" thay vì df.columnname).
  • Hiển thị 10 hàng đầu tiên có hơn 60% 'dog_pixels' trong ảnh. Hãy dùng chuỗi kiểu SQL cho điều kiện này (ví dụ, 'columnname > ____').

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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
____
Chỉnh sửa và Chạy Mã