PPM sang jpg python
Xem các phiên từ Hội nghị chuyên đề WiML về các mô hình khuếch tán với KerasCV, ML trên thiết bị, v.v. Xem theo yêu cầu Show
Tạo các lô dữ liệu hình ảnh tensor với tính năng tăng cường dữ liệu theo thời gian thực Xem bí danhBí danh tương thích để di chuyển Xem Hướng dẫn di chuyển để biết thêm chi tiết 2
Được sử dụng trong sổ ghi chépĐược sử dụng trong hướng dẫn
3 không được khuyến nghị cho mã mới. Thích tải hình ảnh bằng 4 và biến đổi đầu ra 5 bằng các lớp tiền xử lý. Để biết thêm thông tin, hãy xem hướng dẫn tải hình ảnh và tăng cường hình ảnh, cũng như hướng dẫn lớp tiền xử lý. Dữ liệu sẽ được lặp lại (theo lô)
1 - Với 2 giá trị có thể là số nguyên 8, giống như với 4, trong khi với 5 giá trị có thể là số float trong khoảng [-1. 0, +1. 0)lập luận 6Boolean. Đặt giá trị trung bình đầu vào thành 0 trên tập dữ liệu, theo tính năng. 7Boolean. Đặt giá trị trung bình của từng mẫu thành 0. 8Boolean. Chia đầu vào cho tiêu chuẩn của tập dữ liệu, tính năng khôn ngoan. 9Boolean. Chia mỗi đầu vào cho tiêu chuẩn của nó. 90epsilon để làm trắng ZCA. Mặc định là 1e-6. 91Boolean. Thoa ZCA làm trắng. 92Int. Phạm vi độ cho phép quay ngẫu nhiên. 93Float, dạng mảng 1-D hoặc int 94Float, dạng mảng 1-D hoặc int 95Tuple hoặc danh sách hai số float. Phạm vi để chọn giá trị thay đổi độ sáng từ. 96Trôi. Cường độ cắt (Góc cắt theo hướng ngược chiều kim đồng hồ tính bằng độ) 97Nổi hoặc [dưới, trên]. Phạm vi thu phóng ngẫu nhiên. Nếu một chiếc phao, 98. 99Trôi. Phạm vi thay đổi kênh ngẫu nhiên. 90Một trong {"hằng số", "gần nhất", "phản chiếu" hoặc "quấn"}. Mặc định là 'gần nhất'. Các điểm bên ngoài ranh giới của đầu vào được điền theo chế độ đã cho
91Float hoặc Int. Giá trị được sử dụng cho các điểm bên ngoài ranh giới khi 92. 93Boolean. Lật ngẫu nhiên đầu vào theo chiều ngang. 94Boolean. Lật ngẫu nhiên đầu vào theo chiều dọc. 95yếu tố thay đổi tỷ lệ. Mặc định là Không có. Nếu Không có hoặc 0, thì không áp dụng thay đổi tỷ lệ, nếu không, chúng tôi nhân dữ liệu với giá trị được cung cấp (sau khi áp dụng tất cả các phép biến đổi khác). 96chức năng sẽ được áp dụng trên mỗi đầu vào. Chức năng sẽ chạy sau khi hình ảnh được thay đổi kích thước và tăng cường. Hàm sẽ nhận một đối số. một hình ảnh (tenxơ Numpy có hạng 3) và sẽ xuất ra một tenxơ Numpy có cùng hình dạng. 97Định dạng dữ liệu hình ảnh, "channels_first" hoặc "channels_last". Chế độ "channels_last" có nghĩa là hình ảnh phải có hình dạng 98, chế độ "channels_first" có nghĩa là hình ảnh phải có hình dạng 99. Nó mặc định là giá trị 90 được tìm thấy trong tệp cấu hình Keras của bạn tại 91. Nếu bạn chưa bao giờ đặt nó, thì nó sẽ là "channels_last". 92Trôi. Tỷ lệ hình ảnh được dành riêng để xác thực (hoàn toàn từ 0 đến 1). 93Dtype để sử dụng cho các mảng được tạotăng 94Nếu giá trị của đối số, 97 khác với 96 hoặc 97. 94Nếu giá trị của đối số, 92 > 1 hoặc 92 < 0ví dụVí dụ về việc sử dụng 01
Ví dụ về việc sử dụng 02
Ví dụ về chuyển đổi hình ảnh và mặt nạ cùng nhau 9phương pháp(x_train, y_train), (x_test, y_test) = cifar10.load_data() y_train = utils.to_categorical(y_train, num_classes) y_test = utils.to_categorical(y_test, num_classes) datagen = ImageDataGenerator( featurewise_center=True, featurewise_std_normalization=True, rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=True, validation_split=0.2) # compute quantities required for featurewise normalization # (std, mean, and principal components if ZCA whitening is applied) datagen.fit(x_train) # fits the model on batches with real-time data augmentation: model.fit(datagen.flow(x_train, y_train, batch_size=32, subset='training'), validation_data=datagen.flow(x_train, y_train, batch_size=8, subset='validation'), steps_per_epoch=len(x_train) / 32, epochs=epochs) # here's a more "manual" example for e in range(epochs): print('Epoch', e) batches = 0 for x_batch, y_batch in datagen.flow(x_train, y_train, batch_size=32): model.fit(x_batch, y_batch) batches += 1 if batches >= len(x_train) / 32: # we need to break the loop by hand because # the generator loops indefinitely break 03Xem nguồn 9Áp dụng phép biến đổi cho hình ảnh theo các tham số đã cho
35Từ điển với chuỗi - cặp tham số mô tả phép biến đổi. Hiện tại, các thông số sau từ từ điển được sử dụng. ReturnsMột phiên bản đã chuyển đổi của đầu vào (cùng hình dạng)(x_train, y_train), (x_test, y_test) = cifar10.load_data() y_train = utils.to_categorical(y_train, num_classes) y_test = utils.to_categorical(y_test, num_classes) datagen = ImageDataGenerator( featurewise_center=True, featurewise_std_normalization=True, rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=True, validation_split=0.2) # compute quantities required for featurewise normalization # (std, mean, and principal components if ZCA whitening is applied) datagen.fit(x_train) # fits the model on batches with real-time data augmentation: model.fit(datagen.flow(x_train, y_train, batch_size=32, subset='training'), validation_data=datagen.flow(x_train, y_train, batch_size=8, subset='validation'), steps_per_epoch=len(x_train) / 32, epochs=epochs) # here's a more "manual" example for e in range(epochs): print('Epoch', e) batches = 0 for x_batch, y_batch in datagen.flow(x_train, y_train, batch_size=32): model.fit(x_batch, y_batch) batches += 1 if batches >= len(x_train) / 32: # we need to break the loop by hand because # the generator loops indefinitely break 36Xem nguồn 9Khớp trình tạo dữ liệu với một số dữ liệu mẫu Điều này tính toán các số liệu thống kê dữ liệu nội bộ liên quan đến các phép biến đổi phụ thuộc vào dữ liệu, dựa trên một mảng dữ liệu mẫu Chỉ bắt buộc nếu 6 hoặc 8 hoặc 91 được đặt thành TrueKhi 95 được đặt thành một giá trị, việc thay đổi kích thước được áp dụng cho dữ liệu mẫu trước khi tính toán thống kê dữ liệu nội bộArgs____634Dữ liệu mẫu. Nên có hạng 4. Trong trường hợp dữ liệu thang độ xám, trục kênh phải có giá trị 1, trong trường hợp dữ liệu RGB, nó phải có giá trị 3 và trong trường hợp dữ liệu RGBA, nó phải có giá trị 4. 62Boolean (mặc định. Sai). Có phù hợp với các mẫu tăng ngẫu nhiên hay không. 63Int (mặc định. 1). Nếu sử dụng gia tăng dữ liệu ( 64), đây là số lượng gia tăng vượt qua dữ liệu để sử dụng. 65Int (mặc định. Không có). Hạt giống ngẫu nhiên(x_train, y_train), (x_test, y_test) = cifar10.load_data() y_train = utils.to_categorical(y_train, num_classes) y_test = utils.to_categorical(y_test, num_classes) datagen = ImageDataGenerator( featurewise_center=True, featurewise_std_normalization=True, rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=True, validation_split=0.2) # compute quantities required for featurewise normalization # (std, mean, and principal components if ZCA whitening is applied) datagen.fit(x_train) # fits the model on batches with real-time data augmentation: model.fit(datagen.flow(x_train, y_train, batch_size=32, subset='training'), validation_data=datagen.flow(x_train, y_train, batch_size=8, subset='validation'), steps_per_epoch=len(x_train) / 32, epochs=epochs) # here's a more "manual" example for e in range(epochs): print('Epoch', e) batches = 0 for x_batch, y_batch in datagen.flow(x_train, y_train, batch_size=32): model.fit(x_batch, y_batch) batches += 1 if batches >= len(x_train) / 32: # we need to break the loop by hand because # the generator loops indefinitely break 66Xem nguồn 0Lấy mảng dữ liệu và nhãn, tạo ra các lô dữ liệu tăng cường Args____634Dữ liệu đầu vào. Mảng Numpy hạng 4 hoặc một bộ. Nếu là bộ, phần tử đầu tiên phải chứa hình ảnh và phần tử thứ hai là một mảng có nhiều mảng khác hoặc danh sách các mảng có nhiều mảng được chuyển đến đầu ra mà không có bất kỳ sửa đổi nào. Có thể được sử dụng để cung cấp dữ liệu linh tinh cho mô hình cùng với hình ảnh. Trong trường hợp dữ liệu thang độ xám, trục kênh của mảng hình ảnh phải có giá trị 1, trong trường hợp dữ liệu RGB, nó phải có giá trị 3 và trong trường hợp dữ liệu RGBA, nó phải có giá trị 4. 68Nhãn. 69Int (mặc định. 32). 50Boolean (mặc định. Thật). 51Trọng lượng mẫu. 65Int (mặc định. Không có). 53Không có hoặc str (mặc định. Không có). Điều này cho phép bạn tùy chọn chỉ định một thư mục để lưu các hình ảnh tăng cường được tạo (hữu ích để hình dung những gì bạn đang làm). 54Str (mặc định. 55). Tiền tố để sử dụng cho tên tệp của ảnh đã lưu (chỉ liên quan nếu đặt ____ 53). 57một trong số "png", "jpeg", "bmp", "pdf", "ppm", "gif", "tif", "jpg" (chỉ liên quan nếu đặt 53). Mặc định. "png". 59Boolean (mặc định. Sai), bỏ qua sự khác biệt về số lượng lớp trong nhãn trong quá trình đào tạo và phân tách xác thực (hữu ích cho các tác vụ không phân loại) 00Tập dữ liệu con ( 01 hoặc 02) nếu 92 được đặt trong 04. ReturnsAn 05 mang lại các bộ dữ liệu của 06 trong đó 34 là một mảng dữ liệu hình ảnh có nhiều mảng (trong trường hợp đầu vào là một hình ảnh) hoặc một danh sách các mảng có nhiều mảng (trong trường hợp có thêm đầu vào) và 68 là một mảng có nhiều nhãn tương ứng. Nếu 'sample_weight' không phải là Không có, các bộ dữ liệu được tạo ra có dạng 09. Nếu 68 là Không, chỉ có mảng numpy 34 được trả về. Tăng 94Nếu Giá trị của đối số, 00 không phải là "đào tạo" hoặc "xác thực"(x_train, y_train), (x_test, y_test) = cifar10.load_data() y_train = utils.to_categorical(y_train, num_classes) y_test = utils.to_categorical(y_test, num_classes) datagen = ImageDataGenerator( featurewise_center=True, featurewise_std_normalization=True, rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=True, validation_split=0.2) # compute quantities required for featurewise normalization # (std, mean, and principal components if ZCA whitening is applied) datagen.fit(x_train) # fits the model on batches with real-time data augmentation: model.fit(datagen.flow(x_train, y_train, batch_size=32, subset='training'), validation_data=datagen.flow(x_train, y_train, batch_size=8, subset='validation'), steps_per_epoch=len(x_train) / 32, epochs=epochs) # here's a more "manual" example for e in range(epochs): print('Epoch', e) batches = 0 for x_batch, y_batch in datagen.flow(x_train, y_train, batch_size=32): model.fit(x_batch, y_batch) batches += 1 if batches >= len(x_train) / 32: # we need to break the loop by hand because # the generator loops indefinitely break 14Xem nguồn 3Lấy khung dữ liệu và đường dẫn đến một thư mục + tạo các đợt Các lô được tạo chứa dữ liệu tăng cường/chuẩn hóa **Có thể tìm thấy hướng dẫn đơn giản **tại đây
19. Mảng 1D numpy của nhãn nhị phân, 16. Mảng 2D gọn gàng của các nhãn được mã hóa một chiều. Hỗ trợ đầu ra đa nhãn 27. hình ảnh giống hệt với hình ảnh đầu vào (chủ yếu được sử dụng để hoạt động với bộ mã hóa tự động), 24. danh sách với các giá trị của các cột khác nhau, 23. mảng có nhiều giá trị trong (các) cột 17, 20. Mảng numpy 1D gồm các nhãn số nguyên, 28, không có mục tiêu nào được trả về (trình tạo sẽ chỉ tạo ra các lô dữ liệu hình ảnh, rất hữu ích khi sử dụng trong 37) 38Pandas dataframe chứa filepath liên quan đến 39 (hoặc đường dẫn tuyệt đối nếu 39 là Không có) của hình ảnh trong cột chuỗi. Nó nên bao gồm các cột khác tùy thuộc vào 15. 39string, đường dẫn đến thư mục để đọc ảnh từ. Nếu 28, dữ liệu trong cột 44 phải là đường dẫn tuyệt đối. Chuỗi 44, cột trong 38 chứa tên tệp (hoặc đường dẫn tuyệt đối nếu 39 là 28). 17chuỗi hoặc danh sách, cột/s trong 38 có dữ liệu đích. 51chuỗi, cột trong 38 chứa trọng lượng mẫu. Mặc định. 28. 54bộ số nguyên 55, mặc định. 56. Kích thước mà tất cả các hình ảnh được tìm thấy sẽ được thay đổi kích thước. 57một trong "thang độ xám", "rgb", "rgba". Mặc định. "rgb". Liệu hình ảnh sẽ được chuyển đổi để có 1 hoặc 3 kênh màu. 58danh sách các lớp tùy chọn (e. g. 59). Mặc định là Không có. Nếu không được cung cấp, danh sách các lớp sẽ được tự động suy ra từ 17, danh sách này sẽ ánh xạ tới các chỉ số nhãn, sẽ ở dạng chữ và số). Có thể lấy từ điển chứa ánh xạ từ tên lớp sang chỉ mục lớp thông qua thuộc tính 61. 15một trong số "nhị phân", "phân loại", "đầu vào", "đa đầu ra", "thô", thưa thớt" hoặc Không có. Mặc định. "phân loại". Chế độ mang lại các mục tiêu. 69kích thước của lô dữ liệu (mặc định. 32). 50có xáo trộn dữ liệu hay không (mặc định. Đúng) ______765hạt giống ngẫu nhiên tùy chọn để xáo trộn và biến đổi. 53Không có hoặc str (mặc định. Không có). Điều này cho phép bạn tùy chọn chỉ định một thư mục để lưu các hình ảnh tăng cường được tạo (hữu ích để hình dung những gì bạn đang làm). 54str. Tiền tố để sử dụng cho tên tệp của ảnh đã lưu (chỉ liên quan nếu đặt ____ 53). 57một trong số "png", "jpeg", "bmp", "pdf", "ppm", "gif", "tif", "jpg" (chỉ liên quan nếu đặt 53). Mặc định. "png". 00Tập dữ liệu con ( 01 hoặc 02) nếu 92 được đặt trong 04. 76Phương pháp nội suy được sử dụng để lấy mẫu lại hình ảnh nếu kích thước mục tiêu khác với kích thước của hình ảnh được tải. Các phương pháp được hỗ trợ là 77, 78 và 79. Nếu PIL phiên bản 1. 1. 3 hoặc mới hơn được cài đặt, 80 cũng được hỗ trợ. Nếu PIL phiên bản 3. 4. 0 hoặc mới hơn được cài đặt, 81 và 82 cũng được hỗ trợ. Theo mặc định, 77 được sử dụng. 84Boolean, có xác thực tên tệp hình ảnh trong 44 hay không. Nếu 86, hình ảnh không hợp lệ sẽ bị bỏ qua. Vô hiệu hóa tùy chọn này có thể dẫn đến tăng tốc khi thực hiện chức năng này. Mặc định là 86. 88 lập luận kế thừa để đưa ra cảnh báo không dùng nữa. ReturnsA 89 mang lại các bộ dữ liệu của 06 trong đó 34 là một mảng khó hiểu chứa một loạt hình ảnh có hình dạng 92 và 68 là một mảng khó hiểu của các nhãn tương ứng(x_train, y_train), (x_test, y_test) = cifar10.load_data() y_train = utils.to_categorical(y_train, num_classes) y_test = utils.to_categorical(y_test, num_classes) datagen = ImageDataGenerator( featurewise_center=True, featurewise_std_normalization=True, rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=True, validation_split=0.2) # compute quantities required for featurewise normalization # (std, mean, and principal components if ZCA whitening is applied) datagen.fit(x_train) # fits the model on batches with real-time data augmentation: model.fit(datagen.flow(x_train, y_train, batch_size=32, subset='training'), validation_data=datagen.flow(x_train, y_train, batch_size=8, subset='validation'), steps_per_epoch=len(x_train) / 32, epochs=epochs) # here's a more "manual" example for e in range(epochs): print('Epoch', e) batches = 0 for x_batch, y_batch in datagen.flow(x_train, y_train, batch_size=32): model.fit(x_batch, y_batch) batches += 1 if batches >= len(x_train) / 32: # we need to break the loop by hand because # the generator loops indefinitely break 94Xem nguồn 6Đưa đường dẫn đến một thư mục và tạo ra các lô dữ liệu tăng cường
54Tuple số nguyên 55, mặc định là 56. Kích thước mà tất cả các hình ảnh được tìm thấy sẽ được thay đổi kích thước. 57Một trong số "thang độ xám", "rgb", "rgba". Mặc định. "rgb". Hình ảnh sẽ được chuyển đổi thành 1, 3 hay 4 kênh. 58Danh sách tùy chọn của thư mục con lớp (e. g. 59). Mặc định. Không có. Nếu không được cung cấp, danh sách các lớp sẽ được tự động suy ra từ tên/cấu trúc thư mục con trong 39, trong đó mỗi thư mục con sẽ được coi là một lớp khác nhau (và thứ tự của các lớp, sẽ ánh xạ tới các chỉ số nhãn, sẽ là chữ và số . Từ điển chứa ánh xạ từ tên lớp đến chỉ mục lớp có thể được lấy thông qua thuộc tính 61. 15Một trong số "phân loại", "nhị phân", "thưa thớt", "đầu vào" hoặc Không có. Mặc định. "phân loại". Xác định loại mảng nhãn được trả về. 69Kích thước lô dữ liệu (mặc định. 32). 50Có xáo trộn dữ liệu hay không (mặc định. Đúng) Nếu được đặt thành Sai, hãy sắp xếp dữ liệu theo thứ tự chữ và số. 65Hạt giống ngẫu nhiên tùy chọn để xáo trộn và biến đổi. 53Không có hoặc str (mặc định. Không có). Điều này cho phép bạn tùy chọn chỉ định một thư mục để lưu các hình ảnh tăng cường được tạo (hữu ích để hình dung những gì bạn đang làm). 54Str. Tiền tố để sử dụng cho tên tệp của ảnh đã lưu (chỉ liên quan nếu đặt ____ 53). 57một trong số "png", "jpeg", "bmp", "pdf", "ppm", "gif", "tif", "jpg" (chỉ liên quan nếu đặt 53). Mặc định. "png". 15Liệu có nên theo các liên kết tượng trưng bên trong các thư mục con của lớp hay không (mặc định. Sai). 00Tập dữ liệu con ( 01 hoặc 02) nếu 92 được đặt trong 04. 76Phương pháp nội suy được sử dụng để lấy mẫu lại hình ảnh nếu kích thước mục tiêu khác với kích thước của hình ảnh được tải. Các phương pháp được hỗ trợ là 77, 78 và 79. Nếu PIL phiên bản 1. 1. 3 hoặc mới hơn được cài đặt, 80 cũng được hỗ trợ. Nếu PIL phiên bản 3. 4. 0 hoặc mới hơn được cài đặt, 81 và 82 cũng được hỗ trợ. Theo mặc định, 77 được sử dụng. 29Boolean, có nên thay đổi kích thước hình ảnh thành kích thước mục tiêu mà không bị biến dạng tỷ lệ khung hình hay không. Hình ảnh được cắt ở giữa với tỷ lệ khung hình mục tiêu trước khi thay đổi kích thước. ReturnsA 30 mang lại các bộ dữ liệu của 06 trong đó 34 là một mảng khó hiểu chứa một loạt hình ảnh có hình dạng 92 và 68 là một mảng khó hiểu của các nhãn tương ứngtrain_datagen = ImageDataGenerator( rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True) test_datagen = ImageDataGenerator(rescale=1./255) train_generator = train_datagen.flow_from_directory( 'data/train', target_size=(150, 150), batch_size=32, class_mode='binary') validation_generator = test_datagen.flow_from_directory( 'data/validation', target_size=(150, 150), batch_size=32, class_mode='binary') model.fit( train_generator, steps_per_epoch=2000, epochs=50, validation_data=validation_generator, validation_steps=800) 35Xem nguồn 5Tạo các tham số ngẫu nhiên cho một chuyển đổi Args 36Tuple số nguyên. Hình dạng của hình ảnh được biến đổi. 65Hạt giống ngẫu nhiên. ReturnsMột từ điển chứa các tham số được chọn ngẫu nhiên mô tả quá trình chuyển đổitrain_datagen = ImageDataGenerator( rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True) test_datagen = ImageDataGenerator(rescale=1./255) train_generator = train_datagen.flow_from_directory( 'data/train', target_size=(150, 150), batch_size=32, class_mode='binary') validation_generator = test_datagen.flow_from_directory( 'data/validation', target_size=(150, 150), batch_size=32, class_mode='binary') model.fit( train_generator, steps_per_epoch=2000, epochs=50, validation_data=validation_generator, validation_steps=800) 38Xem nguồn 0Áp dụng phép biến đổi ngẫu nhiên cho hình ảnh Tenxơ Args____6343D, hình ảnh đơn. 65Hạt giống ngẫu nhiên. ReturnsMột phiên bản được biến đổi ngẫu nhiên của đầu vào (cùng hình dạng)train_datagen = ImageDataGenerator( rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True) test_datagen = ImageDataGenerator(rescale=1./255) train_generator = train_datagen.flow_from_directory( 'data/train', target_size=(150, 150), batch_size=32, class_mode='binary') validation_generator = test_datagen.flow_from_directory( 'data/validation', target_size=(150, 150), batch_size=32, class_mode='binary') model.fit( train_generator, steps_per_epoch=2000, epochs=50, validation_data=validation_generator, validation_steps=800) 41Xem nguồn 1Áp dụng cấu hình chuẩn hóa tại chỗ cho một lô đầu vào 34 được thay đổi tại chỗ vì chức năng này chủ yếu được sử dụng nội bộ để chuẩn hóa hình ảnh và cung cấp chúng cho mạng của bạn. Nếu một bản sao của 34 sẽ được tạo thay vào đó thì nó sẽ có chi phí hiệu suất đáng kể. Nếu bạn muốn áp dụng phương pháp này mà không thay đổi đầu vào tại chỗ, bạn có thể gọi phương thức tạo bản sao trước
Làm cách nào để chuyển đổi sang jpg trăn?Thuật toán. . Nhập mô-đun Hình ảnh từ PIL và nhập mô-đun os Nhập hình ảnh sẽ được chuyển đổi bằng Image. . Hiển thị kích thước của hình ảnh trước khi chuyển đổi bằng hệ điều hành. . Chuyển đổi hình ảnh bằng Image. . Xuất hình ảnh bằng Image. . Hiển thị kích thước của hình ảnh sau khi chuyển đổi bằng hệ điều hành ppm trong Python là gì?Định dạng hình ảnh chúng tôi sẽ sử dụng được gọi là PPM, viết tắt của Định dạng Pixmap di động . |