กำลังโหลดรูปภาพใน cloud ml

นี่คือรหัสหลักที่ทำงานบนเครื่อง CPU โดยจะโหลดรูปภาพและมาสก์ทั้งหมดจากโฟลเดอร์ ปรับขนาด และบันทึกเป็น 2 อาร์เรย์

from skimage.transform import resize as imresize
from skimage.io import imread


def create_data(dir_input, img_size):

    img_files = sorted(glob(dir_input + '/images/*.jpg'))
    mask_files = sorted(glob(dir_input + '/masks/*.png'))

    X = []
    Y = []

    for img_path, mask_path in zip(img_files, mask_files):

        img = imread(img_path)
        img = imresize(img, (img_size, img_size), mode='reflect', anti_aliasing=True)

        mask = imread(mask_path)
        mask = imresize(mask, (img_size, img_size), mode='reflect', anti_aliasing=True)

        X.append(img)
        Y.append(mask)



    path_x = dir_input + '/images-{}.npy'.format(img_size)
    path_y = dir_input + '/masks-{}.npy'.format(img_size)

    np.save(path_x, np.array(X))
    np.save(path_y, np.array(Y))


นี่คือลำดับชั้นพื้นที่เก็บข้อมูล gcloud

gs://my_bucket
|
|----inputs    
|      |----images/
|      |-----masks/
|   
|----outputs
|
|----trainer    


dir_input ควรเป็น gs://my_bucket/inputs

สิ่งนี้ไม่ทำงาน วิธีที่เหมาะสมในการโหลดรูปภาพจากเส้นทางนั้นบนคลาวด์และบันทึกอาร์เรย์จำนวนมากในโฟลเดอร์อินพุตคืออะไร

ควรใช้ skimage ซึ่งโหลดอยู่ใน setup.py


person elektricni    schedule 21.10.2018    source แหล่งที่มา


คำตอบ (1)


ไลบรารี Python ส่วนใหญ่ เช่น numpy ไม่รองรับการอ่านและเขียนไปยังที่เก็บอ็อบเจ็กต์ เช่น GCS หรือ S3 โดยกำเนิด มีตัวเลือกอยู่สองสามตัวเลือก:

  • คัดลอกข้อมูลไปยังดิสก์ในเครื่องก่อน (ดูคำตอบนี้)
  • ลองใช้ GCS python SDK (เอกสาร)
  • ใช้ไลบรารีอื่น เช่น FileIO abstraction ของ TensorFlow นี่คือโค้ดบางส่วนที่คล้ายกับสิ่งที่คุณพยายามทำ (อ่าน/เขียนอาร์เรย์ numpy)

อย่างหลังมีประโยชน์อย่างยิ่งหากคุณใช้ TensorFlow แต่ยังคงสามารถใช้งานได้แม้ว่าคุณจะใช้เฟรมเวิร์กอื่นก็ตาม

person rhaertel80    schedule 22.10.2018