Tạo mặt nạ từ hộp giới hạn Python
Các hộp giới hạn là các hình chữ nhật đánh dấu các đối tượng trên một hình ảnh. Có nhiều định dạng của chú thích hộp giới hạn. Mỗi định dạng sử dụng biểu diễn cụ thể của tọa độ hộp giới hạn. Albumentations hỗ trợ bốn định dạng. 3, 4, 5 và 6 Show
Chúng ta hãy xem từng định dạng đó và cách chúng thể hiện tọa độ của các hộp giới hạn Ví dụ, chúng tôi sẽ sử dụng một hình ảnh từ bộ dữ liệu có tên Common Objects in Context. Nó chứa một hộp giới hạn đánh dấu một con mèo. Chiều rộng hình ảnh là 640 pixel và chiều cao của nó là 480 pixel. Chiều rộng của hộp giới hạn là 322 pixel và chiều cao của nó là 117 pixel Hộp giới hạn có tọa độ 7 sau đây của các góc của nó. trên cùng bên trái là 8 hoặc 9, trên cùng bên phải là 0 hoặc 1, dưới cùng bên trái là 2 hoặc 3, dưới cùng bên phải là 4 hoặc 5. Như bạn thấy, tọa độ của các góc của hộp giới hạn được tính tương ứng với góc trên cùng bên trái của hình ảnh có tọa độ 7 7Một hình ảnh ví dụ với hộp giới hạn từ bộ dữ liệu COCOpascal_voc¶ 3 là một định dạng được sử dụng bởi bộ dữ liệu Pascal VOC. Tọa độ của hộp giới hạn được mã hóa với bốn giá trị tính bằng pixel. 9. 70 và 71 là tọa độ của góc trên cùng bên trái của hộp giới hạn. 72 và 73 là tọa độ của góc dưới bên phải của hộp giới hạnTọa độ của hộp giới hạn ví dụ ở định dạng này là 74albumentations¶ 4 tương tự như 3, bởi vì nó cũng sử dụng bốn giá trị 9 để đại diện cho một hộp giới hạn. Nhưng không giống như 3, 4 sử dụng các giá trị chuẩn hóa. Để chuẩn hóa các giá trị, chúng tôi chia tọa độ theo pixel cho trục x và y theo chiều rộng và chiều cao của hình ảnhTọa độ của hộp giới hạn ví dụ ở định dạng này là 70 là 71Albumentations sử dụng định dạng này trong nội bộ để làm việc với các hộp giới hạn và tăng cường chúng dừa¶ 5 là định dạng được sử dụng bởi tập dữ liệu Đối tượng chung trong ngữ cảnh COCO . Trong 5, một hộp giới hạn được xác định bởi bốn giá trị tính bằng pixel 74. Chúng là tọa độ của góc trên cùng bên trái cùng với chiều rộng và chiều cao của hộp giới hạnTọa độ của hộp giới hạn ví dụ ở định dạng này là 75yolo¶Trong 6, một hộp giới hạn được biểu thị bằng bốn giá trị 77. 78 và 79 là tọa độ chuẩn hóa của tâm hộp giới hạn. Để làm cho tọa độ được chuẩn hóa, chúng tôi lấy các giá trị pixel của x và y, đánh dấu tâm của hộp giới hạn trên trục x và y. Sau đó, chúng tôi chia giá trị của x cho chiều rộng của hình ảnh và giá trị của y cho chiều cao của hình ảnh. 70 và 71 đại diện cho chiều rộng và chiều cao của hộp giới hạn. Chúng cũng được chuẩn hóaTọa độ của hộp giới hạn ví dụ ở định dạng này là 72 là 73Cách các định dạng khác nhau biểu thị tọa độ của hộp giới hạnMở rộng hộp giới hạn¶Cũng giống như tăng cường hình ảnh và mặt nạ, quá trình tăng cường các hộp giới hạn bao gồm 4 bước
Ghi chú Một số biến đổi trong Albumentation không hỗ trợ hộp giới hạn. Nếu bạn cố gắng sử dụng chúng, bạn sẽ nhận được một ngoại lệ. Vui lòng tham khảo bài viết này để kiểm tra xem một phép biến đổi có thể tăng thêm các hộp giới hạn hay không Bước 1. Nhập các thư viện cần thiết. ¶ 1Bước 2. Xác định một đường ống tăng cường. ¶Dưới đây là một ví dụ về khai báo tối thiểu của đường ống tăng cường hoạt động với các hộp giới hạn
Lưu ý rằng không giống như tăng cường hình ảnh và mặt nạ, 74 hiện có tham số bổ sung 75. Bạn cần truyền một thể hiện của 76 cho đối số đó. 76 chỉ định cài đặt để làm việc với các hộp giới hạn. 78 đặt định dạng cho tọa độ hộp giới hạnNó có thể là 3, 4, 5 hoặc 6. Giá trị này là bắt buộc vì Albumentation cần biết định dạng nguồn của tọa độ cho các hộp giới hạn để áp dụng các phần mở rộng một cách chính xácNgoài 78, 76 hỗ trợ thêm một số cài đặtĐây là một ví dụ về 74 hiển thị tất cả các cài đặt có sẵn với 76
transform = A.Compose([ A.RandomCrop(width=450, height=450), A.HorizontalFlip(p=0.5), A.RandomBrightnessContrast(p=0.2), ], bbox_params=A.BboxParams(format='coco')) 77 và transform = A.Compose([ A.RandomCrop(width=450, height=450), A.HorizontalFlip(p=0.5), A.RandomBrightnessContrast(p=0.2), ], bbox_params=A.BboxParams(format='coco')) 78¶Các tham số 77 và 78 kiểm soát những gì Albumentations nên thực hiện đối với các hộp giới hạn được tăng cường nếu kích thước của chúng đã thay đổi sau khi được tăng cường. Kích thước của hộp giới hạn có thể thay đổi nếu bạn áp dụng các phần mở rộng không gian, chẳng hạn như khi bạn cắt xén một phần của hình ảnh hoặc khi bạn thay đổi kích thước hình ảnh 77 là một giá trị tính bằng pixel. Nếu diện tích của hộp giới hạn sau khi mở rộng trở nên nhỏ hơn 77, Albumentations sẽ loại bỏ hộp đó. Vì vậy, danh sách các hộp giới hạn tăng cường được trả về sẽ không chứa hộp giới hạn đó 78 là một giá trị từ 0 đến 1. Nếu tỷ lệ diện tích hộp giới hạn sau khi tăng lên thành 44 trở nên nhỏ hơn 78, Albumentations sẽ loại bỏ hộp đó. Vì vậy, nếu quá trình gia tăng cắt hầu hết hộp giới hạn, thì hộp đó sẽ không có trong danh sách trả về của các hộp giới hạn tăng cườngĐây là một hình ảnh ví dụ có chứa hai hộp giới hạn. Các tọa độ hộp giới hạn được khai báo bằng định dạng 5Một hình ảnh ví dụ với hai hộp giới hạnĐầu tiên, chúng tôi áp dụng phần mở rộng 47 mà không khai báo các tham số 77 và 78. Hình ảnh tăng cường chứa hai hộp giới hạnMột hình ảnh ví dụ với hai hộp giới hạn sau khi áp dụng phần mở rộngTiếp theo, chúng tôi áp dụng tăng thêm 47 tương tự, nhưng bây giờ chúng tôi cũng sử dụng tham số 77. Bây giờ, hình ảnh được tăng cường chỉ chứa một hộp giới hạn, vì diện tích của hộp giới hạn kia sau khi tăng cường trở nên nhỏ hơn 77, vì vậy Albumentations đã bỏ hộp giới hạn đóCuối cùng, chúng tôi áp dụng phần mở rộng 47 với 78. Sau lần tăng cường đó, hình ảnh thu được không chứa bất kỳ hộp giới hạn nào, vì khả năng hiển thị của tất cả các hộp giới hạn sau khi tăng cường đều nằm dưới ngưỡng do 78 đặtHình ảnh ví dụ không có hộp giới hạn sau khi áp dụng phần mở rộng với 'min_visibility'Nhãn lớp cho hộp giới hạn¶Bên cạnh tọa độ, mỗi hộp giới hạn phải có nhãn lớp liên quan cho biết đối tượng nào nằm bên trong hộp giới hạn. Có hai cách để chuyển nhãn cho hộp giới hạn Giả sử bạn có một hình ảnh ví dụ với ba đối tượng. 76, 77 và 78. Các tọa độ hộp giới hạn ở định dạng 5 cho các đối tượng đó là 00, 01 và 02Một hình ảnh ví dụ với 3 hộp giới hạn từ bộ dữ liệu COCO1. Bạn có thể chuyển nhãn cùng với tọa độ hộp giới hạn bằng cách thêm chúng dưới dạng giá trị bổ sung vào danh sách tọa độ. ¶Đối với hình trên, các hộp giới hạn có nhãn lớp sẽ trở thành 03, 04 và 05Nhãn lớp có thể thuộc bất kỳ loại nào. số nguyên, chuỗi hoặc bất kỳ loại dữ liệu Python nào khác. Ví dụ: các giá trị số nguyên dưới dạng nhãn lớp sẽ trông như sau. 06, 07 và 08Ngoài ra, bạn có thể sử dụng nhiều giá trị lớp cho mỗi hộp giới hạn, ví dụ: 09, 00 và 012. Bạn có thể chuyển nhãn cho các hộp giới hạn dưới dạng danh sách riêng (cách ưu tiên). ¶Ví dụ: nếu bạn có ba hộp giới hạn như 00, 01 và 02, bạn có thể tạo một danh sách riêng với các giá trị như 05 hoặc 06 có chứa nhãn lớp cho các hộp giới hạn đó. Tiếp theo, bạn chuyển danh sách đó với nhãn lớp dưới dạng đối số riêng cho hàm 07. Albumentations cần biết tên của tất cả các danh sách có nhãn lớp để nối chúng với các hộp giới hạn tăng cường một cách chính xác. Sau đó, nếu một hộp giới hạn bị loại bỏ sau khi tăng cường vì nó không còn hiển thị nữa, Albumentations cũng sẽ loại bỏ nhãn lớp cho hộp đó. Sử dụng tham số 08 để đặt tên cho tất cả các đối số trong 07 sẽ chứa các mô tả nhãn cho các hộp giới hạn (thêm về điều đó trong Bước 4)Bước 3. Đọc hình ảnh và hộp giới hạn từ đĩa. ¶Đọc một hình ảnh từ đĩa 7Các hộp giới hạn có thể được lưu trữ trên đĩa ở các định dạng tuần tự hóa khác nhau. JSON, XML, YAML, CSV, v.v. Vì vậy, mã để đọc các hộp giới hạn phụ thuộc vào định dạng thực tế của dữ liệu trên đĩa Sau khi bạn đọc dữ liệu từ đĩa, bạn cần chuẩn bị các hộp giới hạn cho Albumentations Albumentations hy vọng rằng các hộp giới hạn sẽ được biểu diễn dưới dạng danh sách các danh sách. Mỗi danh sách chứa thông tin về một hộp giới hạn duy nhất. Định nghĩa hộp giới hạn phải có trong danh sách bốn phần tử biểu thị tọa độ của hộp giới hạn đó. Ý nghĩa thực sự của bốn giá trị đó phụ thuộc vào định dạng của các hộp giới hạn (hoặc là 3, 4, 5 hoặc 6). Ngoài bốn tọa độ, mỗi định nghĩa của hộp giới hạn có thể chứa một hoặc nhiều giá trị bổ sung. Bạn có thể sử dụng các giá trị bổ sung đó để lưu trữ thông tin bổ sung về hộp giới hạn, chẳng hạn như nhãn lớp của đối tượng bên trong hộp. Trong quá trình tăng cường, Albumentations sẽ không xử lý các giá trị bổ sung đó. Thư viện sẽ trả lại chúng cùng với tọa độ được cập nhật của hộp giới hạn tăng cườngBước 4. Chuyển một hình ảnh và các hộp giới hạn tới đường dẫn tăng cường và nhận các hộp và hình ảnh tăng cường. ¶Như đã thảo luận trong Bước 2, có hai cách chuyển nhãn lớp cùng với tọa độ hộp giới hạn 1. Truyền nhãn lớp cùng với tọa độ. ¶Vì vậy, nếu bạn có tọa độ của ba hộp giới hạn giống như thế này 7bạn có thể thêm nhãn lớp cho mỗi hộp giới hạn làm thành phần bổ sung của danh sách cùng với bốn tọa độ. Vì vậy, bây giờ một danh sách với các hộp giới hạn và tọa độ của chúng sẽ trông như sau 7hoặc với nhiều nhãn trên mỗi hộp giới hạn 7Bạn có thể sử dụng bất kỳ kiểu dữ liệu nào để khai báo nhãn lớp. Nó có thể là chuỗi, số nguyên hoặc bất kỳ kiểu dữ liệu Python nào khác Tiếp theo, bạn chuyển một hình ảnh và các hộp giới hạn cho nó tới hàm 07 và nhận được hình ảnh tăng cường và các hộp giới hạn 4Dữ liệu đầu vào và đầu ra ví dụ để tăng hộp giới hạn2. Truyền nhãn lớp trong một đối số riêng cho transform = A.Compose([
A.RandomCrop(width=450, height=450),
A.HorizontalFlip(p=0.5),
A.RandomBrightnessContrast(p=0.2),
], bbox_params=A.BboxParams(format='coco'))
|