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.
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']]
3, 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']]
4, 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']]
5 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']]
6Chú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 độ
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']]
7 sau đây của các góc của nó. trên cùng bên trái là 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']]
8 hoặc 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']]
9, trên cùng bên phải là 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
0 hoặc 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
1, dưới cùng bên trái là 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
2 hoặc 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
3, dưới cùng bên phải là 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
4 hoặc 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
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 độ 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']]
7 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
7pascal_voc¶
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']]
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. 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
9. 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']]
70 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']]
71 là tọa độ của góc trên cùng bên trái của hộp giới hạn. 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']]
72 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']]
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à
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']]
74albumentations¶
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']]
4 tương tự như 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']]
3, bởi vì nó cũng sử dụng bốn giá trị 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
9 để đại diện cho một hộp giới hạn. Nhưng không giống như 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']]
3, 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']]
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à
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']]
70 là 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']]
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¶
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']]
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
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']]
5, một hộp giới hạn được xác định bởi bốn giá trị tính bằng pixel 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']]
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à
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']]
75yolo¶
Trong
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']]
6, một hộp giới hạn được biểu thị bằng bốn giá trị 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. 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 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']]
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. 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']]
70 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']]
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à
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']]
72 là 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']]
73Mở 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
- Bạn nhập các thư viện cần thiết
- Bạn xác định một đường ống tăng cường
- Bạn đọc hình ảnh và hộp giới hạn từ đĩa
- Bạn 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
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. ¶
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']]
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
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']]
Lưu ý rằng không giống như tăng cường hình ảnh và mặt nạ,
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']]
74 hiện có tham số bổ sung 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']]
75. Bạn cần truyền một thể hiện của 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']]
76 cho đối số đó. 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']]
76 chỉ định cài đặt để làm việc với các hộp giới hạn. 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 đặt định dạng cho tọa độ hộp giới hạnNó có thể là
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']]
3, 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']]
4, 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']]
5 hoặc 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']]
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
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, 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']]
76 hỗ trợ thêm một số cài đặtĐây là một ví dụ 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']]
74 hiển thị tất cả các cài đặt có sẵn với 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']]
76transform = A.Compose[[
A.RandomCrop[width=450, height=450],
A.HorizontalFlip[p=0.5],
A.RandomBrightnessContrast[p=0.2],
], bbox_params=A.BboxParams[format='coco', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
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¶
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']]
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']]
Các tham số
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 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 ảnhtransform = 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 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 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, 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 đó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 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 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']]
44 trở nên nhỏ hơn 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, 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
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']]
5Đầu tiên, chúng tôi áp dụng phần mở rộng
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']]
47 mà không khai báo các tham số 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. Hình ảnh tăng cường chứa hai hộp giới hạnTiếp theo, chúng tôi áp dụng tăng thêm
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']]
47 tương tự, nhưng bây giờ chúng tôi cũng sử dụng tham số 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. 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 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ì 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
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']]
47 với 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. 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 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 đặtNhã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.
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']]
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 tọa độ hộp giới hạn ở định dạng 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']]
5 cho các đối tượng đó là 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
00, 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
01 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
021. 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
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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
03, 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
04 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
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.
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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
06, 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
07 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
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ụ:
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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
09, 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']]
00 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']]
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ư
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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
00, 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
01 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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
02, bạn có thể tạo một danh sách riêng với các giá trị như 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']]
05 hoặc 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']]
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 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']]
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ố 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']]
08 để đặt tên cho tất cả các đối số trong 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']]
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
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']]
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à
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']]
3, 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']]
4, 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']]
5 hoặc 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']]
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
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']]
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ư sautransform = A.Compose[[
A.RandomCrop[width=450, height=450],
A.HorizontalFlip[p=0.5],
A.RandomBrightnessContrast[p=0.2],
], bbox_params=A.BboxParams[format='coco']]
7hoặc với nhiều nhãn trên mỗi hộp giới hạn
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']]
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
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']]
07 và nhận được hình ảnh tăng cường và các hộp giới hạntransform = A.Compose[[
A.RandomCrop[width=450, height=450],
A.HorizontalFlip[p=0.5],
A.RandomBrightnessContrast[p=0.2],
], bbox_params=A.BboxParams[format='coco']]
42. 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']]
07 [cách ưa thích]. ¶
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']]
Giả sử bạn có tọa độ của ba hộp giới hạn
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']]
7Bạn có thể tạo một danh sách riêng chứa nhãn lớp cho các hộp giới hạn đó
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', min_area=1024, min_visibility=0.1, label_fields=['class_labels']]]
0Sau đó, bạn chuyển cả hai hộp giới hạn và nhãn lớp 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']]
07. Lưu ý rằng để chuyển các nhãn lớp, bạn cần sử dụng tên của đối số mà bạn đã khai báo trong 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']]
08 khi tạo một phiên bản Compose ở bước 2. Trong trường hợp của chúng tôi, chúng tôi đặt tên của đối số thành 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']]
18transform = A.Compose[[
A.RandomCrop[width=450, height=450],
A.HorizontalFlip[p=0.5],
A.RandomBrightnessContrast[p=0.2],
], bbox_params=A.BboxParams[format='coco']]
0Lưu ý rằng
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']]
08 cần một danh sách, vì vậy bạn có thể đặt nhiều trường có chứa nhãn cho các hộp giới hạn của mình. Vì vậy, nếu bạn tuyên bố Soạn như