TỔNG QUAN
ĐẶT VẤN ĐỀ
Ngày nay, sự phát triển vượt bậc của khoa học công nghệ đã thúc đẩy trí tuệ nhân tạo (AI) ngày càng trở nên phổ biến trong mọi lĩnh vực của đời sống Với khối lượng dữ liệu khổng lồ và tốc độ xử lý nhanh chóng, AI không chỉ nâng cao năng suất lao động mà còn giảm thiểu nhân công và rủi ro trong công việc Các ứng dụng như xe tự lái với khả năng nhận diện môi trường và hệ thống sinh trắc học, cùng với các trợ lý ảo như Alexa và Siri, đã giúp người dùng thực hiện công việc một cách nhanh chóng và dễ dàng hơn.
Thị giác máy tính (Computer Vision) là một lĩnh vực quan trọng trong AI, chuyên về phát hiện vật thể và phân loại hình ảnh Hiện nay, có nhiều phương pháp nhận diện đối tượng như R-CNN, Fast-RCNN, Faster-RCNN và Faster-RCNN Resnet 50, nhưng vẫn chưa đạt hiệu suất và độ chính xác cao như mong muốn Sự ra đời của EfficientDet đã mang lại hy vọng mới cho việc cải thiện hiệu suất trong nhận diện đối tượng Vì vậy, nhóm nghiên cứu đã quyết định chọn mạng EfficientDet để tìm hiểu và ứng dụng trong việc phát hiện một số hư hỏng trên đường nhựa.
Tốc độ phát triển cầu đường ngày càng tăng đã tạo ra áp lực giao thông, khiến việc xử lý các con đường xuống cấp trở nên cấp thiết Các cơ quan nhà nước đã áp dụng biện pháp thủ công để tìm kiếm, sửa chữa và thay thế mặt đường khi xảy ra hư hỏng Tuy nhiên, nếu không sửa chữa kịp thời những ổ gà hay vết nứt, tai nạn có thể xảy ra Do đó, việc phát hiện và phân loại đường hỏng kịp thời là cần thiết để giảm chi phí bảo trì và tiết kiệm thời gian cho nhân công Trong dự án này, nhóm nghiên cứu đã tìm hiểu về mạng nơ-ron tích chập (CNN) và mô hình EfficientDet để phát hiện hư hỏng trên bề mặt đường nhựa.
MỤC TIÊU ĐỀ TÀI
- Tìm hiểu về mạng Nơ-ron nhân tạo, mô hình EfficientDet.
Ứng dụng thuật toán phát hiện đối tượng và EfficientDet giúp phát hiện hư hỏng trên bề mặt đường nhựa, bao gồm bốn loại chính: nứt ngang, nứt dọc, nứt cá sấu và ổ gà.
TỔNG QUAN TÌNH HÌNH NGHIÊN CỨU
1.3.1 Ngoài nước Ở các quốc gia phát triển tiên tiến trên thế giới việc ứng dụng công nghệ phát hiện hư hỏng trên bề mặt đường đã được ứng dụng và trải qua nhiều cải tiến trong nhiều thập kỹ qua Một nhóm các nhà nghiên cứu của trường Đại học Temple Mỹ đã tiến hành phát hiện vết nứt của đường dùng mạng Deep CNN [1] Hình ảnh được được thu thập và chú thích thủ công bởi điện thoại thông minh sử dụng phương pháp ConvNets, trong đó các tính năng phát hiện vết nứt được học trực tiếp qua mô hình ConvNet thay cho phương pháp thủ công Bên cạnh đó, ở Hàn Quốc nhóm tác giả Chanjun Chun và Seung Ki Ryu đã nghiên cứu hệ thống phát hiện hư hỏng bề mặt đường sử dụng mạng CNN đầy đủ và Semi-Supervised Learning (Học tập có giám sát) [2] Thu thập hình ảnh đường thành phố và đường cao tốc thông qua điện thoại thông minh được lắp ở hộp đen của xe, ảnh được chụp khi đang lái xe với tốc độ tối đa100km/h, độ chính xác đạt được ở mức 90% dựa trên cả 2 phương pháp học tập có giám sát và không có giám sát Các kết quả nghiên cứu đã đạt độ chính xác khá là cao, tuy nhiên kết quả của các vết nứt dường như vẫn chưa đạt tính chính xác cao, còn bị nhầm lẫn bởi vạch kẻ đường, bóng râm của cây cối, vết lún vẫn cần cải thiện nhiều hơn để có độ chính xác cao hơn trên thực tế.
Việt Nam đã đạt được nhiều tiến bộ trong lĩnh vực khoa học công nghệ; tuy nhiên, việc phát hiện hư hỏng trên bề mặt đường nhựa vẫn chủ yếu dựa vào phương pháp thủ công, mà chưa được áp dụng các kỹ thuật phân tích hiện đại.
NỘI DUNG NGHIÊN CỨU
Đề tài được thực hiện dựa trên những nội dung sau đây:
- Nội dung 1: Tìm hiểu về các lý thuyết CNN và các thuật toán sử dụng cho bài toán nhận dạng đối tượng
- Nội dung 2: Tìm hiểu cấu trúc EfficientDet
- Nội dung 3: Thu thập dữ liệu các đối tượng trong mô hình
- Nội dung 4: Xây dựng mạng EfficientDet để ghi nhận đặc trưng của các đối tượng
- Nội dung 5: Thực hiện quá trình huấn luyện cho mạng
- Nội dung 6: Kiểm thử, chỉnh sửa và hoàn thiện mô hình
- Nội dung 7: Viết báo cáo
GIỚI HẠN ĐỀ TÀI
Các giới hạn của đề tài bao gồm:
Cấu trúc mạng nơ-ron tích chập (CNN) là nền tảng quan trọng trong việc phát triển các thuật toán phát hiện đối tượng và phân loại đối tượng Những thuật toán này, cùng với các phương pháp học sâu mở rộng khác, đã cách mạng hóa khả năng nhận diện và phân tích hình ảnh trong nhiều lĩnh vực Việc áp dụng CNN trong phát hiện và phân loại đối tượng giúp nâng cao độ chính xác và hiệu quả trong việc xử lý dữ liệu hình ảnh.
- Mô hình dừng lại ở việc phát hiện vết nứt mặt đường nhựa gồm: nứt ngang, nứt dọc, nứt cá sấu, ổ gà trên bề mặt đường nhựa.
- Hình ảnh được nhận dạng kém chính xác trong điều kiện có ánh sáng cường độ mạnh hoặc quá yếu, chất lượng hình ảnh kém.
- Sử dụng Framework, thư viện, cấu trúc đã được công bố.
BỐ CỤC
Nội dung của của đề tài gồm có 5 chương:
Chương này khám phá các vấn đề hình thành đề tài, nêu rõ xu hướng phát triển của trí tuệ nhân tạo (AI) và tính cấp thiết của nghiên cứu Đồng thời, lý do lựa chọn đề tài cũng được trình bày, kèm theo một số nội dung và giới hạn mà nhóm thực hiện đề tài đã xác định.
Chương 2: Cở sở lý thuyết
Chương này cung cấp cái nhìn tổng quan về trí tuệ nhân tạo, học sâu và mạng nơ-ron tích chập, cùng với thuật toán nơ-ron tích chập và mạng EfficientDet Nó cũng hướng dẫn cách xây dựng mạng EfficientDet để phát hiện vết nứt trên mặt đường nhựa, đồng thời khám phá ngôn ngữ lập trình Python và các ứng dụng của nó trong lĩnh vực này.
Chương 3: Thiết kế hệ thống
Dựa trên nghiên cứu ở chương 2, bài viết này sẽ xây dựng và phân tích quá trình phát triển mạng EfficientDet theo đề tài của nhóm Chúng tôi sẽ phân tích các thông số liên quan, lựa chọn các thuật toán phù hợp và các tham số đi kèm nhằm tối ưu hóa quá trình huấn luyện mô hình.
Sau khi hoàn thiện hệ thống, cần trình bày kết quả và đánh giá xem chúng có đáp ứng yêu cầu ban đầu hay không Việc phân tích mọi trường hợp thu được sẽ giúp so sánh và đưa ra kết quả chính xác, đồng thời đánh giá những ưu điểm và nhược điểm của hệ thống.
Chương 5: Kết luận và hướng phát triển tổng kết những thành tựu và hạn chế của đề tài dựa trên kết quả ở chương 4 Từ đó, đề xuất các hướng phát triển nhằm cải thiện hiệu quả của hệ thống.
CƠ SỞ LÝ THUYẾT
GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO
2.1.1 Khái niệm trí tuệ nhân tạo
Trí tuệ nhân tạo (AI) hiện đang có mặt trong hầu hết các lĩnh vực của đời sống con người Trong tương lai, nhiều nghiên cứu sẽ tiếp tục mở rộng chức năng của AI Các hệ thống AI được phát triển để thực hiện những nhiệm vụ cụ thể, như chơi cờ hay giải phương trình toán học, đang cho thấy hiệu suất vượt trội hơn con người.
Hình 2.1: Trí tuệ nhân tạo
Trí tuệ nhân tạo (AI) là một lĩnh vực của khoa học máy tính, tập trung vào tự động hóa hành vi thông minh Nó nghiên cứu cách giúp máy tính thực hiện những nhiệm vụ mà con người hiện đang làm hiệu quả Tuy nhiên, AI cũng có những ưu điểm và nhược điểm cần được khai thác và cải thiện dần.
Machine Learning và Deep Learning
Machine learning (ML) là một thành quả quan trọng của trí tuệ nhân tạo (AI), cho phép máy tính suy nghĩ và hành động giống như con người Nó sử dụng các thuật toán do con người phát triển để phân tích dữ liệu hiện có và rút ra bài học nhằm dự đoán các đối tượng liên quan Để thực hiện điều này, nhiều giải thuật và phương pháp khác nhau đã được đề xuất.
- Học có giám sát (Supervised-learning).
- Học không giám sát (Unsupervised-learning).
- Học tăng cường (Reinforcement learning).
Deep learning (DL) là một phương pháp trong học máy có giám sát, cho phép máy tự đào tạo mà không cần sự hướng dẫn như trong học máy truyền thống DL ngày càng được ứng dụng rộng rãi bởi các công ty lớn như Facebook và Google nhờ vào tiềm năng lớn của nó Phương pháp này có khả năng khai thác lượng dữ liệu khổng lồ (Big Data) với độ chính xác cao lên đến 95% trên các tập dữ liệu hình ảnh và tín hiệu số Để áp dụng DL hiệu quả, cần thực hiện nhiều bước như tiền xử lý dữ liệu, lựa chọn số lượng node và layer, thiết kế các mô hình CNN, RNN, LSTM, so sánh hiệu suất với các loại hàm kích hoạt khác nhau và điều chỉnh các node.
Sự phát triển của trí tuệ nhân tạo (AI) đã mang đến những sản phẩm ngày càng hiện đại để đáp ứng nhu cầu của con người Dưới đây là một số ứng dụng nổi bật của AI tính đến thời điểm hiện tại.
- Trò chơi và các bài toán đố.
- Suy luận và chứng minh định lý tự động.
- Xử lý ngôn ngữ tự nhiên.
GIỚI THIỆU MÔ HÌNH MẠNG NƠ-RON NHÂN TẠO - ARTIFICIAL
2.2.1 Tìm hiểu mạng nơ-ron – Neural Network
Mạng nơ-ron nhân tạo là mô hình toán học mô phỏng hoạt động của nơ-ron trong hệ thần kinh con người Thông qua quá trình huấn luyện, mạng nơ-ron học hỏi từ dữ liệu để cải thiện khả năng dự đoán thông tin mới và chưa biết.
Mạng nơ-ron nhân tạo là mô phỏng toán học của mạng nơ-ron sinh học, được cấu thành từ các nơ-ron nhân tạo với nhiều đầu vào và một đầu ra Các nơ-ron đơn lẻ trong mạng nơ-ron tạo thành một cấu trúc gọi là perceptron.
Hình 2.2: Mô hình sinh học của nơ-ron
Các đầu vào của nơ-ron nhận kích thích từ các nơ-ron khác hoặc từ môi trường, với mỗi nơ-ron có bộ trọng số để khuếch đại tín hiệu Tín hiệu này sau đó được cộng lại và biến đổi qua một hàm phi tuyến, hay còn gọi là hàm kích hoạt Cuối cùng, tín hiệu sẽ được truyền đến đầu ra của nơ-ron, trở thành đầu vào cho các nơ-ron khác hoặc tín hiệu ra của toàn bộ mạng Sự kết hợp của các nơ-ron tạo thành một mạng nơ-ron nhân tạo.
Hình 2.3: Xây dựng nơ-ron nhân tạo 2.2.2 Cấu trúc mạng nơ-ron nhân tạo
Mạng nơ-ron được cấu thành từ các nơ-ron riêng lẻ, hay còn gọi là các Processing Elements (PE) Mỗi nơ-ron có khả năng tiếp nhận nhiều dữ liệu đầu vào nhưng chỉ cho ra một kết quả duy nhất.
Hình 2.4: Mô hình tổng quát mạng nơ-ron nhân tạo 1 lớp ẩn
Kiến trúc của một nơ-ron bao gồm nhiều tầng kết nối với nhau, trong đó có ba tầng chính: tầng đầu vào (Input layer) chứa các giá trị đầu vào, các tầng ẩn (Hidden layer) thực hiện các logic và suy luận, và tầng đầu ra (Output layer) cung cấp kết quả cuối cùng của mạng.
Hình 2.5: Cấu tạo mạng nơ-ron nhân tạo
Trong một mạng nơ-ron nhân tạo có:
- Inputs (dữ liệu vào): Với mỗi Input tương ứng với một thuộc tính (attribute) của dữ liệu (patterns).
- Output (kết quả): Đây là kết quả của một mạng nơ-ron nhân tạo là một giải pháp cho một vấn đề nào đó.
Trọng số liên kết là thành phần quan trọng trong mạng nơ-ron nhân tạo, thể hiện mức độ ảnh hưởng của dữ liệu đầu vào trong quá trình xử lý thông tin Quá trình học của mạng nơ-ron thực chất là điều chỉnh các trọng số của dữ liệu đầu vào để đạt được kết quả mong muốn.
Hàm tổng (Summation Function) tính toán tổng trọng số của tất cả các đầu vào được đưa vào mỗi nơ-ron (PE) Kết quả của hàm tổng sẽ được gửi đi tiếp Đối với n đầu vào, hàm tổng của một nơ-ron được tính theo công thức cụ thể.
Hàm truyền (Transfer function) hay còn gọi là hàm kích hoạt (Active function) có vai trò quan trọng trong việc giới hạn phạm vi đầu ra của mỗi nơ-ron Đầu vào của hàm này được xác định bởi kết quả của hàm tổng và ngưỡng đã được thiết lập.
Mạng nơ-ron nhân tạo nhận dữ liệu đầu vào cho từng nơ-ron, sau đó xử lý dữ liệu bằng cách nhân với trọng số liên kết, tính tổng các tích và gửi kết quả đến hàm truyền để tạo ra kết quả đầu ra cuối cùng.
KIẾN TRÚC CƠ BẢN CỦA MỘT MẠNG NƠ-RON TÍCH CHẬP –
Mạng nơ-ron tích chập (CNN) là một loại mạng thần kinh với một hoặc nhiều lớp chập, chủ yếu được sử dụng để xử lý hình ảnh, phân loại và phân đoạn dữ liệu Đầu vào của CNN là hình ảnh 3 chiều, và các nơ-ron trong mạng chỉ liên kết với một vùng nhỏ thay vì toàn bộ nơ-ron, giúp tối ưu hóa quá trình học và nhận diện.
Mạng CNN học các đặc trưng từ dữ liệu hình ảnh thông qua các lớp, giúp phân lớp hiệu quả Các hàm activation function được sử dụng để trích xuất từng đặc trưng của input, tạo ra thông tin trừu tượng hơn cho các lớp tiếp theo Các lớp liên kết với nhau qua phép toán tích chập, với mỗi lớp sử dụng hàng nghìn feature khác nhau Một số lớp, như pooling/subsampling layer, được áp dụng để lọc thông tin hữu ích và loại bỏ nhiễu.
Mô hình mạng nơ-ron tích chập bao gồm các lớp chính như lớp chập, lớp kích hoạt, lớp Pooling và lớp kết nối đầy đủ Sự sắp xếp và số lượng các lớp này quyết định cấu trúc của mô hình, từ đó phù hợp với từng loại bài toán khác nhau.
Mô hình mạng nơ-ron tích chập (CNN) cần chú ý đến hai khía cạnh quan trọng là tính bất biến (Location Invariance) và tính kết hợp (Compositionality) Độ chính xác của thuật toán có thể bị ảnh hưởng khi cùng một đối tượng được chiếu từ các góc độ khác nhau, bao gồm dịch chuyển (translation), quay (rotation) và thu phóng (scaling) Trong trường hợp này, lớp Pooling sẽ giúp đạt được tính bất biến đối với các phép biến đổi này.
Tính kết hợp cục bộ cho phép biểu diễn thông tin ở nhiều cấp độ khác nhau, từ cơ bản đến trừu tượng, thông qua quá trình convolution các đặc trưng Nhờ đó, mô hình CNN đạt được độ chính xác cao trong nhận diện, tương tự như cách con người nhận biết các vật thể trong tự nhiên.
2.3.2 Các lớp cơ bản trong mạng CNN
Lớp chập trong mạng nơ-ron bao gồm tích chập 2 chiều cho phép bộ lọc di chuyển theo cả chiều ngang và chiều dọc, trong khi tích chập 3 chiều cho phép bộ lọc di chuyển thêm theo độ sâu của ảnh Phép tính convolution sử dụng một cửa sổ trượt, hay còn gọi là bộ lọc (kernel), là một ma trận nhỏ áp đặt lên ma trận ảnh Ví dụ, hình ảnh xám trong hình 2.7 được biểu diễn dưới dạng ma trận 5x5, với mỗi điểm ảnh có giá trị 1 (màu trắng) hoặc 0 (màu đen), trong khi ảnh màu có giá trị từ 0 đến 255.
Hình 2.7: Hình ảnh minh họa
Tích chập là quá trình nhân từng phần tử của ảnh với kernel, tạo ra một ma trận Convolved Feature hay Feature Map có kích thước 3x3 Kết quả từ lớp convolutional đầu tiên sẽ trở thành đầu vào cho lớp convolutional tiếp theo.
Stride là khoảng cách giữa hai kernel trong quá trình quét Khi stride bằng 1, kernel sẽ quét hai ô liền kề, trong khi với stride bằng 2, kernel chỉ quét ô số 1 và ô số 3, bỏ qua ô ở giữa Cách này giúp tránh việc lặp lại giá trị ở các ô được quét khi stride bằng 1.
Khi chọn stride và kích thước kernel lớn, kích thước của feature map sẽ giảm do kernel cần nằm hoàn toàn trong input Để duy trì kích thước của feature map, ta sử dụng Padding Cụ thể, khi padding = 1, ta thêm một ô bọc xung quanh các cạnh của input, và nếu muốn phần bọc dày hơn, cần tăng giá trị padding.
Lớp kích hoạt thường được cài đặt ngay sau lớp chập, sử dụng hàm f(x) = max(0, x) để chuyển đổi toàn bộ giá trị âm thành 0 Việc này tạo ra tính phi tuyến cho mô hình, điều quan trọng trong việc xây dựng mạng nơ-ron Nếu chỉ dựa vào các phép biến đổi tuyến tính, mô hình đa tầng sẽ không có ý nghĩa Mặc dù có nhiều hàm kích hoạt khác như sigmoid và tanh, nhưng f(x) = max(0, x) lại dễ cài đặt, tính toán nhanh và hiệu quả.
Lớp pooling thường được đặt giữa các lớp convolutional, giúp giảm kích thước dữ liệu về chiều dài và chiều rộng mà vẫn giữ lại các thuộc tính quan trọng Lớp này sử dụng một ô vuông cửa sổ nhỏ để quét qua toàn bộ ảnh dữ liệu, với mỗi lần trượt theo một bước cố định Khác với lớp chập, lớp pooling không thực hiện tích chập mà chỉ tiến hành lấy mẫu, với một giá trị đại diện cho thông tin ảnh tại vùng quét được giữ lại Việc giảm kích thước dữ liệu này giúp giảm khối lượng tính toán, làm cho mô hình trở nên đơn giản hơn.
Mục đích của việc giảm số hyperparameter là để rút ngắn thời gian tính toán và ngăn chặn hiện tượng overfitting, khi mà mô hình có thể hoạt động tốt trên dữ liệu huấn luyện nhưng lại không phù hợp khi dự đoán với dữ liệu mới.
Có 2 loại pooling layer phổ biến là: Max Pooling (lấy giá trị lớn nhất) và Average pooling (lấy giá trị trung bình).
Hình 2.12: Hai loại Pooling layer phổ biến với bộ lọc 2x2, bước trượt bằng 2
Mô hình CNN thường bao gồm một hoặc nhiều cặp lớp Convolutional và Max Pooling, cùng với hai lớp Fully connected layer, nhằm kết hợp các đặc điểm của ảnh để tạo ra đầu ra cho model.
Hình 2.13: Sơ đồ hệ thống CNN
2.3.2.4 Lớp kết nối đầy đủ (Fully connected layer)
Sau khi trải qua các lớp convolutional và pooling, hệ thống xử lý ảnh đã học được những đặc điểm cơ bản của hình ảnh như mắt, khung mặt và mũi Tensor đầu ra từ lớp cuối sẽ được chuyển đổi thành một vector Kết quả của mô hình được tạo ra khi các lớp fully connected kết hợp các đặc điểm này để đưa ra dự đoán.
Hình 2.14: Mô hình Fully connected layer
Mạng CNN là một cấu trúc gồm các lớp tích chập liên tiếp, sử dụng hàm kích hoạt để trích xuất đặc trưng của dữ liệu đầu vào Mỗi lớp tạo ra thông tin trừu tượng hơn cho các lớp tiếp theo thông qua phép toán convolution Mỗi lớp có thể sử dụng hàng nghìn filter khác nhau, kết hợp chúng để tạo ra kết quả Bên cạnh đó, các lớp như pooling/subsampling layer được sử dụng để lọc thông tin hữu ích và loại bỏ nhiễu.
CÁC THUẬT TOÁN OBJECT DETECTION
Trong lĩnh vực máy tính thị giác, có nhiều tác vụ cơ bản nhằm nhận dạng hình ảnh, trong đó nổi bật là ba thuật toán cơ bản.
Phân loại hình ảnh (image classification): gán nhãn cho một đối tượng trong hình ảnh:
- Input: 1 hình ảnh với 1 đối tượng
Định vị đối tượng là quá trình xác định vị trí của các đối tượng trong hình ảnh và tạo ra hộp giới hạn xung quanh chúng.
- Input: 1 hình ảnh có 1 hoặc nhiều đối tượng
- Output: Có một hoặc nhiều hơn 1 bounding box được xác định bới tọa độ tâm, chiều rộng, chiều cao
Phát hiện đối tượng, hay còn gọi là nhận diện đối tượng, là quá trình xác định vị trí của các đối tượng trong hình ảnh thông qua việc sử dụng bounding box và gán nhãn cho chúng.
- Input: 1 hình ảnh có 1 hoặc nhiều đối tượng
- Output: 1 hoặc nhiều hơn 1 bounding box và có dán nhãn cho mỗi bounding box
Phân đoạn đối tượng (object segmentation) là kỹ thuật quan trọng giúp xác định vị trí và hình dạng của các đối tượng trong ảnh, đồng thời xác định cụ thể từng pixel nào thuộc về từng đối tượng trong một hình ảnh.
Hình 2.15: Hình ảnh minh họa các tác vụ
Hình 2.16: Sơ đồ mối liên hệ giữa các tác vụ trong Computer vision
Object recognition có thể được coi là tương tự như object detection Trong khi mô hình phân loại hình ảnh (image classification) sử dụng hàm loss function dựa trên sự khác biệt giữa nhãn dự đoán và nhãn thực tế, thì object detection lại đánh giá dựa trên sai số giữa nhãn dự đoán và khung hình dự đoán so với thực tế.
GIỚI THIỆU MẠNG EFFICIENTDET
Tính năng nhận dạng đối tượng ngày càng quan trọng trong các tình huống cần độ chính xác cao nhưng lại bị hạn chế về tài nguyên tính toán, như trong robot và ô tô không người lái, nơi kích thước và thời gian trễ là yếu tố quan trọng Các ứng dụng nhận dạng đối tượng thường hoạt động trên nhiều nền tảng khác nhau và yêu cầu tài nguyên đa dạng Để thiết kế công cụ nhận dạng đối tượng với độ chính xác và hiệu quả cao, đồng thời thích ứng với các hạn chế về tài nguyên, các mô hình cần có khả năng xác định chính xác, hiệu suất thời gian thực và khả năng mở rộng Mạng nơ-ron tích chập, như EfficientDet, được phát triển với nguồn tài nguyên cố định và có thể được mở rộng để cải thiện độ chính xác khi có thêm tài nguyên.
1 nhóm tác giả là Mingxing Tan và Lê Viết Quốc [10].
EfficientDet là một công cụ nhận dạng đối tượng hiệu quả, với mô hình đơn giai đoạn và khả năng mở rộng tốt, phù hợp với các hạn chế về tài nguyên phần cứng Mô hình này có thể được triển khai trên nhiều thiết bị khác nhau, từ điện thoại di động có phần cứng và nguồn điện hạn chế cho đến các máy trạm đa GPU.
Bước đầu tiên trong phương pháp chia tỷ lệ kết hợp là thực hiện grid search để xác định mối quan hệ giữa các kích thước chia tỷ lệ khác nhau của mạng cơ sở dưới những hạn chế tài nguyên cố định, chẳng hạn như tăng 2x FLOPS Quá trình này giúp xác định hệ số tỷ lệ phù hợp cho từng kích thước đã đề cập Sau đó, các hệ số này được áp dụng để mở rộng mạng cơ sở theo kích thước mô hình mong muốn.
Phương pháp chia tỷ lệ kết hợp này nâng cao độ chính xác và hiệu quả của các mô hình hiện có, như MobileNet với mức tăng 1,4% độ chính xác trên ImageNet và ResNet với 0,7%, so với các phương pháp chia tỷ lệ truyền thống.
Khi so sánh EfficientNets với các mạng nơ-ron tích chập (CNN) hiện có trên ImageNet, mô hình EfficientNet không chỉ đạt độ chính xác cao hơn mà còn tối ưu hóa hiệu suất, giúp giảm kích thước tham số và FLOPS theo một thứ tự rõ ràng.
Các đầu ra từ P3 đến P7 của EfficientNet được kết hợp nhiều lần với tính năng hai chiều từ trên xuống và từ dưới lên Những tính năng hợp nhất này cung cấp cho mạng khả năng tạo ra các dự đoán về đối tượng và hộp giới hạn tương ứng.
EfficientDet là sự kết hợp giữa mạng trục của EfficientNet, BiFPN, dự đoán hộp giới hạn (Bounding box) và mạng dự đoán lớp.
Hình 2.17: Mô hình kiến trúc mạng EfficientDet 2.5.2 Tổng quan về kiến trúc mạng
2.5.2.1 Tổng quan về mạng EfficientDet
Phương pháp chia tỷ lệ kết hợp này không ngừng nâng cao độ chính xác và hiệu quả của mô hình, giúp mở rộng các mô hình hiện có như MobileNet với mức tăng 1,4% độ chính xác trên imagenet và ResNet với mức tăng 0,7%, vượt trội hơn so với các phương pháp chia tỷ lệ truyền thống.
Khi so sánh EfficientNets với các mạng nơ-ron tích chập (CNN) hiện có trên ImageNet, mô hình EfficientNet không chỉ đạt độ chính xác cao hơn mà còn mang lại hiệu quả tốt hơn, đồng thời giảm kích thước tham số và FLOPS một cách đáng kể.
Thu phóng mô hình CNN
Bộ 3 kích thước tỉ lệ của CNN gồm [13]:
- Depth là độ sâu của mạng tương đương với số lớp trong đó.
- Width là chiều rộng của mạng
Ví dụ: một thước đo chiều rộng là số kênh trong lớp Convolution hoặc ảnh RGB thông thường sẽ có 3 kênh.
- Resolution là độ phân giải hình ảnh (là số pixel của ảnh) được chuyển đến CNN.
Khi mở rộng mô hình với các tỉ lệ kích thước khác nhau, cần tuân theo các quy luật riêng biệt Hình 2.18 minh họa ba loại tỉ lệ: a) tỉ lệ chiều rộng, b) tỉ lệ chiều sâu, và c) tỉ lệ độ phân giải.
Mở rộng theo độ sâu (Depth Scaling) liên quan đến việc điều chỉnh số lượng lớp trong mạng nơ-ron để cải thiện khả năng nắm bắt các tính năng phong phú và phức tạp Việc tăng cường độ sâu có thể nâng cao độ chính xác của mô hình, nhưng cũng làm giảm hiệu suất nếu không có đủ dữ liệu Để đạt được hiệu quả tối ưu, việc thêm lớp ẩn chỉ nên được thực hiện khi có tập dữ liệu lớn, nhằm đảm bảo thời gian xử lý hợp lý.
Mở rộng theo chiều rộng (Width Scaling) là quá trình thêm dữ liệu đầu vào hoặc sử dụng nhiều ảnh với nhiều kênh hơn, giúp các lớp mạng học được các tính năng chi tiết hơn Tuy nhiên, tương tự như việc tăng độ sâu, việc mở rộng chiều rộng có thể làm giảm khả năng học các tính năng phức tạp của mạng, dẫn đến giảm độ chính xác.
Mở rộng theo độ phân giải (Resolution Scaling) cho thấy rằng ảnh đầu vào có độ phân giải cao sẽ cung cấp các đặc trưng chi tiết hơn, từ đó cải thiện khả năng suy luận của mô hình về các đối tượng nhỏ Tuy nhiên, điều này cũng dẫn đến việc độ chính xác có thể giảm sút khi độ phân giải tăng lên.
Hình 2.18: Sự khác nhau khi thay đổi lần lượt chiều rộng, độ sâu và độ phân giải của đối tượng.
Thu phóng tỉ lệ kết hợp
Lớp ConvNet thứ nhất được mô tả bằng hàm Y j = F j ( X j ), trong đó F j là toán tử, Y j là tensor đầu ra và X j là tensor đầu vào Kích thước của tensor được xác định bởi các tham số đầu vào.
H j , W j , C j ⟩ trong đó H j vàW j là spatial dimension và C j là channel dimension Một ConvNet N có thể được biểu diễn bằng danh sánh các layer gồm:
Các lớp ConvNet thường được chia thành các giai đoạn, với tất cả các lớp trong mỗi giai đoạn đều sử dụng cùng một kiến trúc Điều này dẫn đến định nghĩa mạng Conv.
L i : biểu thị lớp F i được lặp lại L i lần trong stage i ⟨ H j , W j , C j ⟩ : kích thướt của tensor đầu vào X của lớp i
Khác với các thiết kế ConvNet truyền thống tập trung vào việc tìm kiếm kiến trúc lớp tối ưu F i, việc thu phóng mô hình cho phép điều chỉnh chiều dài mạng (L i), chiều rộng (C i) và độ phân giải (H i, W i) mà không cần thay đổi F i đã được xác định trước Bằng cách giữ nguyên hàm F i, việc thu phóng mô hình giúp đơn giản hóa thiết kế cho các tài nguyên hạn chế Mặc dù vẫn có nhiều khả năng thay đổi cả ba chiều của mỗi lớp, nhưng để thu hẹp không gian tìm kiếm, tất cả các lớp cần được thu phóng đồng nhất với tỷ lệ không đổi Mục tiêu cuối cùng là tối đa hóa độ chính xác của mô hình trong bất kỳ điều kiện tài nguyên hạn chế nào, và vấn đề này có thể được xem như một bài toán tối ưu hóa.
THƯ VIỆN SỬ DỤNG
2.6.1 Thư viện OpenCV (Open Computer Vision)
OpenCV là thư viện mã nguồn mở đa nền tảng, hỗ trợ nhiều hệ điều hành như Windows và Linux, và được sử dụng rộng rãi trong các ngôn ngữ lập trình, đặc biệt là Python Thư viện này rất phổ biến trong các ứng dụng trí tuệ nhân tạo, đặc biệt trong lĩnh vực thị giác máy tính.
Nó hỗ trợ nhiều nền tảng và có sẵn trong nhiều ngôn ngữ lập trình khác nhau, hoạt động hiệu quả nhờ vào việc sử dụng vectơ cho hầu hết các chức năng của nó.
OpenCV có rất nhiều ứng dụng: nhận dạng ảnh, xử lý ảnh, phục hồi ảnh và video, thực tế ảo và các ứng dụng khác.
Hình 2.27: Thư viện OpenCV 2.6.2 Thư viện PyTorch
PyTorch, được phát triển bởi Facebook vào tháng 5 năm 2017, là một thư viện mã nguồn mở hỗ trợ ngôn ngữ Python, giúp xây dựng các dự án học sâu (Deep Learning) Thư viện này cho phép người dùng dễ dàng tạo ra, huấn luyện và thử nghiệm các mô hình nhờ vào tính dễ học, sử dụng, mở rộng và gỡ lỗi PyTorch sử dụng kiểu dữ liệu Tensor, có khả năng lưu trữ nhiều loại dữ liệu như số, vector, ma trận và mảng Nó cũng hỗ trợ tăng tốc độ tính toán bằng cách tận dụng cả CPU và GPU, đồng thời tối ưu hóa các phép toán Ngoài PyTorch, TensorFlow là một framework khác do Google phát triển, cũng phục vụ cho việc xây dựng và huấn luyện các mạng nơ-ron nhân tạo.
- Có khả năng tương thích với bất kì thư viện python khác.
Cung cấp mảng nhiều chiều Tensors với khả năng hỗ trợ nhiều kiểu dữ liệu, cho phép thực hiện các phép toán trên tensor một cách linh hoạt, có thể tính toán và chuyển đổi qua lại giữa CPU và GPU.
- Cung cấp sẵn một lượng tương đối các model và pretrained sử dụng cho việc tuning hoặc khởi tạo trọng số.
So sánh PyTorch với Tensorflow [16]:
- Cộng đồng lớn người dùng để chia sẻ tài nguyên học, giải quyết các vấn đề thì Tensorflow lớn hơn nhiều lần.
Hệ sinh thái của TensorFlow vượt trội hơn PyTorch trong việc xây dựng và mở rộng các mô hình cho sản phẩm thực tế, trong khi PyTorch lại nổi bật trong việc hỗ trợ thực nghiệm và phát triển các ý tưởng mới.
GPU
Bộ xử lý đồ họa (GPU) là một mạch điện tử chuyên dụng, được thiết kế để thao tác và truy cập bộ nhớ đồ họa nhanh chóng, nhằm tăng tốc quá trình tạo ra hình ảnh cho màn hình Ngoài việc xử lý hình ảnh, GPU còn có khả năng xử lý các dữ liệu khác theo yêu cầu của CPU.
GPU được ứng dụng rộng rãi trong các hệ thống nhúng, điện thoại di động, máy tính cá nhân, máy trạm, máy chơi game console và các hệ thống cần xử lý khối lượng lớn dữ liệu Với khả năng thao tác đồ họa và xử lý hình ảnh hiệu quả, GPU hiện đại sử dụng cấu trúc song song cao, cho phép xử lý dữ liệu nhanh hơn so với CPU đa dụng Trong máy tính cá nhân, GPU có thể được trang bị trên card video, tích hợp trên bo mạch chủ hoặc nằm trong một số CPU.
Trước khi GPU ra đời, CPU phải đảm nhận cả việc xử lý chương trình và đồ họa, dẫn đến việc phân bổ tài nguyên không hiệu quả Do đó, công việc đồ họa và văn phòng nhận được tài nguyên như nhau, khiến cho các tác vụ yêu cầu hiệu suất cao không đạt được kết quả mong muốn.
Kể từ khi ra đời, GPU đã giảm bớt khối lượng công việc cho CPU, cho phép CPU tập trung vào việc điều khiển hệ thống theo hoạt động của GPU Điều này giúp giải phóng tài nguyên cho các nhiệm vụ khác, tăng tốc độ xử lý và cải thiện khả năng cung cấp sản phẩm chất lượng cao cho máy tính.
Tính toán song song là phương pháp chia nhỏ các phép tính lớn thành các phép tính độc lập, cho phép thực hiện đồng thời, rất phù hợp với GPU Kết quả từ các phép tính này sẽ được tổng hợp lại để tạo ra kết quả cuối cùng, vì vậy GPU là lựa chọn lý tưởng cho các ứng dụng trong lĩnh vực Deep Learning.
CPU Nvidia và phần mềm CUDA: CUDA là phần mềm được phát triển để tối ưu hóa hiệu suất của phần cứng GPU do Nvidia sản xuất, cho phép xây dựng các ứng dụng tăng tốc tính toán thông qua khả năng xử lý song song của GPU Ngoài ra, PyTorch cũng được tích hợp sẵn trong CUDA, mang lại lợi ích cho các nhà phát triển trong việc xây dựng các mô hình học sâu.
TỔNG QUAN VỀ XỬ LÍ ẢNH
Xử lý ảnh là lĩnh vực khoa học và công nghệ mới mẻ, đang phát triển nhanh chóng và thu hút sự quan tâm từ nhiều trung tâm nghiên cứu và ứng dụng.
Xử lý ảnh là quá trình tự động biến đổi một hình ảnh thành một ảnh khác thông qua máy tính điện tử, tùy thuộc vào mục đích sử dụng của người dùng.
Để hiểu về xử lý ảnh, người học cần trang bị kiến thức chuyên môn vững chắc, với nền tảng dựa trên xử lý tín hiệu số Môn học này bao gồm các khái niệm cơ bản như tích chập, biến đổi Fourier, biến đổi Laplace và các bộ lọc hữu hạn Ngoài ra, kiến thức toán học như đại số tuyến tính và xác suất thống kê cũng rất quan trọng trong phân tích và nhận dạng ảnh Khi xây dựng hệ thống xử lý ảnh, bước đầu tiên là thu nhận ảnh từ thế giới bên ngoài qua các thiết bị như camera, với ảnh có thể là màu hoặc đen trắng, sau đó chuyển đổi thành ảnh số để thuận tiện cho các bước xử lý tiếp theo.
Phân tích sơ đồ này gồm những thành phần chính sau đây:
Phần thu nhận ảnh là giai đoạn quan trọng trong việc xây dựng hệ thống xử lý ảnh, với khả năng nhận ảnh từ camera màu hoặc đen trắng Ảnh thường được thu qua camera tương tự, như camera ống chuẩn CCIR với tần số 1/25, mỗi ảnh gồm 25 dòng, hoặc camera đã số hóa như CCD (Change Coupled Device) với photodiot tạo cường độ sáng tại mỗi điểm ảnh Camera quét dòng thường được sử dụng để tạo ra ảnh hai chiều, và chất lượng ảnh thu nhận phụ thuộc vào thiết bị và điều kiện môi trường như ánh sáng và phong cảnh.
Sau khi thu nhận, hình ảnh có thể bị nhiễu và có độ tương phản thấp Do đó, cần sử dụng bộ tiền xử lý để lọc nhiễu và nâng cao độ tương phản, giúp hình ảnh trở nên rõ nét và sắc sảo hơn.
Phân vùng ảnh là quá trình tách một bức ảnh thành các vùng thành phần để phục vụ cho phân tích và nhận dạng Ví dụ, trong việc nhận dạng chữ hoặc mã vạch trên phong bì thư để phân loại bưu phẩm, cần chia nhỏ các câu, chữ, và số thành các đơn vị riêng biệt Đây là một trong những bước phức tạp nhất trong xử lý ảnh, dễ dẫn đến lỗi và ảnh hưởng đến độ chính xác của kết quả nhận dạng Do đó, chất lượng của quá trình phân vùng ảnh có ảnh hưởng lớn đến hiệu quả nhận dạng cuối cùng.
Biểu diễn ảnh số là quá trình chuyển đổi đầu ra ảnh sau phân đoạn thành dạng thích hợp cho xử lý máy tính, bao gồm các điểm ảnh của vùng ảnh và mã liên kết với các vùng lân cận Trích chọn đặc trưng (Feature Selection) là bước quan trọng để xác định các tính chất của ảnh, giúp phân biệt các lớp đối tượng khác nhau trong ảnh nhận được Chẳng hạn, trong nhận dạng ký tự trên phong bì thư, việc mô tả các đặc trưng của từng ký tự cho phép phân biệt chúng một cách hiệu quả.
- Nhận dạng và nội suy:
Nhận dạng ảnh là quá trình xác định và phân tích hình ảnh bằng cách so sánh với các mẫu đã học trước đó Nội suy là quá trình phán đoán dựa trên nhận dạng, ví dụ như chuyển đổi các ký tự trên phong bì thành mã điện thoại Có nhiều phương pháp phân loại ảnh, và theo lý thuyết nhận dạng, các mô hình toán học được chia thành hai loại chính: nhận dạng theo tham số và nhận dạng theo cấu trúc.
Hiện nay, có nhiều phương pháp nhận dạng phổ biến được áp dụng trong khoa học và công nghệ, bao gồm nhận dạng ký tự (cả chữ in và chữ viết tay), nhận dạng văn bản, nhận dạng vân tay, nhận dạng mã vạch và nhận dạng khuôn mặt.
Ảnh là một đối tượng phức tạp, bao gồm đường nét, độ sáng tối và dung lượng điểm ảnh, cùng với môi trường thu ảnh và nhiễu Trong quá trình xử lý và phân tích ảnh, người ta không chỉ đơn giản hóa các phương pháp toán học để thuận tiện mà còn cố gắng mô phỏng quy trình tiếp nhận và xử lý ảnh giống như con người Hiện nay, nhiều bước xử lý đã áp dụng các phương pháp trí tuệ nhân tạo, nhờ đó phát huy được các cơ sở tri thức trong lĩnh vực này.
Sau khi số hóa, ảnh sẽ được lưu trữ trong bộ nhớ hoặc chuyển tiếp để phân tích Việc lưu trữ ảnh thô trực tiếp yêu cầu dung lượng bộ nhớ lớn và không hiệu quả Do đó, các ảnh thô thường được mã hóa lại theo các đặc điểm gọi là đặc trưng ảnh, bao gồm biên ảnh và vùng ảnh Một số phương pháp biểu diễn ảnh phổ biến được áp dụng trong quá trình này.
+ Biểu diễn bằng mã chạy (Run-Length Code).
+ Biểu diễn bằng mã xích (Chaine -Code).
+ Biểu diễn bằng mã tứ phân (Quad-Tree Code).
2.8.2 Một số ứng dụng của xử lý ảnh
Xử lý ảnh đã mang lại nhiều lợi ích cho con người trong nhiều lĩnh vực, tạo ra những cái nhìn tích cực về công nghệ này Dưới đây là một số ứng dụng tiêu biểu của nó.
- Khôi phục hình ảnh, chỉnh sửa, điều chỉnh độ phân giải.
- Thị giác máy tính và robot.
- Trong do thám, thám hiển và quân sự
Chọn thông số tối ưu
Mạng CNN xử lý dựa trên thông số tập tin
Mạng CNN xử lý dựa trên thông số tập tin
Mạng CNN xử lý dựa trên thông số tập tin
Mạng CNN xử lý dựa trên thông số tập tin
Mạng CNN xử lý dựa trên thông số tập tin
Mạng CNN xử lý dựa trên thông số tập tin
Mạng CNN xử lý dựa trên thông số tập tin
Hình 4.29 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Hình 4.30 Ma trận tương quan của mô hình.
Hình 4.31 Giao diện của ứng dụng nhận dạng cảm xúc.
Hình 4.32 Ma trận tương quan của mô hình.
Hình 4.33 Giao diện của ứng dụng nhận dạng cảm xúc.Hình 4.34 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Hình 4.35 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Tải tập tin chứa trọng số
Hình 4.36 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Hình 4.37 Ma trận tương quan của mô hình.
Hình 4.38 Giao diện của ứng dụng nhận dạng cảm xúc.
Hình 4.39 Ma trận tương quan của mô hình.
Hình 4.40 Giao diện của ứng dụng nhận dạng cảm xúc.Hình 4.41 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Hình 4.42 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Dữ liệu đầu vào (Ảnh đầu vào)
Hình 4.29 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Hình 4.30 Ma trận tương quan của mô hình.
Hình 4.31 Giao diện của ứng dụng nhận dạng cảm xúc.
Hình 4.32 Ma trận tương quan của mô hình.
Hình 4.33 Giao diện của ứng dụng nhận dạng cảm xúc.Hình 4.34 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Hình 4.35 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Tải tập tin chứa trọng số
Hình 4.36 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Hình 4.37 Ma trận tương quan của mô hình.
Hình 4.38 Giao diện của ứng dụng nhận dạng cảm xúc.
Hình 4.39 Ma trận tương quan của mô hình.
Hình 4.40 Giao diện của ứng dụng nhận dạng cảm xúc.Hình 4.41 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Hình 4.42 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Hình 4.29 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Hình 4.30 Ma trận tương quan của mô hình.
Hình 4.31 Giao diện của ứng dụng nhận dạng cảm xúc.
Hình 4.32 Ma trận tương quan của mô hình.
Hình 4.33 Giao diện của ứng dụng nhận dạng cảm xúc.Hình 4.34 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Hình 4.35 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Tải tập tin chứa trọng số
Hình 4.36 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Hình 4.37 Ma trận tương quan của mô hình.
Hình 4.38 Giao diện của ứng dụng nhận dạng cảm xúc.
Hình 4.39 Ma trận tương quan của mô hình.
Hình 4.40 Giao diện của ứng dụng nhận dạng cảm xúc.Hình 4.41 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số
Hình 4.42 Ma trận tương quan của mô hình.Tải tập tin chứa trọng số