강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của suhyeonoh4999
suhyeonoh4999

câu hỏi đã được viết

Làm chủ tất tần tật về phát hiện bất thường bằng computer vision, từ phát triển đến triển khai

pands_udf và đăng ký thông tin meta hình ảnh

df 에서 바이너리 값 이미지로 안보이는 현상

Đã giải quyết

Viết

·

46

0

 

import io
from pyspark.sql.functions import pandas_udf, col
from pyspark.sql.types import BinaryType

IMAGE_SIZE = 256

@pandas_udf(BinaryType())
def resize_image_udf(df_series):
    
    def resize_image(path):
        """resize image and serialise back as jpeg"""
        image_path = path.replace("dbfs:", "")
        image = Image.open(image_path)
        width, height = image.size

        image = image.crop(((width-IMAGE_SIZE)/2, (height-IMAGE_SIZE)/2, (width+IMAGE_SIZE)/2, (height+IMAGE_SIZE)/2))
        image = image.resize((IMAGE_SIZE,IMAGE_SIZE), Image.NEAREST)
        output = io.BytesIO()
        image.save(output, format='JPEG')
        return output.getvalue()
    return df_series.apply(resize_image)

image_meta = {
    "spark.contentAnnotation": '{"mimeType":"image/jpeg"}'
}
df = ( 
      file_info_df.withColumn("image", resize_image_udf("path"))
      .withColumn('image', col('image').alias('image', metadata=image_meta))
)
display(df)

 

안녕하세요 이미지 바이너리칼럼에
메타 정보를 추가했음에도 불구하고 display 한값이 아래처럼 바이너리 상태로 보이는데
왜그런지 알수 있을까요?

databricks 무료버전 + jpg파일 databricks내에 카탈로그 볼륨에 저장해서 사용한게 다르긴 하지만 그거때문에 그러진 않을 것 같고
spark 4.0.0 사용하고 있습니다 ㅠ

image.png



python머신러닝딥러닝azure-databricks인공지능(ai)

Câu trả lời 1

0

nexthumans님의 프로필 이미지
nexthumans
Người chia sẻ kiến thức

안녕하세요, 열공 하시는 모습 너무 보기 좋습니다~^^

 

일단, metadata 적용에는 문제가 없습니다. spark 3.3+ 이면 메타데이터를 통해 display() 를 통해 df 의 이미지를 출력하는 것은 정상적으로 이루어져야 합니다.

 

일단, 두 가지를 의심해 볼 수 있겠네요.

1. path.replace("dbfs:", "") 부분이 문제가 있어 보이네요. /dbfs 가 데이터브릭스 볼륨의 기본 단위일텐데, 이것을 삭제한 것이 문제가 되는 지 체크해 보세요.

  1. from PIL import Image 호출이 안되어 있는데, 이 부분도 체크 한 번 해 보시구요.

이렇게 해서도 해결이 안된다면,

pandas_udf 로 만들기 전에 샘플 경로 하나를 가지고 정상적으로 작동하는 지 확인 후에 최종적으로 사용하면 udf로 만들어 사용한다면 아마 오류를 잡아낼 수 있지 않을까 생각합니다.

 

그럼 열공하세요!

Hình ảnh hồ sơ của suhyeonoh4999
suhyeonoh4999

câu hỏi đã được viết

Đặt câu hỏi