39 0 1MB
[Type here]
A. TỔNG QUAN: Nhận dạng vật thể là một trong những bài toán quan trọng nhất trong ngành Thị giác máy. Nhiều năm qua, đã có những mô hình nhận dạng vật thể được phát triển, điển hình như VGG, GoogleNet, R-CNN. Vào năm 2015, YOLO (You Only Look Once) ra đời với phương pháp tiếp cận và giải bài toán nhận dạng vật thể thuần túy bằng cách đưa về bài toán Hồi quy thông thường và giải quyết với chỉ một mạng NN duy nhất. Nhờ sự ra đời của YOLO, ngành Thị giác máy đã phát triển rất nhiều chỉ trong vòng 1 thập kỉ trở lại. I. YOLOv1: a) Ý tưởng: YOLOv1 áp một mạng lưới gồm S x S (S = 3, 5, 7, mặc định là 7) cell vào ảnh. Nếu tâm của một vật thể trùng vào tâm của một cell, thì cell đó sẽ chịu trách nhiệm nhận dạng vật thể đó. Để thực hiện nhận dạng một vật thể bất kì, mỗi cell dự đoán B bounding box với những tham số và độ tự tin của nó cho các bounding box đó. Độ tự tin này ánh xạ sự hiện diện hoặc không hiện diện của vật thể trong bounding box. Độ tự tin của bounding box được định nghĩa như sau: truth
confidence score= p (Object ) × IOU pred
Với p ( Object ) ∈ [ 0 ; 1 ] là khả năng xuất hiện vật thể trong bounding box, IOU truth pred (được minh họa ở hình 1.2) là tỷ số giữa phần giao nhau của bounding box mặc định (được label) và bounding box tạo ra (được dự đoán). Nếu không có vật thể trong bounding box, độ tự tin gần như bằng 0, còn nếu có, độ tự tin tỷ lệ với IOU truth pred .
[Type here]
Hình 1.2 Intersection over Union Mỗi bounding box bao gồm 4 tham số chính ( x , y , w , h ) lần lượt thể hiện cho ( vịtrí trung tâm ( x , y ) , chiều rộng , chiều cao ) của bounding box tương ứng như hình 1.3. kết hợp với độ tự tin, mỗi bounding box sẽ được tạo thành từ 5 tham số.
Hình 1.3 Các tham số của 1 bounding box trong kernel 3x3 grid cell. Xác suất của một vật thể được dự đoán cho mỗi class trong cell được ký hiệu p(Class∨Object ). Giá trị xác suất của C class sẽ cho ra C output cho mỗi cell. B bounding box của cell đó sẽ chia sẻ những xác suất dự đoán về các class của vật thể, vì thế, toàn bộ các bounding box trong một cell sẽ mang các class giống nhau. Như hình 1.4, cho rằng có 2 box dự đoán trong cell chính giữa, mỗi box mang những giá trị tham số khác nhau, nhưng dùng chung một bộ xác suất dự đoán vật thể giống nhau (3 class).
[Type here]
Hình 1.4 Bounding box trong 1 cell sẽ sử dụng chung một bộ xác suất dự đoán vật thể. Tóm lại, mô hình sử dụng mạng lưới gồm S x S cell cho một ảnh, mỗi cell dự đoán B bounding box, mỗi bounding box gồm 5 tham số và dùng chung một bộ xác suất dự đoán cho C class. Như vậy, số lượng tham số đầu ra của mô hình YOLO sẽ là S × S ×(5× B +C) tham số. Ví dụ, bộ dataset COCO (gồm 80 class) khi được áp dụng YOLO với mỗi cell gồm 2 bounding box sẽ cho ra tổng số tham số là 7 ×7 ×(5 ×2+80) tham số. Mục đích chính của thuật toán YOLO là để nhận dạng được vật thể bằng cách dự đoán thật chính xác bounding box chứa vật thể và định vị vật thể đó dựa trên các tọa độ của các bounding box. Từ đó, vector bounding box dự đoán sẽ tương quan với vector đầu ra ^y và vector bounding box được đặt nhãn sẽ tương quan với vector nhãn y . Hình 1.5 sẽ chỉ ra vector nhãn y và vector dự đoán ^y .
[Type here]
Hình 1.5 Cell màu tím không có vật thể, vì thế độ tự tin trong cell màu tím sẽ bằng 0, và các tham số sau đó sẽ được bỏ qua. Trong khi đó ở cell màu vàng và xanh lá có vật thể, vì thế chúng có các tham số của bounding box, và xác suất xuất hiện của các class. Cuối cùng, YOLO sử dụng Non-Maximum Suppression (NSM) để xóa hết toàn bộ các bounding box mà không chứa vật thể, và bằng cách sử dụng một ngưỡng tương ứng, NMS xóa toàn bộ các bounding box bị chồng lấn với giá trị IOU mà lớn hơn mức ngưỡng. Non-Maximum Suppression được minh họa như hình 1.6 sau.
Giải thuật của NMS như sau: 1. Loại bỏ những đối tượng có Confidence Score C 50% thì Anchor box đó được coi là chứa vật thể).
[Type here]
III.
YOLOv3:
Cấu trúc YOLOv3: a) Thêm vào ResNet: YOLOv3 sử dụng thêm mạng ResNet với ý tưởng bỏ qua các kết nối để lan truyền qua các lớp mà không bị tình trạng Gradient Vanishing. Kiến trúc ResNet được mô tả ở hình 1.7 sau.
Hình 1.7 Kiến trúc bỏ qua kết nối của ResNet Cấu trúc của bộ trích xuất đặc trưng ở YOLOv3 là sự kết hợp giữa YOLOv2, Darknet – 53 (53 lớp tích chập) và mạng ResNet. Và mạng này được xây dựng với cấu trúc thắt cổ chai bottleneck (tích chập 1 x 1 theo sau bởi tích chập 3 x 3) trong mỗi khối Residual. Nhờ vào Residual block của Resnet, khi các lớp chồng chập lên nhau, hiệu năng của mạng sẽ không bị ảnh hưởng. Ngoài ra, nhờ vào các Residual block này, thông tin được truyền đến trực quan hơn từ các lớp ở phía trước đến các lớp ở sâu hơn. Hình 1.8 mô tả kiến trúc Darknet – 53 với 5 Residual block và 5 lớp bottleneck.
[Type here]
Hình 1.8 YOLOv3 sử dụng Darknet – 53 để huấn luyện trích xuất đặc trưng của các vật thể. Sau đó, YOLOv3 đưa vào thêm 53 lớp nữa để huấn luyện nhận dạng các vật thể, tổng cộng là 103 lớp. b) Nhận dạng ở các tỷ lệ ảnh khác nhau (Multi-scale Detector):
[Type here]
YOLOv1 chia bức ảnh thành các mạng lưới với kích thước S x S với S =3, 5 hoặc 7. Còn đối với YOLOv2 thì kích thước này là 13. Nhưng ngay cả với các kích thước đó, vẫn chưa đủ để có thể tìm kiếm những đối tượng có kích thước nhỏ trong bức hình. Vậy nên YOLOv3 đã xử lý bằng cách là nhận dạng 3 lần trên một bức ảnh với 3 kích thước khác nhau. Các đặc trưng từ 3 lớp Residual gần nhất sẽ được dùng cho 3 kích thước nhận diện khác nhau. 3 kich thước này lần lượt là 13 x 13, 26 x 26 và 52 x 52. Cấu trúc này được mô tả ở hình 1.9.
Hình 1.9 Multi – scale Detector được sử dụng để nhận dạng trên 3 kích thước khác nhau. Cụ thể hơn, YOLOv3 dự đoán ở 3 kích thước này lần lượt ở lớp thứ 82, 94 và 106 bằng cách thay đổi độ trượt kernel của lớp tích chập (hoặc Downsample ảnh đầu vào bằng các hệ số 32, 16 và 8) như hình 1.10.
[Type here]
Hình 1.10 Cấu trúc hoàn chỉnh của YOLOv3, kết hợp giữa trích xuất đặc trưng và nhận dạng vật thể. Không giống như YOLOv1 những bounding box được dự đoán bởi một cell chia sẻ một bộ xác suất dự đoán vật thể giống nhau C , điều này khiến mỗi cell chỉ chịu trách nhiệm dự đoán duy nhất 1 vật thể. Mỗi bounding box được dự đoán ở YOLOv3 có một bộ xác suất dự đoán vật thể độc lập với nhau, vì thế, số lượng tham số đầu ra của mỗi detector sẽ là S × S × ( B × ( 5+C ) ). Ví dụ, tại lớp thứ 82, ảnh được giảm kích thước còn 13 x 13 sau đó được đưa qua bộ nhận dạng lần thứ nhất. Tại mỗi lớp nhận dạng, quá trình nhận dạng này được thực hiện bằng cách áp dụng kernel 1 x 1 lên các đặc trưng đồ. Kernel 1 x 1 này chịu trách nhiệm cho việc dự đoán B bounding box cho mỗi cell trên đặc trưng đồ. Với bộ data COCO, khi đặt B bounding box cho mỗi cell và COCO có 80 class vật thể, kích thước kernel sẽ là 1 ×1× ( 3 × ( 5+80 ) )=1 ×1 ×255 . Tại lớp nhận dạng đầu tiên, kết quả cuối cùng sẽ là 13 ×13 ×255 . Quá trình này được mô tả ở hình 1.11.
[Type here]
Hình 1.11 YOLOv3 nhận dạng 1 vật thể bằng cách áp kernel 1 x 1. Tương tự với lớp nhận dạng thứ 94 và 106. Việc nhận dạng tại các kích thước ảnh khác nhau xử lý được vấn đề nhận dạng các vật thể nhỏ, thứ mà YOLOv2 và YOLOv1 không thể làm được.
[Type here]
IV.
YOLOv4:
Cấu trúc YOLOv4: YOLOv4 chia cấu trúc thành 3 phần thay vì 2 phần như các phiên bản tiền nhiệm: Bộ trích xuất đặc trưng (Backbone), Bộ tổng hợp đặc trưng (Neck), Bộ phân loại vật thể (Head). Được mô tả như hình 1.12.
Hình 1.12 Cấu trúc của YOLOv4. a) Trích xuất đặc trưng (Backbone – CSPDarknet53): CSPDarknet53 được cấu tạo từ CSP, Darknet53. CSP (Cross Stage Partial) có nguồn gốc từ kiến trúc DenseNet sử dụng đầu vào trước đó và nối nó với đầu vào hiện tại trước khi chuyển vào lớp Dense. Nó có nhiệm vụ chia đầu vào của khối thành 2 phần, một phần sẽ qua các khối tích chập, và phần còn lại thì đi thẳng tới cuối khối, sau đó hai phần sẽ được tổng hợp lại và đưa vào khối tiếp theo. CSP lưu giữ các đặc trưng qua các lượt lan truyền, giúp cho mô hình có thể tái sử dụng các đặc trưng đó và giảm thiểu các tham số của mô hình. Darknet – 53 được xây dựng dựa trên DenseNet. DenseNet (Dense connected convolutional network) là một trong những network mới nhất cho nhận dạng vật thể. Nó cũng gần giống ResNet nhưng có một vài điểm khác biệt. DenseNet sử dụng đầu vào của lớp trước cộng với đầu vào của lớp hiện tại và đưa qua lớp tiếp theo. Qua đó làm giảm thiểu hiện tượng Gradient Vanishing. Mô tả cấu trúc của CSP và CSPDenseNet như hình 1.13a và 1.13b.
[Type here]
Hình 1.13a Cấu trúc của DenseNet
Hình 1.13b Cấu trúc của CPSDarkNet – 53 b) Tổng hợp đặc trưng (Neck): Neck có nhiệm vụ trộn và kết hợp các đặc trưng đồ đã học được thông qua quá trình trích xuất đặc trưng (Backbone) và quá trình nhận dạng. Spatial Pyramid Pooling layer (SPP): Từ YOLOv3, các tác giả đã giới thiệu một cách thức áp dụng SPP (YOLOv3-SPP). Mạng SPP này được thay đổi, không còn là chia các đặc trưng đồ thành các bins rồi ghép các bins này với nhau để được một vector có dimension cố định nữa, YOLO-SPP áp dụng một maximum pool với các kernel kích thước khác nhau. Kích thước của đặc trưng đồ đầu vào được giữ nguyên, các đặc trưng đồ thu được từ việc áp dụng max pool (với kernel kích thước khác nhau) sẽ được tổng hợp. YOLOv4 cũng áp dụng lại kỹ thuật này như hình 1.14 sau.
[Type here]
Hình 1.14 Spatial Pyramid Pooling layer sử dụng trong YOLOv4 Path Aggregation Network (PAN): Mạng DeepLearning càng sâu thì càng làm mất mát thông tin, do đó, để nhận dạng được các đối tượng có kích thước nhỏ, các nhà nghiên cứu đã đề xuất ra nhiều phương pháp như DenseBlock, FPN. PAN là một cải tiến của FPN nhằm cải thiện localized information trên các lớp phía trên. Với mỗi lần thực hiện nhận dạng với các kích thước ảnh khác nhau tác giả đã thêm các luồng đi từ dưới lên và các luồng đi từ trên xuống vào cùng nhau theo từng hoặc được nối với nhau trước khi đưa vào bộ phân loại vật thể (Head), từ đó lớp nhận dạng sẽ chứa thông tin phong phú hơn. Điều này được thể hiện ở hình 1.15.
Hình 1.15 PANet. Ở YOLOv4, tác giả đã thay đổi hàm Add thành hàm Concatenate
[Type here]
Hình 1.16 Modified PANet của YOLOv4. Tại các các quá trình của augmented bottom-up pathway, vật thể được nhận diện một cách độc lập với các kích thước khác nhau. Điều này có thể dẫn tới sự dư thừa về dữ liệu hoặc tại mỗi quá trình sẽ không sử dụng thông tin từ các quá trình khác. Do đó, tại mỗi quá trình, các đặc trưng đồ sẽ được đẩy qua một mạng SPP (= ROI Align), rồi sau đó đưa qua lớp fully connected, kết quả thu được sau các lớp fully connected này sẽ được thực hiện phép tính element-wise max để dự đoán như hình 1.17.
Hình 1.17 PAN sử dụng ROI Align và các lớp Fully connected. c) Phân loại vật thể (Head): Bag of Freebies: Những phương pháp giúp cải thiện kết quả inference mà không làm ảnh hưởng tới tốc độ inference. Cutmix Data Augmentation.
[Type here]
Dựa trên ý tưởng của CutOut: loại bỏ một vùng trên mỗi ảnh để model không thể overfit một feature đặc biệt nào đó trên tập training. Thay vào đó, vùng ảnh bị loại bỏ được điền vào các giá trị 0 –> vô dụng. CutMix thay vùng ảnh bị loại bỏ bằng một phần ảnh của ảnh khác trong dataset. Vùng bị thay thế này sẽ bắt buộc bộ nhận dạng vật thể học được nhiều loại đặc điểm hơn. Cutmix Data Augmentation được mô tả như hình 1.18 sau.
Hình 1.18 Quá trình Cutmix Data Augmentation. Mosaic Data Augmentation. Thay vì mỗi ảnh đầu vào là sự kết hợp của 2 ảnh thì Mosaic sử dụng kết hợp 4 ảnh. Việc này giúp cho bối cảnh của ảnh phong phú hơn. Như hình 1.19.
[Type here]
Hình 1.19 Mosaic Data Augmentation. DropBlock Regularization. Trong Dropout, giả thiết là các điểm gần nhau thường có đặc điểm giống nhau, do đó ta có thể loại bỏ các điểm này bằng cách set weight = 0 tại một số vị trí trên feature map. Trong DropBlock, các vị trí được chọn không phân bố ngẫu nhiên nữa mà tập trung thành các block. Như hình 1.20.
Hình 1.20 DropBlock Regularization. Bag of Specials: Bag of Specials bao gồm những phương pháp nâng cao mà kiến trúc chỉ cần trả một cái giá không quá nhỏ mà vẫn cải thiện hiệu năng của việc nhận dạng vật thể. Mish Activation.
[Type here]
Theo tác giả, sử dụng Mish thu được kết quả tốt hơn so với ReLu, SoftPlus, Swish cũng như một số activation function khác (Adam, Ranger, RangerLars, Novograd, …).
Một số thuộc tính quan trọng của Mish:
Khoảng giá trị : ¿ Không có cận trên Có cận dưới Không đơn điệu, giữ lại một phần nhỏ negative gradient cho phép model học tốt hơn (vd: ReLu không cho phép gradient âm). Liên tục: Mish có đạo hàm bậc 1 tại mọi điểm thuộc miền giá trị (so sánh với ReLu không có đạo hàm tạo x=0)
Hình 1.21 Mish Activation Function. So sánh Mish với các hàm kích hoạt khác ở hình 1.22.
[Type here]
Hình 1.22 Bảng so sánh Mish với các Activation Function khác. DIoU – NMS NMS lọc ra các bounding box được dự đoán cho cùng một object và chỉ lấy bounding box có confidence score C cao nhất. C ở đây được đo bằng IoU. Quá trình này được thực hiện như hình 1.23.
[Type here]
Hình 1.23 Quá trình DioU – NMS.
[Type here]
B. YOLOv5: The Leader in Realtime Object Detection I. Tổng quan về YOLOv5: Sau khi YOLOv4 được phát hành khoảng một tháng, nhà nghiên cứu Glenn và nhóm của ông đã xuất bản một phiên bản mới của YOLO, được gọi là YOLOv5 (Jocher, 2020). Bên cạnh đó, Glenn Jocher còn là người phát minh ra phương pháp tăng dữ liệu Mosaic (đây là một kỹ thuật có trong YOLOv4 đã được cải tiến) và được thừa nhận bởi Alexey Bochkovsky trong bài báo YOLOv4 (Bochkovskiy, et al., 2020). Tuy nhiên, mẫu YOLOv5 của anh gây ra nhiều tranh cãi trong cộng đồng thị giác máy vì tên của nó và những cải tiến. Mặc dù được phát hành một tháng sau YOLOv4, nhưng việc bắt đầu nghiên cứu cho YOLOv4 và YOLOv5 là khá ngắn (tháng 3 - tháng 4 năm 2020). Để tránh va chạm, Glenn quyết định đặt tên cho phiên bản của mình là YOLOv5. Do đó, về cơ bản, cả hai nhà nghiên cứu đều áp dụng những đổi mới hiện đại trong lĩnh vực thị giác máy tại thời điểm đó. Điều đó làm cho kiến trúc của YOLOv4 và YOLOv5 rất tương tự và nó khiến nhiều người không hài lòng với cái tên YOLOv5 (thế hệ thứ 5 của YOLO) khi nó không chứa nhiều cải tiến vượt trội so với phiên bản trước YOLOv4. Bên cạnh đó, Glenn đã không xuất bản bất kỳ bài báo nào cho YOLOv5, gây ra nhiều nghi ngờ về YOLOv5. YOLOv5 sở hữu lợi thế về kỹ thuật, được viết bằng ngôn ngữ lập trình Python thay vì ngôn ngữ C như các phiên bản trước. Điều đó làm cho cài đặt và tích hợp trên các thiết bị IoT dễ dàng hơn. Ngoài ra, YOLOv5 được triển khai trong framework PyTorch nên nó được hưởng lợi từ hệ sinh thái PyTorch đã được thiết lập: hỗ trợ đơn giản hơn và triển khai dễ dàng hơn. Và cộng đồng PyTorch cũng lớn hơn cộng đồng Darknet, có nghĩa là PyTorch sẽ nhận được nhiều đóng góp hơn và tiềm năng phát triển trong tương lai. Điều này cũng làm cho việc triển khai đến các thiết bị di động đơn giản hơn vì mô hình có thể được biên dịch sang ONNX và CoreML một cách dễ dàng. Điểm khác biệt đáng chú ý - Adaptive anchor boxes Như đã đề cập ở trên, YOLOv5 đã tích hợp những cải tiến mới nhất tương tự như YOLOv4, do đó không có nhiều sự khác biệt về lý thuyết. Tác giả đã không xuất bản một bài báo chi tiết, chỉ khởi chạy một kho lưu trữ trên Github và cập nhật các cải tiến ở đó. Bằng cách phân tích cấu trúc của nó trong tệp .yaml, mô hình YOLOv5 có thể được tóm tắt là sau (Jocher, 2020): - Backbone: Focus structure, CSP network - Neck: SPP block, PANet - Head: YOLOv3 head using GIoU-loss
[Type here]
Điểm đáng chú ý mà tác giả YOLOv5 đề cập là sự khác biệt về kỹ thuật. Joseph Redmon đã giới thiệu anchor box trong YOLOv2 và quy trình chọn Anchor box có kích thước và hình dạng gần giống với bounding box. Bằng cách sử dụng thuật toán phân cụm k-mean, các tác giả đã chọn ra 5 best-fit anchor box cho tập dữ liệu COCO (chứa 80 lớp) và dùng chúng làm mặc định. Điều đó giảm thời gian đào tạo và tăng độ chính xác của mạng. Tuy nhiên, khi áp dụng 5 anchor box này cho một tập dữ liệu duy nhất (gồm một lớp không thuộc 80 lớp trong tập dữ liệu COCO), các anchor box này không thể nhanh chóng thích ứng với các bounding box của tập dữ liệu duy nhất này. Ví dụ: với tập dữ liệu hươu cao cổ phù hợp với các anchor box hình dạng mỏng và cao hơn hình hộp vuông. Để giải quyết vấn đề này, các kỹ sư thường chạy thuật toán phân cụm k-mean trên tập dữ liệu duy nhất để có được sự phù hợp nhất anchor box cho dữ liệu đầu tiên. Sau đó, các thông số này sẽ được định cấu hình thủ công trong cấu trúc YOLO. Glenn Jocher đề xuất tích hợp quy trình lựa chọn anchor box vào YOLOv5. Kết quả là, mạng không coi bất kỳ bộ dữ liệu nào được sử dụng làm đầu vào, nó sẽ tự động "học" anchor box tốt nhất cho tập dữ liệu đó và sử dụng chúng trong quá trình training. II.
YOLOv4 và YOLOv5
Do được viết bằng 2 ngôn ngữ khác nhau trên 2 framework khác nhau nên so sánh hiệu suất giữa YOLOv4 và YOLOv5 rất khó chính xác. Nhưng sau một thời gian, YOLOv5 đã chứng tỏ hiệu suất cao hơn YOLOv4 trong một số trường hợp nhất định và phần nào đã đạt được niềm tin vào cộng đồng thị giác máy. YOLOv5 được phát hành bao gồm bốn kích thước mô hình khác nhau: YOLOv5s (nhỏ nhất), YOLOv5m, YOLOv5l, YOLOv5x (lớn nhất). Độ chính xác tăng dần và tốc độ giảm dần theo thứ tự trên. Việc so sánh giữa YOLOv4 và YOLOv5 có một câu nói rất hay: “If you’re a developer looking to incorporate near realtime object detection into your project quickly, YOLOv5 is a great choice. If you’re a computer vision engineer in pursuit of state-of-the-art and not afraid of a little more custom configuration, YOLOv4 in Darknet continues to be most accurate”. Đây cũng là lý do nhóm tụi em chọn YOLOv5 để nhận diện vật thể đáp ứng theo thời gian thực. THỰC HIỆN THUẬT TOÁN YOLOv5 I.
Môi trường
Google Colab (Google Collaboratory) là một môi trường phát triển tích hợp (IDE) miễn phí từ Google để hỗ trợ nghiên cứu và học hỏi về Trí tuệ nhân tạo (AI). Colab dựa trên Jupyter Notebook và miễn phí sử dụng bộ xử lý đồ họa (GPU) và bộ xử lý
[Type here]
tensor (TPU). Người dùng có thể viết và thực thi đoạn mã python thông qua trình duyệt và đặc biệt rất phù hợp với data analysis, machine learning và giáo dục. Google Colab có các thư viện được cài đặt sẵn rất phổ biến trong lĩnh vực Deep Learning như PyTorch, TensorFlow, Keras và OpenCV. Do các thuật toán học máy / học sâu đòi hỏi hệ thống phải có tốc độ cao và sức mạnh xử lý (thường dựa trên GPU), máy tính bình thường không được trang bị GPU. Do đó, Colab cung cấp GPU (Tesla V100) và TPU (TPUv2) trên đám mây, một trong những GPU hiệu suất cao ở thời điểm hiện tại để hỗ trợ các nhà nghiên cứu AI. Cũng như các phiên bản trước, kiến trúc YOLOv5 được xây dựng dựa trên lý thuyết và được phát hành thông qua một kho lưu trữ trên GitHub. Như đã đề cập, Ultralystic xây dựng YOLOv5 trên framework PyTorch, một trong số các framework phổ biến nhất trong cộng đồng AI. Tuy nhiên, đây chỉ là sơ bộ kiến trúc, các nhà nghiên cứu có thể định cấu hình kiến trúc để đưa ra kết quả tốt nhất tùy thuộc vào các vấn đề như thêm lớp, xóa khối, tích hợp các phương pháp xử lý hình ảnh bổ sung, thay đổi phương pháp tối ưu hóa hoặc chức năng kích hoạt, v.v. II.
Chuẩn bị tập dữ liệu để training
Đầu tiên chuẩn bị tập dữ liệu để đưa vào model bao gồm 2 qui trình đó là thu thập hình ảnh và gán nhãn, sau đó ta chia 80% để train và 20% để validate. Thu thập các tấm hình chứa vật thể với nhiều góc độ khác nhau để đa dạng hóa dữ liệu, nhận diện 5 vật thể có nhãn sau: + Bottle: Chai nước + Remote: điều khiển + Phone: điện thoạI di động + Clock: đồng hồ + Calculator : máy tính tay