TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ======***====== BÀI TẬP LỚN TRÍ TUỆ NHÂN TẠO Đề tài Tìm hiểu về mạng CNN và ứng dụng nhận dạng dấu vân tay Hà Nội,2023 LỜI CẢM ƠN Em xin gửi[.]
Nơ ron nhân tạo
Lịch sử của nơ ron nhân tạo
Vào năm 1943, nhà thần kinh học Warren McCulloch đã cùng nhà toán học
Walter Pitts đã viết một cuốn sách khám phá cách hoạt động của mạng thần kinh Ông và nhóm của mình đã tiến hành mô phỏng một mạng thần kinh đơn giản trên một mạch điện.
Vào năm 1949, Donald Hebb đã viết cuốn sách Organization of Behavior Điểm nhấn chính là mạng thần kinh nào được sử dụng nhiều sẽ được tăng cường.
In 1959, David Hubel and Torsten Wiesel published the book "Receptive Fields of Single Neurons in the Cat's Striate Cortex," which detailed the responses of visual neurons in cats and explored how these animals perceive and recognize shapes within their cortical architecture.
Hình 1.1 Hình ảnh thí nghiệm của David Hubel và Torsten Wiesel trên mèo [10]
Vào năm 1989, Yann LeCun đã áp dụng thuật toán học cho mạng nơ ron lan truyền ngược vào kiến trúc mạng nơ ron tích chập của Fukushima Một vài năm sau, LeCun công bố LeNet-5, một trong những mạng nơ ron tích chập sơ khai nhất Dù ra đời từ lâu, LeNet-5 vẫn để lại dấu ấn mạnh mẽ trong lĩnh vực trí tuệ nhân tạo, với nhiều thành phần thiết yếu được sử dụng trong các mạng nơ ron tích chập hiện đại ngày nay.
Cấu tạo và quá trình xử lý của một nơ ron sinh học
Hình 1.2: Hình ảnh một nơ ron sinh học [14]
Một nơ ron gồm có: thân nơ ron, tua gai thần kinh, sợi trục thần kinh, trong đó:
● Thân nơ ron: là nơi xử lý các tín hiệu được đưa vào;
● Tua gai thần kinh: là nơi nhận các xung điện vào trong nơ ron;
● Sợi trục thần kinh: là nơi đưa tín hiệu ra ngoài sau khi được xử lý bởi nơ ron;
Khớp thần kinh là vị trí quan trọng nằm giữa tua gai thần kinh và sợi trục thần kinh, đóng vai trò là điểm liên kết giữa đầu ra của nơ ron này với đầu vào của nơ ron khác.
Cấu tạo và quá trình xử lý của một nơ ron nhân tạo
Dựa trên cấu trúc của nơ ron sinh học, các nhà khoa học đã nghiên cứu và lập trình để phát triển kiến trúc của nơ ron nhân tạo.
Hình 1.3: Công thức của một nơ ron nhân tạo [41]
Mạng nơ ron nhân tạo có thể mô tả đơn giản lại như sau:
Danh sách các đầu vào của một nơ ron bao gồm các thuộc tính đầu vào, thường có số lượng lớn hơn một Điều này là do dữ liệu thô đầu vào thường được biểu diễn dưới dạng một vector nhiều chiều, hoặc có thể là do nhiều nơ ron từ các tầng trước kết nối tới một nơ ron ở tầng sau.
Trọng số liên kết là giá trị thể hiện độ mạnh yếu của các liên kết trong mạng nơ-ron, ảnh hưởng đến cách tín hiệu được truyền đến các nơ-ron nhân tạo khác.
Hàm tổng là quá trình tính toán tổng các tích của các đầu vào với trọng số liên kết, mô phỏng các khớp kết nối Kết quả này sau đó được đưa qua hàm tính tổng để xác định giá trị cuối cùng trước khi được đưa vào hàm truyền.
Thiên lệch (b) là giá trị được thêm vào sau khi tính toán hàm tổng, nhằm điều chỉnh chức năng của hàm kích hoạt sang trái hoặc phải trước khi đưa vào hàm truyền Việc thêm thiên lệch giúp cải thiện quá trình huấn luyện của mạng nơ ron Hình ảnh minh họa vị trí của thiên lệch trong mạng nơ ron thực tế.
Hình ảnh huấn luyện khi có và không có thiên lệch:
Hàm kích hoạt (Activation functions): Hàm này được sử dụng để tính toán giá trị của đầu ra dựa vào giá trị của hàm Tổng.
Các mô hình hàm kích hoạt của mạng nơ ron nhân tạo
Hàm Sigmoid được ưa chuộng trong các mô hình dự đoán xác suất vì giá trị đầu ra nằm trong khoảng từ 0 đến 1 Khi đầu vào là một số dương lớn, đầu ra của hàm gần bằng 1, trong khi khi đầu vào nhỏ hơn 0, đầu ra gần bằng 0 Tuy nhiên, việc tối ưu hóa hàm Sigmoid gặp khó khăn do khi đầu vào là một số rất lớn, đầu ra sẽ xấp xỉ 1 hoặc 0, dẫn đến tốc độ hội tụ chậm.
Hàm TanH được ưa chuộng vì giá trị đầu ra nằm trong khoảng từ -1 đến 1, phù hợp với các mô hình đầu ra có ba giá trị: âm, trung tính (0) và dương Điều này được minh họa rõ ràng trong hình ảnh kèm theo.
Hình 1.9 Đồ thị hàm TanH
Hàm tuyến tính áp dụng thao tác nhận dạng trên dữ liệu với dữ liệu đầu ra tỷ lệ thuận với dữ liệu đầu vào.
Hàm RELU được sử dụng khi cần đầu ra trong khoảng (0, +∞) và có tốc độ tính toán nhanh, nhanh chóng gán các giá trị âm thành 0, phù hợp cho việc huấn luyện từ dữ liệu chuẩn Tuy nhiên, nhược điểm của hàm RELU là không ánh xạ các giá trị âm một cách thích hợp.
Hàm ELU, một biến thể của hàm RELU, được sử dụng phổ biến khi ngưỡng đầu ra nằm trong khoảng (-1, +∞) Nó giải quyết vấn đề của hàm RELU khi không ánh xạ được các giá trị âm.
Mạng nơ ron tích chập
Khái niệm về mạng nơ ron tích chập
Mạng nơ ron tích chập (CNN) là một mô hình học sâu tiên tiến, được sử dụng phổ biến trong nhận diện và xử lý ảnh nhờ vào tốc độ xử lý nhanh và độ chính xác cao Khác với mạng nơ ron truyền thống chỉ có cấu trúc một chiều, CNN có cấu trúc ba chiều bao gồm chiều cao, chiều rộng và chiều sâu Hai khái niệm quan trọng trong CNN là kết nối cục bộ và chia sẻ tham số, giúp giảm số lượng trọng số cần huấn luyện và tăng tốc độ tính toán hiệu quả.
Hình 1.14 Hình minh họa một ví dụ sử dụng CNN để phân lớp đồ vật [20]
Mô hình mạng nơ ron tích chập
Có ba tầng chính để xây dựng kiến trúc cho một mạng nơ ron tích chập:
3 Tầng được kết nối đầy đủ (fully-connected).
Tầng kết nối đầy đủ hoạt động tương tự như các mạng nơ ron thông thường, trong khi tầng chập thực hiện nhiều phép tích chập trên tầng trước Đồng thời, tầng gộp giúp giảm kích thước mẫu, tối ưu hóa quá trình xử lý dữ liệu.
Các mạng nơ ron tích chập thường sử dụng kiến trúc chồng ba tầng để tạo ra cấu trúc mạng hoàn chỉnh Mỗi khối 2x2 của tầng trước đó đóng vai trò quan trọng trong việc xây dựng mạng nơ ron tích chập Ví dụ minh họa cho một kiến trúc mạng nơ ron tích chập đầy đủ sẽ giúp làm rõ cách thức hoạt động của mô hình này.
Xây dựng mạng nơ ron tích chập
1.2.3.1 Mạng được kết nối cục bộ
Trong xử lý hình ảnh, thông tin chủ yếu được lưu trữ dưới dạng các điểm ảnh (pixel) Một hình ảnh RGB có kích thước 512x512 pixel sẽ tạo ra 786.432 tham số đầu vào, tính toán từ công thức 512 x 512 x 3 Điều này cho thấy việc sử dụng mạng nơ ron với nhiều tham số có thể trở nên phức tạp.
Việc áp dụng mạng nơ ron kết nối đầy đủ yêu cầu tính toán hơn 3 triệu nơ ron, dẫn đến quá trình học chậm và quá tải khả năng tính toán của máy tính hiện tại.
Qua nghiên cứu về xử lý ảnh, các nhà khoa học nhận thấy rằng các tính năng trong hình ảnh thường mang tính cục bộ, dẫn đến việc chú trọng vào các đặc trưng cấp thấp trong quá trình xử lý Do đó, việc chuyển đổi từ mạng kết nối đầy đủ sang mạng kết nối cục bộ giúp giảm độ phức tạp tính toán Đây là một trong những ý tưởng chính của CNN.
Giống như trong xử lý hình ảnh thông thường, chúng ta có thể kết nối một khối vuông ma trận với nơ ron, thường có kích thước 3x3, 5x5 hoặc 7x7, tương tự như một cửa sổ trượt Phương pháp này giúp giảm số lượng tham số mà không làm mất thông tin, do tính lặp trong không gian của hình ảnh Để tăng cường khả năng trích xuất thông tin, các mạng nơ ron kết nối khối với nhiều nơ ron khác nhau, với độ sâu trong các tầng xác định số lần kết nối khu vực với các nơ ron khác Ví dụ, nếu một khu vực được kết nối với 5 nơ ron khác nhau, độ sâu sẽ là năm trong tầng mới.
Trong thực tế, tất cả thông tin độ sâu (như kênh 3 RGB) có thể được kết nối với nơ-ron tiếp theo do kết nối cục bộ trong không gian và chiều sâu đầy đủ Tuy nhiên, trong ví dụ này, chỉ có thông tin cục bộ về chiều cao và chiều rộng được kết nối Do đó, có thể xuất hiện các tham số cho nơ-ron sau lớp màu xanh nếu chúng ta áp dụng cửa sổ.
Biến thứ nhất và thứ hai là chiều cao và chiều rộng của kích thước cửa sổ và biến thứ ba là độ sâu của lớp.
Khi di chuyển cửa sổ bên trong hình ảnh, kích thước của tầng tiếp theo sẽ giảm từ 32 xuống 28 nếu chúng ta chỉ di chuyển cửa sổ 1 pixel mỗi lần Để duy trì kích thước, ta cần thêm phần trống vào đường viền Nếu đệm với 2 pixel, các nơ ron ở lớp tiếp theo sẽ giữ được kích thước chiều cao và chiều rộng Sử dụng kích thước cửa sổ w, ta sẽ có một vùng tích chập với kích cỡ của cửa sổ mới là pixel, và thông tin đường viền sẽ không ảnh hưởng nhiều vì các giá trị đó chỉ được sử dụng một lần.
Bài viết này sẽ giải thích chi tiết về bước nhảy của cửa sổ trượt, cụ thể là khoảng cách thay đổi của cửa sổ sau mỗi lần di chuyển Chẳng hạn, nếu bước nhảy được đặt là 2, cửa sổ trượt sẽ bao phủ một vùng nhất định.
Sau đó, cửa sổ thứ hai bao phủ vùng và cửa sổ thứ 3 bao phủ vùng
Khi sử dụng bước nhảy 1 và kích thước cửa sổ trong hình ảnh mà không bù viền, chúng ta sẽ có các nơ ron ở lớp tiếp theo Nếu thay đổi bước nhảy từ 1 thành 2 mà giữ nguyên các tham số khác, nơ ron ở lớp tiếp theo cũng sẽ xuất hiện Điều này cho thấy rằng với bước nhảy s và kích thước cửa sổ trong ảnh, nơ ron ở lớp tiếp theo sẽ luôn có mặt Tuy nhiên, khi áp dụng bước nhảy 3 và giữ nguyên các tham số, kết quả không phải là số nguyên, điều này cần được lưu ý.
3 không thể dùng vì chúng ta không thể có được một khối hoàn chỉnh trong một mạng nơ ron.
Trong ví dụ ở mục 1.3.2.1, số lượng nơ ron ở tầng tiếp theo có bước nhảy 1, kích thước cửa sổ 5 x 5 và không có đệm, với độ sâu là 5 Mỗi nơ ron sẽ có tham số, dẫn đến việc tầng tiếp theo cũng sẽ có tham số Chúng ta có thể chia sẻ các tham số theo từng độ sâu, cho phép nơ ron ở mỗi tầng ẩn sử dụng tham số giống nhau.
Số lượng tham số trong mạng nơ ron tích chập giảm đáng kể nhờ vào việc sử dụng tham số chung cho mỗi tầng Các nơ ron ở mỗi độ sâu trong tầng tiếp theo áp dụng tích chập cho tầng trước đó, tạo ra một quá trình học tập tương tự như học lõi tích chập Chính vì vậy, các mạng nơ ron này được gọi là mạng nơ ron tích chập.
Trong mô hình nơ ron truyền thống, hàm sigmoid thường được sử dụng làm hàm kích hoạt Tuy nhiên, Krizhevsky đã thử nghiệm với hàm kích hoạt RELU và so sánh hiệu quả của nó với hàm sigmoid trong các mạng nơ ron tích chập (CNNs) Kết quả cho thấy mô hình sử dụng RELU cần ít thời gian lặp hơn nhưng vẫn đạt tỷ lệ lỗi huấn luyện tương đương.
Mô hình sử dụng hàm kích hoạt RELU (đường liền nét) cho thấy hiệu quả cao hơn so với hàm Sigmoid (đường đứt nét), khi cần ít vòng lặp hơn để đạt được tỉ lệ lỗi chấp nhận được Chính vì lý do này, hầu hết các mô hình CNN hiện nay đều ưa chuộng sử dụng RELU làm hàm kích hoạt.
Tầng gộp giúp giảm kích thước hình ảnh ngay sau khi thực hiện tích chập, giữ lại các đặc điểm nổi bật nhất Điều này không chỉ giảm mức độ tính toán cho hình ảnh lớn mà còn bảo toàn các đặc điểm quan trọng.
Mặc dù mạng nơ ron sử dụng các kết nối cục bộ và chia sẻ tham số, nhưng số lượng tham số vẫn rất lớn, dẫn đến nguy cơ quá khớp (overfitting) với tập dữ liệu nhỏ Để khắc phục điều này, mạng nơ ron thường tích hợp các tầng gộp nhằm giảm số lượng tham số và cải thiện thời gian tính toán Tầng gộp hoạt động bằng cách áp dụng hàm max để lấy mẫu xuống từ tầng trước, hoạt động độc lập trên từng tầng Có thể điều chỉnh lượng pixel khi di chuyển cửa sổ trượt hoặc bước nhảy, tương tự như tầng tích chập Ví dụ, với kích thước cửa sổ trượt và bước nhảy là 2, hàm max sẽ lấy giá trị tối đa từ mỗi cửa sổ để đại diện cho giá trị của tầng tiếp theo.
Có hai loại tầng gộp trong mạng nơ ron: gộp chung (traditional pooling) và gộp nhóm (overlapping pooling) Gộp chung sử dụng kích thước cửa sổ trượt bằng bước nhảy, trong khi gộp nhóm có kích thước cửa sổ trượt lớn hơn bước nhảy Thực tế cho thấy, các mạng nơ ron thường áp dụng kích thước cửa sổ và bước nhảy là 2 cho cả hai loại gộp, vì việc tăng kích thước cửa sổ có thể dẫn đến mất mát các đặc tính quan trọng của dữ liệu.
Tìm hiểu thư viện TensorFlow
Giới thiệu về thư viện TensorFlow
TensorFlow là thư viện phần mềm mã nguồn mở cho máy học, hỗ trợ nhiều tác vụ nhận thức và hiểu ngôn ngữ Thư viện này hiện được 50 đội ngũ sử dụng trong hàng loạt sản phẩm thương mại của Google như nhận dạng giọng nói, Gmail, Google Photos và tìm kiếm Ban đầu, TensorFlow được phát triển bởi đội Google Brain phục vụ nghiên cứu và sản xuất của Google, và đã được phát hành theo giấy phép mã nguồn mở Apache 2.0 vào ngày 9/11/2015.
TensorFlow là thư viện mã nguồn mở toàn diện, chủ yếu phục vụ cho các ứng dụng Học máy Thư viện này sử dụng luồng dữ liệu và lập trình có thể phân biệt để thực hiện nhiều nhiệm vụ khác nhau, với trọng tâm là đào tạo và suy luận các mạng nơ-ron sâu.
TensorFlow là thư viện mã nguồn mở chuyên dụng cho tính toán machine learning quy mô lớn Nó tích hợp nhiều mô hình và thuật toán machine learning cùng với deep learning, giúp thực hiện các phép toán một cách hiệu quả.
TensorFlow cung cấp các API đa ngôn ngữ để xây dựng và huấn luyện mô hình máy học (ML), bao gồm Python, C++, Java và Go Nó cũng hỗ trợ các công cụ triển khai mô hình trên nhiều thiết bị, từ máy tính cá nhân đến máy chủ lớn Với nhiều tính năng hữu ích, TensorFlow là lựa chọn hàng đầu cho việc phát triển và tối ưu hóa các mô hình ML.
TensorFlow sử dụng đồ thị tính toán để biểu diễn các phép toán và dữ liệu trong các mô hình máy học (ML), giúp tối ưu hóa quá trình tính toán và triển khai mô hình trên nhiều thiết bị khác nhau.
TensorFlow mang lại tính linh hoạt cao trong việc xây dựng các mô hình học máy phức tạp, với khả năng tạo ra nhiều lớp và kiến trúc khác nhau Bằng cách sử dụng các API của TensorFlow, bạn có thể dễ dàng phát triển các mô hình từ đơn giản đến phức tạp, đáp ứng nhu cầu từ cơ bản đến nâng cao.
TensorFlow có tính di động cao, cho phép chạy trên nhiều thiết bị từ máy tính cá nhân đến máy chủ lớn, giúp triển khai các mô hình machine learning (ML) trên nhiều nền tảng, bao gồm cả điện thoại thông minh và máy chủ đám mây Ví dụ đơn giản về TensorFlow là khởi tạo hai biến x và y với giá trị 3 và 4, sau đó định nghĩa phép toán f sử dụng các biến và toán tử, và cuối cùng là khởi tạo các biến và chạy đồ thị tính toán để tính giá trị của f.
Các Option tải dữ liệu vào TensorFlow
Có hai phương pháp chính để tải dữ liệu vào TensorFlow: đầu tiên là tải dữ liệu vào bộ nhớ, đây là cách đơn giản nhất khi bạn nạp toàn bộ dữ liệu vào bộ nhớ dưới dạng một mảng đơn Thứ hai là sử dụng Pipeline dữ liệu TensorFlow, với API tích hợp sẵn, giúp bạn dễ dàng tải dữ liệu, thực hiện các phép toán và cung cấp cho thuật toán machine learning TensorFlow Dataset API là công cụ hiệu quả hỗ trợ xử lý dữ liệu, cho phép xây dựng các pipeline đầu vào phức tạp từ các thành phần đơn giản và có thể tái sử dụng.
Pipeline cho mô hình ảnh có thể tổng hợp dữ liệu từ các tệp trong hệ thống tệp phân tán, áp dụng biến đổi ngẫu nhiên cho từng hình ảnh và trộn các hình ảnh ngẫu nhiên thành một batch để huấn luyện Trong khi đó, pipeline cho mô hình văn bản liên quan đến việc trích xuất ký hiệu từ dữ liệu văn bản thô, chuyển đổi chúng thành định danh nhúng thông qua bảng tra cứu và gom nhóm các chuỗi có độ dài khác nhau.
API TensorFlow Dataset cung cấp hai phương pháp để tạo tập dữ liệu: một là xây dựng từ nguồn dữ liệu thô như hình ảnh lưu trữ trên ổ cứng hoặc văn bản từ nhiều tệp; hai là xây dựng từ một hoặc nhiều đối tượng tf.data.Dataset.
Tìm hiểu thư viện Keras
Keras là thư viện mã nguồn mở bằng Python, được phát triển bởi Google Brain, giúp xây dựng và đào tạo các mô hình học sâu Với API dễ sử dụng, Keras phục vụ cả người dùng cuối và các nhà nghiên cứu, cho phép xây dựng các mô hình phức tạp Thư viện này linh hoạt và có thể mở rộng, hỗ trợ nhiều loại mô hình học sâu như mạng nơ-ron tích chập (CNN), mạng nơ-ron tái phát (RNN) và mạng kết hợp (CNN + RNN) Ngoài ra, Keras còn cho phép đào tạo mô hình trên cả CPU và GPU, giúp tăng tốc quá trình đào tạo.
Keras là một thư viện học sâu phổ biến được sử dụng rộng rãi bởi các nhà nghiên cứu và phát triển trên toàn thế giới, phục vụ cho nhiều ứng dụng như nhận dạng hình ảnh, xử lý ngôn ngữ tự nhiên và phân tích dữ liệu Thư viện này nổi bật với tính linh hoạt và khả năng mở rộng, cho phép xây dựng nhiều loại mô hình học sâu khác nhau Keras cũng cung cấp một API dễ sử dụng, giúp người dùng nhanh chóng bắt đầu xây dựng mô hình Đặc biệt, Keras hỗ trợ đào tạo trên cả CPU và GPU, tăng tốc quá trình huấn luyện Với cộng đồng lớn và tích cực, người dùng có thể tìm thấy nhiều tài nguyên hỗ trợ, bao gồm tài liệu, hướng dẫn và khóa học trực tuyến Tham gia cộng đồng Keras trên GitHub cũng là một cách tuyệt vời để nhận được sự hỗ trợ từ các nhà phát triển khác.
Keras là thư viện mã nguồn mở bằng Python, chuyên dùng để xây dựng và đào tạo mô hình học sâu Được phát triển bởi nhóm kỹ sư tại Google Brain, Keras cung cấp API dễ sử dụng cho người dùng cuối, đồng thời hỗ trợ các nhà nghiên cứu trong việc phát triển các mô hình học sâu phức tạp.
Keras là một thư viện linh hoạt và mở rộng, cho phép xây dựng nhiều loại mô hình học sâu như mạng nơ-ron tích chập (CNN), mạng nơ-ron tái phát (RNN) và mạng nơ-ron kết hợp (CNN + RNN) Thư viện này hỗ trợ đào tạo trên cả CPU và GPU, giúp tăng tốc quá trình học Keras được sử dụng rộng rãi bởi các nhà nghiên cứu và phát triển toàn cầu, phục vụ cho nhiều ứng dụng như nhận dạng hình ảnh, xử lý ngôn ngữ tự nhiên và phân tích dữ liệu.
Keras là một thư viện mã nguồn mở viết bằng Python, nổi bật với tính linh hoạt và khả năng mở rộng, cho phép xây dựng nhiều loại mô hình học sâu như mạng nơ-ron tích chập (CNN) và mạng nơ-ron tái phát (RNN) Với API dễ sử dụng, Keras giúp người dùng nhanh chóng bắt đầu xây dựng và đào tạo mô hình trên cả CPU và GPU, tối ưu hóa tốc độ đào tạo Thư viện này được phát triển bởi Google Brain và được sử dụng rộng rãi trong các ứng dụng như nhận dạng hình ảnh, xử lý ngôn ngữ tự nhiên và đặc biệt là nhận dạng dấu vân tay Keras có thể đào tạo các mô hình học sâu phân biệt các dấu vân tay, phục vụ cho việc xác thực danh tính, phát hiện gian lận và truy vết tội phạm, với dữ liệu thu thập từ nhiều nguồn khác nhau như cơ sở dữ liệu của cảnh sát và máy quét dấu vân tay cá nhân.
Các mô hình học sâu được đào tạo trên tập dữ liệu dấu vân tay có khả năng nhận diện các đặc điểm như hình dạng, kích thước và vị trí của các rãnh và đường vân Sau khi hoàn thành quá trình đào tạo, những mô hình này có thể xác định dấu vân tay của từng cá nhân Keras đóng vai trò quan trọng trong việc tự động hóa các nhiệm vụ phân tích dấu vân tay, từ việc tìm kiếm các đặc điểm cụ thể đến đo khoảng cách giữa các điểm vân tay, giúp tiết kiệm thời gian và nâng cao độ chính xác so với phương pháp thủ công trước đây Ngoài ra, Keras còn cho phép tạo ra các mô hình hình ảnh dấu vân tay, giúp hiển thị và so sánh các dấu vân tay một cách dễ dàng Nhìn chung, Keras là một công cụ mạnh mẽ giúp cải thiện hiệu quả và độ chính xác trong nhận dạng dấu vân tay.
ỨNG DỤNG NHẬN DẠNG DẤU VÂN TAY
Tạo tập dữ liệu
Sử dụng dữ liệu từ 600 bức ảnh của các cá nhân để huấn luyện và kiểm tra mô hình nhận dạng Những bức ảnh này được chụp từ nhiều góc độ khác nhau nhằm nâng cao độ chính xác trong quá trình nhận diện.
Các bước thực hiện
2.2.1.Kết nối Google Colaboratory với drive
2.2.2 Import các thư viện cần thiết cho quá trình training và tạo model CNN
2.2.3 Lấy dữ liệu thông qua đường dẫn file
2.2.4 Xuất hình dạng của tất cả các bộ dữ liệu để xác nhận công việc trước
2.2.5 Xác định/xây dựng mô hình
Xây dựng hai mô hình với net=2, tôi đã giới thiệu một số phương pháp để ngăn chặn việc trang bị quá mức, trong đó bao gồm chuẩn hóa L2 và các kỹ thuật chuẩn hóa khác.
Mô hình mạng nơ-ron tích chập (CNN) đơn giản có tên là `SubjectID_Mod` được xây dựng bằng thư viện Keras, áp dụng các kỹ thuật như BatchNormalization, chuẩn hóa Dropout, EarlyStopping và ReduceLROnPlateau để cải thiện hiệu suất và độ chính xác của mô hình.
1 Khởi tạo một mô hình tuần tự (Sequential) với tên `SubjectID_Mod`.
2 Thêm lớp tích chập 2D đầu tiên với 32 bộ lọc, kích thước kernel là (5, 5), hàm kích hoạt là ReLU và điều chuẩn L2 với hệ số 0.001 Đầu vào của lớp này có kích thước (96, 96, 1).
3 Thêm lớp chuẩn hóa batch (BatchNormalization).
4 Thêm lớp gộp cực đại 2D (MaxPool2D) với kích thước (2, 2).
5 Thêm lớp tích chập 2D thứ hai với 64 bộ lọc, kích thước kernel là (5, 5), hàm kích hoạt là ReLU và điều chuẩn L2 với hệ số 0.001.
6 Thêm lớp chuẩn hóa batch.
7 Thêm lớp gộp cực đại 2D với kích thước (2, 2).
8 Thêm lớp tích chập 2D thứ ba với 128 bộ lọc, kích thước kernel là (3, 3), hàm kích hoạt là ReLU và điều chuẩn L2 với hệ số 0.001.
9 Thêm lớp chuẩn hóa batch.
10 Thêm lớp gộp cực đại 2D với kích thước (2, 2).
11 Thêm lớp Dropout với tỷ lệ bỏ qua là 0.3.
12 Thêm lớp duỗi phẳng (Flatten).
13 Thêm lớp Dense với 256 nơ-ron và hàm kích hoạt ReLU.
14 Thêm lớp Dropout với tỷ lệ bỏ qua là 0.4.
15 Thêm lớp Dense cuối cùng với số nơ-ron bằng giá trị trong `final_Dense_units` và hàm kích hoạt softmax.
Sau khi hoàn thành việc xây dựng mô hình kiến trúc, đoạn mã sẽ biên dịch mô hình bằng cách sử dụng trình tối ưu Adam với tốc độ học là 0.0001 Hàm mất mát được áp dụng là entropy chéo và quá trình đánh giá dựa trên độ chính xác.
Cuối cùng, đoạn code in ra thông tin chi tiết của mô hình thông qua phương thức
2.2.7 Lưu ảnh vào X và nhãn vào y
2.2.8 Lấy ngẫu nhiên một ảnh từ dữ liệu test và dự đoán