TỔNG QUAN
Lý do chọn đề tài
Trong bối cảnh xã hội hiện đại ngày nay, sự phát triển không ngừng của công nghệ đã dẫn đến việc tạo ra các máy móc, thiết bị và robot tự động phục vụ cho con người Những công nghệ này giúp con người thực hiện các công việc phức tạp, yêu cầu sức lực và trí tuệ Để đạt được những tiến bộ này, con người đã áp dụng công nghệ Machine Learning, một công nghệ tiên tiến của tương lai.
Machine Learning(máy học) là ngành học cung cấp cho máy tính khả năng học hỏi mà không cần được lập trình một cách rõ ràng
Hiện nay, Machine Learning đang trở thành một xu hướng phát triển mạnh mẽ trong nhiều ngành nghề khác nhau, nhờ vào sự xuất hiện của các thiết bị và máy cảm ứng tự động.
Các ứng dụng của Machine Learning trở nên quá quen thuộc như:
Xe tự lái, giảm thiểu tai nạn của Google? Chính là bản chất của machine learning
Các ưu đãi recommendation online như của Amazon & Netflix? Ứng dụng của Machine Learning trong cuộc sống hằng ngày
Muốn biết người dùng nói gì về bạn trên Twitter? Machine Learning kết hợp với sự sáng tạo của quy tắc ngôn ngữ
Nhận diện lừa đảo đang trở thành một nhu cầu thiết yếu trong xã hội hiện đại Với sự phát triển mạnh mẽ của các ứng dụng Machine Learning, nhóm chúng tôi đã quyết định chọn đề tài này cho đồ án tốt nghiệp của mình.
“Phát hiện sớm bệnh ung thư da thông qua ảnh chụp từ điện thoại”.
Mục tiêu đề tài
- Áp dụng ngôn ngữ Java và làm app android triển khai bằng Firebase
- Áp dụng thuật toán CNN trong phân tích ảnh: tìm ra model tốt nhất để xử lý ảnh ung thư da
- Liên kết App với model của máy học xử lý ảnh từ ảnh chụp điện thoại
Đối tượng tìm hiểu
- Ngôn ngữ Java và nền tảng Firebase
- Machine Learning: thuật toán CNN, các thư viện hỗ trợ như Keras,numpy,os, cv2
TỔNG QUAN VỀ BỆNH UNG THƯ DA
Định nghĩa
Ung thư da là sự phát triển bất thường của tế bào da, thường xảy ra ở những vùng da tiếp xúc với ánh nắng mặt trời Tuy nhiên, các dạng ung thư da phổ biến cũng có thể xuất hiện ở những khu vực không thường xuyên tiếp xúc với ánh sáng mặt trời.
Có ba loại chính của ung thư da - ung thư biểu mô tế bào đáy, ung thư biểu mô tế bào vảy và u ác tính
Để giảm nguy cơ ung thư da, hạn chế hoặc tránh tiếp xúc với bức xạ tia cực tím (UV) là rất quan trọng Việc kiểm tra da thường xuyên để phát hiện những thay đổi đáng ngờ giúp nhận diện ung thư da ở giai đoạn sớm Phát hiện sớm ung thư da mang lại cơ hội điều trị thành công cao nhất.
Các triệu chứng
2.2.1 Trường hợp phát triển ung thư da
Ung thư da thường phát triển ở những vùng da tiếp xúc nhiều với ánh nắng mặt trời như mặt, môi, tai, cổ, ngực, cánh tay, bàn tay và chân ở phụ nữ Tuy nhiên, nó cũng có thể xuất hiện ở những khu vực ít tiếp xúc với ánh nắng như lòng bàn tay, dưới móng tay, giữa các ngón chân, dưới móng chân và vùng sinh dục.
Ung thư da có thể ảnh hưởng đến mọi người, bất kể màu da, bao gồm cả những người có làn da tối Ở những người này, khối u ác tính thường xuất hiện ở những vùng không được xem là tiếp xúc nhiều với ánh nắng mặt trời.
2.2.2 Ung thư tế bào đáy
Ung thư tế bào đáy thường xuất hiện ở những vùng da tiếp xúc với ánh nắng mặt trời, như mặt, tai và da đầu Biểu hiện của loại ung thư này có thể là một vết sưng có hình dạng ngọc trai hoặc sáp.
-Một vết sẹo bằng phẳng, tổn thương màu da hoặc màu nâu
2.2.3 Ung thư tế bào vảy
Ung thư biểu mô tế bào vảy thường xuất hiện trên các vùng da tiếp xúc với ánh nắng mặt trời, bao gồm mặt, môi, tai và tay Các triệu chứng của ung thư tế bào vảy có thể biểu hiện dưới nhiều hình thức khác nhau.
-Một nhóm, màu đỏ hạch
-Tổn thương phẳng với vảy, cặn bề mặt
-Lớn với các đốm nâu sẫm màu hơn
-Nốt ruồi thay đổi màu sắc, kích thước hoặc cảm thấy hay chảy máu
-Một tổn thương nhỏ với một biên giới không bình thường, phần xuất hiện màu đỏ, trắng, xanh hoặc màu xanh đen
-Tổn thương đến vào lòng bàn tay, lòng bàn chân, ngón tay hay ngón chân, hoặc trên màng nhầy niêm mạc miệng, mũi, âm đạo hay hậu môn
2.2.5 Các dấu hiệu của các loại ung thư da ít phổ biến hơn
Sarcoma Kaposi là một dạng ung thư da hiếm gặp, phát triển trong các mạch máu và tạo ra các mảng tím đỏ trên da hoặc màng nhầy Bệnh này chủ yếu ảnh hưởng đến những người có hệ miễn dịch yếu, như bệnh nhân AIDS và những người sử dụng thuốc ức chế miễn dịch sau cấy ghép nội tạng Ngoài ra, Sarcoma Kaposi cũng có thể xuất hiện ở người lớn tuổi sống tại khu vực Địa Trung Hải.
-Ung thư tế bào Merkel
Nốt bóng xuất hiện trên bề mặt da hoặc trong nang lông, thường liên quan đến ung thư tế bào Merkel Loại ung thư này thường xuất hiện ở những vùng da tiếp xúc với ánh nắng mặt trời, bao gồm đầu, cổ, cánh tay và chân.
-Ung thư biểu mô tuyến bã nhờn
Ung thư biểu mô tuyến bã nhờn là một loại ung thư phổ biến, xuất phát từ các tuyến dầu trên da Nó thường xuất hiện dưới dạng nốt cứng, không đau và có thể phát triển ở bất kỳ vị trí nào trên cơ thể Tuy nhiên, phần lớn các trường hợp xảy ra trên mí mắt, nơi mà thường bị nhầm lẫn với các vấn đề khác liên quan đến mí.
Nguyên nhân
Ung thư da hình thành khi có các đột biến trong DNA của tế bào da khỏe mạnh, dẫn đến sự phát triển không kiểm soát của các tế bào, tạo thành khối u ung thư.
2.3.1 Các tế bào liên quan đến bệnh ung thư da
Ung thư da khởi phát từ lớp biểu bì, lớp da mỏng nhất, đóng vai trò bảo vệ cho các tế bào da bên dưới Lớp biểu bì bao gồm ba loại tế bào khác nhau, giúp duy trì chức năng và sức khỏe của da.
Tế bào vảy nằm ngay dưới bề mặt bên ngoài và chức năng của lớp lót bên trong da
Tế bào đáy, trong đó sản xuất các tế bào da mới, bên dưới các tế bào vảy
Melanocytes là tế bào chịu trách nhiệm sản xuất melanin, sắc tố quyết định màu sắc da bình thường, nằm ở lớp dưới của biểu bì Khi tiếp xúc với ánh nắng mặt trời, melanocytes tăng cường sản xuất melanin để bảo vệ các lớp sâu của da, dẫn đến việc tạo ra màu da rám nắng tối hơn.
2.3.2 Ánh sáng tử ngoại và các nguyên nhân tiềm năng khác
Hầu hết thiệt hại DNA trong tế bào da chủ yếu do tia cực tím (UV) từ ánh sáng mặt trời gây ra Tuy nhiên, việc phơi nắng mà không thường xuyên tiếp xúc với ánh sáng mặt trời không nhất thiết dẫn đến ung thư da Điều này cho thấy rằng còn nhiều yếu tố khác, như tiếp xúc với chất độc hại hoặc tình trạng suy yếu hệ miễn dịch, có thể làm tăng nguy cơ phát triển ung thư da.
2.3.3 Yếu tố và nguy cơ
Yếu tố có thể làm tăng nguy cơ bao gồm:
Mọi người, bất kể màu da nào, đều có nguy cơ mắc ung thư da Tuy nhiên, những người có lượng melanin thấp hơn sẽ có khả năng bảo vệ kém hơn trước bức xạ UV gây hại Những người có tóc đỏ, mắt sáng, làn da sáng màu, tàn nhang hoặc dễ bị cháy nắng có nguy cơ phát triển ung thư da cao hơn so với những người có làn da sẫm màu.
Cháy nắng gây tổn hại cho tế bào da và làm tăng nguy cơ ung thư da Khi bị cháy nắng, cơ thể sẽ tự động kích hoạt quá trình sửa chữa các tổn thương này.
Cháy nắng, đặc biệt là ở trẻ em và thanh thiếu niên, làm tăng nguy cơ phát triển ung thư da khi trưởng thành Ngoài ra, việc cháy nắng trong giai đoạn trưởng thành cũng là một yếu tố nguy cơ quan trọng.
Phơi nắng quá mức có thể dẫn đến ung thư da, đặc biệt khi không sử dụng kem chống nắng hoặc bảo vệ da bằng quần áo Ngoài ra, việc tiếp xúc với đèn và giường tắm nắng cũng làm tăng nguy cơ mắc bệnh này.
Mặt trời và khí hậu ấm áp có thể làm tăng nguy cơ ung thư da, đặc biệt ở những người sống ở độ cao nơi có bức xạ ánh sáng mặt trời mạnh Những người có nhiều nốt ruồi hoặc nốt ruồi bất thường, được gọi là nevi dysplastic, có nguy cơ cao hơn mắc bệnh này Nốt ruồi bình thường, mặc dù không thường xuyên, nhưng lớn hơn nốt ruồi thông thường, cũng có khả năng trở thành ung thư cao hơn Nếu bạn có tiền sử nốt ruồi bất thường, hãy theo dõi thường xuyên để phát hiện sự thay đổi.
Tổn thương tiền ung thư da, như actinic keratoses, có thể làm tăng nguy cơ phát triển ung thư da Những tổn thương này thường xuất hiện dưới dạng bề mặt thô ráp, có vảy và có màu từ nâu sẫm đến hồng Chúng phổ biến nhất trên mặt, cánh tay dưới và bàn tay của những người có da bị hư hỏng do tiếp xúc với ánh nắng mặt trời.
Lịch sử gia đình mắc bệnh ung thư da có thể làm tăng nguy cơ mắc bệnh Nếu cha mẹ hoặc anh chị em từng bị ung thư da, bạn có thể có nguy cơ cao hơn.
Người có lịch sử cá nhân bị ung thư da có nguy cơ cao tái phát bệnh Ngay cả khi ung thư tế bào đáy và tế bào vảy đã được điều trị thành công, khả năng tái phát vẫn tồn tại.
Hệ thống miễn dịch suy yếu làm tăng nguy cơ mắc ung thư da, đặc biệt đối với những người sống với HIV.
AIDS hoặc bệnh bạch cầu và các thuốc ức chế miễn dịch dùng sau khi cấy ghép nội tạng
Tiếp xúc với các chất nhất định Tiếp xúc với các chất nhất định, chẳng hạn như thạch tín, có thể làm tăng nguy cơ ung thư da
Nguy cơ ung thư da tăng theo tuổi tác, chủ yếu do sự phát triển chậm của bệnh Những tổn thương da từ thời thơ ấu hoặc tuổi niên thiếu có thể không xuất hiện rõ ràng cho đến khi vào tuổi trung niên Tuy nhiên, ung thư da không chỉ xảy ra ở người lớn tuổi mà còn có thể ảnh hưởng đến mọi lứa tuổi.
Các giai đoạn của ung thư
Giai đoạn 0 (Ung thư da biểu mô tại chỗ)
Tế bào bất thường trong giai đoạn 0 của ung thư biểu mô xuất hiện trong lớp biểu bì, lớp ngoài cùng của da Cụ thể, các tế bào bất thường này được tìm thấy trong các mô tế bào vảy hoặc lớp tế bào đáy của lớp biểu bì Ở giai đoạn này, các tế bào bất thường có khả năng trở thành ung thư và xâm lấn vào các mô bình thường lân cận Do đó, giai đoạn 0 cũng được gọi là ung thư biểu mô tại chỗ, cảnh báo sự cần thiết của việc tầm soát và điều trị sớm để ngăn chặn sự phát triển của bệnh.
Giai đoạn I (ung thư da u hắc tố)
Trong giai đoạn I, ung thư đã hình thành Khối u không lớn hơn 2cm ở điểm rộng nhất của nó và có thể có một tính năng có nguy cơ cao
- Da của người bệnh có thể bị ngứa ngáy và đau rát như bị nổi ban đỏ
- Khối u trên da có thể bị lở loét, chảy máu hoặc có mủ viêm nhiễm
Giai đoạn II (ung thư da u hắc tố)
Trong giai đoạn II, khối u là một trong hai dạng:
- Lớn hơn 2cm ở điểm rộng nhất của nó
- Bất kỳ kích thước nào và có hai hoặc nhiều hơn các tính năng có nguy cơ cao
Người bệnh có thể trải qua các triệu chứng như đau nhức xương, đau dạ dày, đau đầu và khó thở, do tế bào ung thư da đã di căn vào các cơ quan nội tạng.
- Cơ thể người bệnh luôn trong tình trạng yếu ớt, sức khỏe suy giảm do sự tác động cảu các tế bào ung thư đến cơ thể
Ung thư có thể đã di căn đến một hạch bạch huyết ở cùng bên cơ thể với các khối u, và kích thước của các hạch bạch huyết này không vượt quá 3cm.
-Ung thư da đã lan rộng đến một hạch bạch huyết trên cùng một bên của cơ thể như các khối u
- Khối u không lớn hơn 2cm ở điểm rộng nhất của nó
- Khối u da phát triển mạnh và lan xuống xương hàm, hốc mắt, hoặc bên cạnh hộp sọ
- Các tế bào ung thư xâm lấn vào mạch máu và truyền đi khắp cơ thể, có thể khu trú tại dạ dày, phổi, gan…
- Khối u trên da dày hơn 2mm và di căn vào lớp mỡ dưới da
- Khối u xâm lấn vào một bên tai hoặc trên môi
- Khối u có kích thước bất kỳ và có thể đã lây lan sang hàm, hốc mắt, hoặc bên cạnh hộp sọ
Ung thư đã di căn đến một hạch bạch huyết ở cùng một bên cơ thể, với kích thước khối u và các nút lympho bị ảnh hưởng lớn hơn 3 cm nhưng không quá 6 cm Ngoài ra, ung thư cũng có thể lan rộng đến nhiều hơn một hạch bạch huyết ở một hoặc cả hai bên cơ thể, với kích thước các nút lympho không vượt quá 6 cm.
- Khối u có kích thước bất kỳ và có thể đã lây lan sang hàm, hốc mắt, xương sọ, xương sống, xương sườn hoặc
- Ung thư đã lan đến các bộ phận khác của cơ thể, chẳng hạn như phổi.
Phương pháp điều trị
Điều trị ung thư da và các tổn thương tiền ung thư như actinic keratoses phụ thuộc vào kích thước, độ sâu, loại và vị trí của tổn thương Đối với ung thư da nhỏ chỉ ảnh hưởng đến bề mặt da, có thể không cần điều trị phức tạp, chỉ cần thực hiện một sinh thiết da để loại bỏ hoàn toàn sự phát triển.
Nếu cần điều trị bổ sung, phương pháp đông lạnh có thể được sử dụng Bác sĩ có khả năng tiêu diệt actinic keratoses và một số loại ung thư da đầu bằng cách áp dụng nitơ lỏng (phương pháp cắt lạnh) Sau khi đông lạnh, các tế bào chết sẽ tự động bong ra khi chúng rã băng.
Phẫu thuật excisional là phương pháp điều trị hiệu quả cho nhiều loại ung thư da Trong quá trình này, bác sĩ sẽ cắt bỏ các tế bào ung thư cùng với một phần da khỏe mạnh xung quanh để đảm bảo loại bỏ triệt để khối u.
- loại bỏ thêm da bình thường xung quanh khối u - có thể được đề xuất trong một số trường hợp
Laser điều trị ung thư da là một phương pháp hiệu quả, giúp giảm thiệt hại cho các mô xung quanh Phương pháp này ít gây chảy máu, sưng tấy và để lại vết sẹo tối thiểu Bác sĩ thường áp dụng liệu pháp laser để điều trị các loại ung thư da trên bề mặt.
Phẫu thuật Mohs là một phương pháp điều trị hiệu quả cho các loại ung thư da khó chữa, bao gồm ung thư biểu mô tế bào vảy và cơ bản Trong quy trình này, bác sĩ sẽ loại bỏ từng lớp da có sự tăng trưởng bất thường và kiểm tra chúng dưới kính hiển vi cho đến khi không còn tế bào ung thư nào Phương pháp này giúp loại bỏ hoàn toàn tế bào ung thư mà vẫn bảo tồn tối đa làn da khỏe mạnh xung quanh.
Nạo và điện diệt là phương pháp điều trị hiệu quả cho ung thư tế bào đáy Sau khi loại bỏ phần lớn sự tăng trưởng, bác sĩ sử dụng một lưỡi tròn (curet) để nạo bỏ lớp tế bào ung thư Tiếp theo, một kim điện sẽ tiêu diệt bất kỳ tế bào ung thư nào còn sót lại Thủ tục này đơn giản, nhanh chóng và thường được áp dụng cho các khối u nhỏ hoặc mỏng.
Bức xạ trị liệu Bức xạ có thể được sử dụng trong các tình huống khi phẫu thuật không phải là một lựa chọn
Hóa trị là phương pháp trong hóa học trị liệu nhằm tiêu diệt tế bào ung thư Đối với ung thư chỉ giới hạn ở lớp trên cùng của da, các loại kem hoặc sữa chứa chất chống ung thư có thể được bôi trực tiếp lên vùng da bị ảnh hưởng Tuy nhiên, thuốc có thể gây ra viêm nhiễm nghiêm trọng và để lại sẹo Đối với trường hợp ung thư da đã lan ra các bộ phận khác của cơ thể, hệ thống hóa trị sẽ được áp dụng để điều trị hiệu quả hơn.
Liệu pháp quang (PDT) là một phương pháp điều trị hiệu quả cho ung thư da, kết hợp giữa ánh sáng laser và thuốc để tăng cường độ nhạy cảm của tế bào ung thư với ánh sáng Sau khi thực hiện PDT, làn da sẽ trở nên nhạy cảm hơn với ánh sáng, vì vậy bệnh nhân cần tránh tiếp xúc với ánh nắng trực tiếp ít nhất sáu tuần để bảo vệ da và đạt được hiệu quả điều trị tốt nhất.
Sinh học điều trị là phương pháp kích thích hệ thống miễn dịch nhằm tiêu diệt tế bào ung thư Các loại thuốc trị liệu sinh học, như interferon và interleukin-2, thường được sử dụng để điều trị một số loại ung thư da.
Phòng chống
Tránh ánh nắng mặt trời trong thời gian giữa ngày Đối với nhiều người ở Bắc
Mỹ có những tia nắng mặt trời mạnh nhất từ 10 giờ sáng đến 4 giờ chiều, vì vậy nên lên kế hoạch cho các hoạt động ngoài trời vào những thời điểm khác trong ngày, ngay cả trong mùa đông hoặc khi trời nhiều mây Bức xạ tia cực tím tồn tại quanh năm, và mặc dù những đám mây nhỏ có thể cung cấp một mức độ bảo vệ, nhưng vẫn cần lưu ý rằng cháy nắng và làn da rám nắng có thể làm tăng nguy cơ phát triển ung thư da Ánh nắng mặt trời tích lũy theo thời gian cũng là yếu tố nguy cơ gây ung thư da.
Sử dụng kem chống nắng quanh năm là rất quan trọng để bảo vệ làn da khỏi các bức xạ tia cực tím có hại, mặc dù kem chống nắng không thể lọc hoàn toàn tất cả các tia này, đặc biệt là những tia có thể gây ra u ác tính Để đạt hiệu quả bảo vệ tốt nhất, hãy chọn kem chống nắng quang phổ rộng với chỉ số SPF tối thiểu là 15 Đảm bảo thoa một lượng lớn kem lên tất cả các vùng da tiếp xúc, bao gồm môi, tai, lưng bàn tay và cổ.
Để bảo vệ làn da khỏi tác hại của tia UV, hãy mặc quần áo bảo hộ dệt tối, bao gồm cả cánh tay và chân, cùng với một chiếc mũ rộng vành Kem chống nắng không thể bảo vệ hoàn toàn, vì vậy việc sử dụng quần áo photoprotective là một lựa chọn tốt; bác sĩ da liễu có thể tư vấn thương hiệu phù hợp Đừng quên kính mát, chọn loại có khả năng chặn cả hai loại tia cực tím UVA và UVB để đảm bảo an toàn tối đa cho mắt.
Nhận biết thuốc nhạy cảm với ánh sáng mặt trời là rất quan trọng Một số loại thuốc như kháng sinh, thuốc điều trị cholesterol, cao huyết áp, tiểu đường và thuốc chống viêm không steroid như ibuprofen có thể làm tăng độ nhạy cảm của da với ánh sáng mặt trời Hãy tham khảo ý kiến bác sĩ hoặc dược sĩ về các tác dụng phụ của thuốc Đặc biệt, nếu thuốc làm tăng độ nhạy cảm với ánh sáng mặt trời, cần cẩn trọng tránh tiếp xúc với ánh nắng để bảo vệ làn da Ngoài ra, hãy kiểm tra da thường xuyên để phát hiện các thay đổi bất thường như sự phát triển của nốt ruồi mới, tàn nhang, hay các vết bớt Đảm bảo kiểm tra kỹ các vùng như mặt, cổ, da đầu, ngực, cánh tay, bàn tay, và cả chân, bao gồm lòng bàn chân và khoảng trống giữa các ngón chân, cũng như bộ phận sinh dục và giữa mông.
Hiện trạng ung thư da ở Việt Nam
Hiện nay, tỷ lệ mắc bệnh ung thư da đang gia tăng, nhưng vấn đề này vẫn chưa được quan tâm đúng mức Nhiều người không nhận ra mình bị ung thư da, thường nhầm lẫn với "nốt ruồi" hay các mảng da bình thường, dẫn đến việc phát hiện muộn và gặp phải những biến chứng nghiêm trọng.
Khoa Phẫu thuật thẩm mỹ và Phục hồi chức năng, BV Da liễu Trung ương đang theo dõi và điều trị khoảng 300 ca ung thư da mỗi năm, theo TS.BS Nguyễn Cao Kiêm – Trưởng khoa Số liệu cho thấy tỷ lệ bệnh nhân ung thư da đang gia tăng với mức tăng khoảng 15% mỗi năm Đa số các trường hợp mắc bệnh thường do sự chủ quan của người bệnh, khi ban đầu chỉ xuất hiện một mảng màu da nâu xám nhỏ, phẳng và có bờ không đều Người bệnh thường nghĩ đó là bình thường, nhưng chỉ đến khi mảng màu này lan rộng, dày lên và xuất hiện các nốt, cục, loét, chảy máu thì họ mới đến bệnh viện.
Ung thư da loại tế bào đáy là một dạng ung thư phổ biến, thường khởi phát dưới dạng khối u có kích thước từ 1 đến vài cm Bệnh tiến triển chậm và thường không gây ngứa hay đau đớn, vì vậy nhiều người thường không chú ý đến Tuy nhiên, nếu không được phát hiện và điều trị kịp thời, ung thư này có thể dẫn đến viêm nhiễm, loét, hoại tử và phá hủy mô xung quanh.
Nhiều trường hợp ung thư da nhập viện trong tình trạng nặng do chủ quan, không thăm khám y tế mà tự ý chữa trị bằng thuốc lá, thuốc nam không rõ nguồn gốc, dẫn đến viêm nhiễm nghiêm trọng Nhiều người sau khi phẫu thuật cắt bỏ khối u vẫn nhầm lẫn rằng đó chỉ là cắt "nốt ruồi", khiến họ bỏ qua việc khám chữa sớm, dẫn đến biến chứng nghiêm trọng Các vết sẹo và thương tổn có thể sùi lên, viêm loét, chảy mủ, và một số biến chứng có thể gây phá hủy tại chỗ, làm mất ngón tay, chân, hoặc các bộ phận khác tùy theo vị trí khối u Nguy hiểm hơn, ung thư da có thể di căn đến bất kỳ cơ quan nào trong cơ thể như não, gan, thận, đặc biệt là ung thư da tế bào gai và u sắc tố, dễ dàng di căn qua đường bạch mạch và máu, làm tăng nguy cơ tử vong.
Vấn đề thủ tục và giấy tờ phức tạp tại các phòng khám và bệnh viện khiến nhiều người không chú ý đến những thay đổi xấu trên da, có thể là dấu hiệu của ung thư da tiềm ẩn Do đó, việc phát triển một ứng dụng di động có khả năng tự động dự đoán ung thư da qua hình ảnh chụp thực tế là rất cần thiết Ứng dụng này sẽ giúp người dùng xác định tình trạng sức khỏe của mình, từ đó quyết định gặp bác sĩ để khám và điều trị kịp thời.
TỔNG QUAN VỀ HỌC MÁY
Giới thiệu về học máy
Học máy (Machine learning) đã trở thành một hiện tượng công nghệ toàn cầu trong những năm gần đây, với hàng ngàn bài báo khoa học được công bố mỗi năm trong giới học thuật Các công ty lớn như Google, Facebook, và Microsoft, cùng với nhiều công ty khởi nghiệp, đều đầu tư mạnh mẽ vào lĩnh vực này Machine learning đã tạo ra nhiều ứng dụng đa dạng trong các lĩnh vực từ khoa học máy tính đến vật lý, hóa học, y học và chính trị AlphaGo, cỗ máy đánh cờ vây với khả năng tính toán vượt trội, là một minh chứng rõ ràng cho sự ưu việt của machine learning so với các phương pháp truyền thống.
Hình 3.1: Mối quan hệ giữa AI, Machine Learning và Deep Learning
Machine Learning, một nhánh của trí tuệ nhân tạo (AI), là lĩnh vực con trong Khoa Học Máy Tính, cho phép máy tính tự học hỏi từ dữ liệu mà không cần lập trình cụ thể.
Hiện tại, học máy chưa có định nghĩa chính thức, nhưng có thể hiểu rằng đây là những kỹ thuật cho phép máy tính tự học mà không cần lập trình các quy tắc quyết định Thông thường, các chương trình máy tính yêu cầu phải có quy tắc và luật lệ cụ thể để hoạt động.
Học máy cho phép máy tính tự động phân loại email thành thư rác mà không cần quy tắc cụ thể, giúp chúng có khả năng cảm nhận và suy nghĩ như con người Kỹ thuật này liên quan đến việc vẽ các đường thể hiện mối quan hệ giữa các tập dữ liệu, chẳng hạn như đường phân chia hai loại dữ liệu với nhãn khác nhau, hoặc đường thể hiện xu hướng giá nhà dựa trên diện tích.
Các giải thuật học máy được phân ra làm 2 loại chính là:
Học có giám sát (Supervised Learning) là phương pháp sử dụng dữ liệu đã được gán nhãn để suy luận mối quan hệ giữa đầu vào và đầu ra Những dữ liệu này, gọi là dữ liệu huấn luyện, bao gồm các cặp đầu vào-đầu ra Phương pháp này cho phép đưa ra dự đoán cho các đầu vào mới chưa từng gặp, ví dụ như dự đoán giá nhà hoặc phân loại email.
Học phi giám sát (Unsupervised Learning) là một phương pháp học máy khác biệt so với học có giám sát, vì nó sử dụng dữ liệu chưa được gán nhãn để thực hiện suy luận và phân tích.
Phương pháp này thường được áp dụng để xác định cấu trúc của tập dữ liệu, nhưng không có cách nào đánh giá tính chính xác của cấu trúc được tìm thấy Một số ví dụ bao gồm phân cụm dữ liệu và triết xuất thành phần chính của một chất nào đó.
Ngoài ra còn có 1 loại nữa là học tăng cường (reinforcement learning)
Phương pháp học tăng cường tập trung vào việc tối ưu hóa hành động của tác nhân trong môi trường nhằm tối đa hóa phần thưởng nhận được Khác với học có giám sát, phương pháp này không yêu cầu cặp dữ liệu gán nhãn trước và không đánh giá hành động là đúng hay sai.
Một bài toán học máy cần trải qua 3 bước chính:
Chọn mô hình: Chọn một mô hình thống kê cho tập dữ liệu Ví dụ như mô hình thống kê Bec-nu-li, mô hình phân phối chuẩn
Trong các mô hình thống kê, việc tìm kiếm các tham số tương ứng là rất quan trọng Nhiệm vụ chính là xác định các tham số này để chúng phù hợp nhất với tập dữ liệu hiện có.
Suy luận: Sau khi có được mô hình và tham số, ta có thể dựa vào chúng để đưa ra suy luận cho một đầu vào mới nào đó
Mọi bài toán học máy đều cần dữ liệu để huấn luyện, điều này được xem là điều kiện tiên quyết Sau khi thu thập dữ liệu, cần thực hiện các bước quan trọng để xử lý và chuẩn bị dữ liệu cho quá trình huấn luyện mô hình.
Chuẩn hoá dữ liệu đầu vào là bước cần thiết để máy tính có thể xử lý hiệu quả Quá trình này bao gồm số hoá và điều chỉnh các thông số cho phù hợp với bài toán cụ thể Việc chuẩn hoá không chỉ ảnh hưởng đến tốc độ huấn luyện mà còn tác động trực tiếp đến hiệu quả của quá trình này Chúng ta sẽ cùng thảo luận chi tiết hơn về vấn đề này trong một bài viết khác.
Việc chọn mô hình phù hợp với tập dữ liệu không đảm bảo rằng giả thuyết của chúng ta là chính xác, vì có thể xảy ra tình huống dữ liệu thực không khớp Trong học máy, vấn đề này được gọi là khớp quá (Overfitting) Do đó, trong quá trình huấn luyện, cần phân chia dữ liệu thành ba loại để kiểm chứng mức độ tổng quát của mô hình.
- Tập huấn luyện (Training set): Chiếm 60% Dùng để học khi huấn luyện
- Tập kiểm chứng (Cross validation set): Chiếm 20% Dùng để kiểm chứng mô hình khi huấn luyện
- Tập kiểm tra (Test set): Chiếm 20% Dùng để kiểm tra xem mô hình đã phù hợp chưa sau khi huấn luyện.
Giới thiệu về học sâu
Học sâu (deep learning) là một nhánh của học máy, sử dụng mạng nơ-ron tương tự như nơ-ron của não người để phát triển hệ thống học máy Kỹ thuật này kết hợp giữa toán học và khoa học thần kinh, mang lại kết quả to lớn và được coi là khởi nguyên của một ngành công nghiệp mới Hiện nay, nhiều công ty lớn trong ngành công nghệ cũng như các lĩnh vực khác như ô tô và điện tử đang chú trọng phát triển và ứng dụng kỹ thuật học sâu cho các bài toán của họ.
Hình 3.2.1 Mô phỏng Deep Learning
Deep learning is a subset of machine learning, a vast field heavily rooted in mathematics It encompasses numerous algorithms, each tailored for specific applications depending on the problem at hand.
Decision Tree and Random Forest
Deep Learning là một phương pháp trong lĩnh vực Học máy, cho phép huấn luyện trí tuệ nhân tạo (AI) dự đoán đầu ra dựa trên tập hợp đầu vào Cả hai phương pháp huấn luyện có giám sát và không giám sát đều có thể được áp dụng trong quá trình này.
3.2.3 Các kỹ thuật của học sâu
Mạng lưới thần kinh sâu có nhiều loại với cấu trúc phù hợp cho các nhiệm vụ khác nhau Mạng thần kinh chuyển đổi (CNN) thường được sử dụng cho thị giác máy tính, trong khi Mạng thần kinh tái phát (RNN) thích hợp cho xử lý ngôn ngữ Trong CNN, các lớp đầu tiên chuyên biệt để trích xuất tính năng từ hình ảnh, sau đó đưa vào mạng thần kinh để phân loại RNN khác với mạng nơ ron truyền thống nhờ vào các vòng phản hồi, cho phép dữ liệu từ lớp này quay trở lại lớp trước, tạo ra bộ nhớ cho mạng Một dạng RNN đặc biệt hơn có ô nhớ, được thiết kế để xử lý dữ liệu có độ trễ giữa các đầu vào.
Mạng perceptron nhiều lớp là loại mạng thần kinh cơ bản nhất, được áp dụng trong việc nhận diện số liệu viết tay Trong mạng này, dữ liệu được truyền từ lớp này sang lớp khác của các tế bào thần kinh Mỗi nơ-ron sẽ biến đổi các giá trị đầu vào thông qua một chức năng kích hoạt, giúp chuyển đổi chúng thành một dạng phù hợp Cuối chu kỳ đào tạo, mạng sẽ có khả năng tính toán chính xác để đưa ra dự đoán.
Có rất nhiều loại mạng thần kinh sâu khác nhau, và không có mạng nào vượt trội hơn hẳn các mạng khác Mỗi loại mạng đều phù hợp hơn cho việc giải quyết những nhiệm vụ cụ thể.
Gần đây, mạng đối kháng chung (GAN) đã mở rộng khả năng sử dụng mạng thần kinh, với hai mạng hoạt động song song: mạng phát điện tạo ra dữ liệu giả và mạng phân biệt tìm cách phân biệt giữa dữ liệu giả và dữ liệu thực Qua từng chu kỳ đào tạo, mạng phát điện cải thiện khả năng tạo ra dữ liệu giả, trong khi mạng phân biệt ngày càng tinh vi hơn trong việc phát hiện những giả mạo đó Sự kết hợp này trong quá trình đào tạo giúp cả hai mạng đạt hiệu suất tốt hơn, và GAN đã được ứng dụng trong nhiều nhiệm vụ quan trọng.
3.2.4 Nhược điểm của học sâu
Một trong những nhược điểm lớn của học sâu là yêu cầu về lượng dữ liệu khổng lồ để đào tạo, dẫn đến nhu cầu sử dụng sức mạnh tính toán phân tán lớn Chi phí đào tạo cũng là một vấn đề đáng chú ý, vì kích thước bộ dữ liệu và số chu kỳ đào tạo cần thiết thường đòi hỏi phần cứng máy tính mạnh mẽ và tốn kém, như GPU cao cấp hoặc mảng GPU Dù bạn xây dựng hệ thống riêng hay thuê phần cứng từ nền tảng đám mây, tất cả các tùy chọn đều không hề rẻ.
Mạng lưới thần kinh sâu gặp khó khăn trong việc đào tạo do vấn đề độ dốc biến mất, làm giảm hiệu quả của nhiều lớp trong mạng Khi thêm nhiều lớp, vấn đề này có thể dẫn đến việc mất thời gian dài để đạt được độ chính xác tốt, vì sự cải thiện giữa các chu kỳ đào tạo là rất ít Tuy nhiên, không phải tất cả các mạng thần kinh nhiều lớp đều bị ảnh hưởng; vấn đề này chủ yếu xảy ra ở các mạng sử dụng phương pháp học tập dựa trên độ dốc Để khắc phục, có thể chọn chức năng kích hoạt phù hợp hoặc sử dụng hệ thống đào tạo với GPU mạnh mẽ.
Tìm hiểu về CNN (Convolutional Neural Network)
Mạng nơ-ron tích chập (CNN) là một trong những mô hình Deep Learning tiên tiến và có ảnh hưởng lớn trong cộng đồng Computer Vision CNN được áp dụng rộng rãi trong các bài toán như nhận dạng ảnh, phân tích video, hình ảnh MRI, cũng như trong lĩnh vực xử lý ngôn ngữ tự nhiên, và hầu hết đều đạt hiệu quả cao trong việc giải quyết các vấn đề này.
Mô hình CNN có lịch sử lâu đời, được giới thiệu lần đầu bởi một nhà khoa học máy tính Nhật Bản vào năm 1980 Đến năm 1998, Yan LeCun đã huấn luyện thành công mô hình CNN với thuật toán backpropagation cho bài toán nhận dạng chữ viết tay Tuy nhiên, bước đột phá thực sự xảy ra vào năm 2012 khi Alex Krizhevsky, học trò của Geoffrey Hinton, phát triển mô hình AlexNet và sử dụng GPU để tăng tốc quá trình huấn luyện deep nets Mô hình này đã đạt được thành tích xuất sắc tại cuộc thi ImageNet, giảm hơn 10% tỷ lệ lỗi phân lớp top 5 so với các mô hình truyền thống, từ đó thúc đẩy mạnh mẽ việc áp dụng deep CNN trong lĩnh vực Computer Vision.
Hình 3.3.3 Kiến trúc của CNN
Kiến trúc của CNN bao gồm tập hợp các lớp cơ bản:
Các lớp trong mạng nơ-ron tích chập được liên kết theo một thứ tự cụ thể, bắt đầu từ việc truyền tải hình ảnh qua lớp convolution và lớp phi tuyến đầu tiên Sau đó, các giá trị tính toán sẽ được chuyển tiếp qua lớp pooling Bộ ba lớp convolution, lớp phi tuyến và lớp pooling có thể được lặp lại nhiều lần trong mạng Cuối cùng, dữ liệu sẽ được truyền qua lớp fully connected và lớp softmax để xác định xác suất của vật thể trong hình ảnh.
Trong mô hình CNN, hai khía cạnh quan trọng cần chú ý là tính bất biến về vị trí (Location Invariance) và tính kết hợp (Compositionality) Đối với một đối tượng, việc chiếu nó từ các góc độ khác nhau có thể ảnh hưởng đến cách mà mô hình nhận diện và xử lý thông tin.
(translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể
Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển
(translation), phép quay (rotation) và phép co giãn (scaling) Tính kết hợp cục
CNNs sử dụng 15 bộ lọc để biểu diễn thông tin ở nhiều cấp độ khác nhau, từ mức độ thấp đến cao và trừu tượng Điều này giúp tạo ra các mô hình với độ chính xác rất cao, tương tự như cách con người nhận diện các vật thể trong tự nhiên.
Mạng CNN sử dụng ba ý tưởng cơ bảnn:
Các trường tiếp nhận cục bộ (local receptive field) trong mạng CNN nhận đầu vào là ảnh, ví dụ như ảnh có kích thước 28×28, tương ứng với ma trận 28×28, trong đó mỗi điểm ảnh là một ô trong ma trận Khác với mô hình mạng ANN truyền thống, trong mạng CNN, các neuron đầu vào được kết nối trực tiếp với tầng ảnh.
Trong mạng nơ-ron tích chập (CNN), chúng ta kết nối chỉ trong một vùng nhỏ của các nơ-ron đầu vào, sử dụng bộ lọc kích thước 5×5, tạo ra 24 điểm ảnh đầu vào từ kích thước 28 Mỗi kết nối sẽ học một trọng số riêng và mỗi nơ-ron ẩn sẽ học một độ lệch (bias) Vùng 5×5 này được gọi là trường tiếp nhận cục bộ.
Hình 3.3.3a Trường tiếp nhận cục bộ
Một cách tổng quan, ta có thể tóm tắt các bước tạo ra 1 hidden layer bằng các cách sau:
Tạo ra neuron ẩn đầu tiên trong lớp ẩn 1
Hình 3.3.3b Hidden Layer lớp ẩn 1
Dịch filter qua bên phải một cột sẽ tạo ra neuron ẩn thứ 2
Trong bài toán nhận dạng ảnh, ma trận lớp đầu vào được gọi là feature map, trong khi trọng số xác định các đặc trưng được gọi là shared weight và độ lệch cho một feature map là shared bias Mặc dù ở bước đơn giản nhất chỉ có một feature map, nhưng trong nhận dạng ảnh, chúng ta cần sử dụng nhiều hơn một feature map để cải thiện độ chính xác và khả năng nhận diện.
Local receptive field rất phù hợp cho việc phân tách dữ liệu hình ảnh, giúp xác định những vùng ảnh quan trọng nhất cho quá trình đánh giá phân lớp.
Trọng số chia sẻ trong mạng nơ-ron yêu cầu các trọng số cho mỗi bộ lọc (kernel) phải giống nhau, giúp tất cả nơ-ron trong lớp ẩn đầu phát hiện các đặc trưng tương tự ở các vị trí khác nhau trong hình ảnh đầu vào Quá trình chuyển đổi từ lớp đầu vào sang lớp ẩn được gọi là feature map Điều này đặt ra câu hỏi về mối quan hệ giữa số lượng feature map và số lượng tham số trong mô hình.
Mỗi feature map yêu cầu 26 tham số, bao gồm 25 tham số cho shared weight và 1 cho shared bias Nếu có 10 feature map, tổng số tham số sẽ là 260 Trong trường hợp layer đầu tiên có kết nối đầy đủ với 28x28x4 neuron đầu vào và chỉ 30 neuron ẩn, tổng số tham số sẽ là 28x28x30 + 30, lớn hơn nhiều so với CNN Mặc dù ví dụ này chỉ nhằm minh họa việc ước lượng số lượng tham số, nhưng rõ ràng rằng mô hình với số lượng tham số ít hơn sẽ có hiệu suất chạy nhanh hơn.
Tóm lại, một lớp tích chập (convolutional layer) bao gồm nhiều bản đồ đặc trưng (feature map) khác nhau, mỗi bản đồ giúp phát hiện các đặc trưng cụ thể trong hình ảnh Lợi ích chính của việc chia sẻ trọng số là giảm thiểu số lượng tham số trong mạng nơ-ron tích chập (CNN).
Lớp pooling thường được sử dụng ngay sau lớp convolutional để đơn giản hóa thông tin đầu ra để giảm bớt số lượng neuron
Hình 3.3.3e Lớp tổng hợp Pooling
Thủ tục pooling phổ biến là max-pooling, thủ tục này chọn giá trị lớn nhất trong vùng đầu vào 2×2
Qua quá trình Max Pooling, số lượng neuron giảm đi một nửa Trong mạng CNN, mỗi Feature Map sẽ áp dụng một Max Pooling riêng biệt Max Pooling giúp xác định đặc trưng nổi bật nhất trong các đặc trưng đã được trích xuất.
Ngoài Max Pooling, L2 Pooling cũng là một phương pháp quan trọng trong mạng nơ-ron tích chập (CNN) Cuối cùng, chúng ta kết hợp tất cả các lớp lại với nhau để tạo ra một CNN có đầu ra là số lượng nơ-ron tùy thuộc vào từng bài toán cụ thể.
Hình 3.3.3g Neuron đầu ra của CNN
2 lớp cuối cùng của các kết nối trong mạng là một lớp đầy đủ kết nối
(fully connected layer) Lớp này nối mọi nơron từ lớp max pooled tới mọi nơron của tầng ra
Cách chọn tham số cho CNN:
1 Số các convolution layer: càng nhiều các convolution layer thì performance càng được cải thiện Sau khoảng 3 hoặc 4 layer, các tác động được giảm một cách đáng kể
2 Filter size: thường filter theo size 5×5 hoặc 3×3
3 Pooling size: thường là 2×2 hoặc 4×4 cho ảnh đầu vào lớn
4 Cách cuối cùng là thực hiện nhiều lần việc train test để chọn ra được param tốt nhất.
3.3.4 Cách thức xử lý bài toán phân tích ảnh
Bước 1: Tạo các đường dẫn đến các thư mục train, test và validation
Bước 2: Copy những file ảnh từ file gốc để đưa vào thư mục nhỏ hơn
Bước 3: Thiết kế các layers của model CNN
Bước 4: Resize ảnh và data augmentation
Các ứng dụng xử lý ảnh
Giải phương trình vi phân đạo hàm riêng (PDE)
Tạo sóng, tối ưu hóa hệ thống truyền dữ liệu băng hẹp, điều khiển các hệ chuyển mạch ATM, xử lý tín hiệu video thời gian thực
Trong công nghiệp và giao thông vận tải ô tô:
Phân tích bề mặt nhãn in, dệt và kết cấu là quá trình kiểm tra các lỗi và vị trí lỗi của sản phẩm, bao gồm bề mặt nhãn, rubang và vải, ngay trong quá trình sản xuất Việc này giúp đảm bảo chất lượng sản phẩm và phát hiện sớm các vấn đề tiềm ẩn.
Tìm hiểu về thư viện Keras
Keras là một thư viện mã nguồn mở được phát triển vào năm 2015 bởi François Chollet, một kỹ sư nghiên cứu deep learning tại Google Thư viện này được viết bằng ngôn ngữ Python và cung cấp API bậc cao, cho phép người dùng dễ dàng xây dựng và huấn luyện các mô hình neural network Keras có thể tích hợp với các thư viện deep learning nổi tiếng như TensorFlow (phát triển bởi Google), CNTK (phát triển bởi Microsoft) và Theano (do Yoshua Bengio dẫn dắt) Một số ưu điểm nổi bật của Keras bao gồm tính dễ sử dụng, khả năng mở rộng và hỗ trợ cho nhiều loại mô hình khác nhau.
Dễ sử dụng, xây dựng model nhanh
Có thể chạy trên cả CPU và GPU
Hỗ trợ xây dựng CNN, RNN và kết hợp cả hai
Trước khi cài đặt Keras, bạn cần cài đặt một trong các thư viện như TensorFlow, CNTK hoặc Theano Sau khi hoàn tất, bạn có thể tiến hành cài đặt Keras trên hệ điều hành Windows bằng một số lệnh nhất định.
Hình 3.4.3a Cấu trúc của Keras Đầu tiên là các module dùng để xây dựng bộ xương cho model
Hình 3.4.3b Module xây dựng model Đầu tiên ta tìm hiểu sub-module : Models trong keras Để khởi tạo một model trong keras ta có thể dùng 2 cách:
Cách 1 : Chúng ta khởi tạo model bằng Sequential sau đó dùng method add để thêm các layer
Cách thứ 2 để khởi tạo model là dùng function API
Khi chúng ta khởi tạo một model thì có các method ta cần lưu ý là:
Sau khi hoàn thành việc xây dựng mô hình, bước compile có vai trò biên tập lại toàn bộ mô hình đã được xây dựng Tại giai đoạn này, chúng ta có thể lựa chọn các tham số cho việc huấn luyện mô hình, bao gồm thuật toán huấn luyện thông qua các tham số như optimizer và function.
21 loss của model chúng ta có thể sử dụng mặc định hoặc tự build thông qua tham số loss, chọn metrics hiện thị khi model được training
summary method này giúp chúng ta tổng hợp lại model xem model có bao nhiêu layer, tổng số tham số bao nhiêu,shape của mỗi layer
fit dùng để đưa data vào training để tìm tham số model(tương tự như sklearn)
predict dùng để predict các new instance
evaluate để tính toán độ chính xác của model
history dùng để xem accuracy,loss qua từng epochs Thường dùng với matplotlib để vẽ chart
Sub-module Layers chứa các lớp chuyên dụng cho việc xây dựng các mô hình như CNN, RNN và GANs Trong số nhiều lớp có sẵn, chúng ta sẽ chỉ tập trung vào một số lớp thường được sử dụng nhất.
Core layer : chứa các layer mà hầu như model nào cũng sử dụng đến nó
- Dense layer này sử dụng như một layer neural network bình thường Các tham số quan tâm
+ activation dùng để chọn activation
+ input_dim chiều input nếu là layer đầu tiên
+ use_bias có sử dụng bias ko,true or false
+ kernel_initializer: khởi tạo giá trị đầu cho tham số trong layer trừ bias + bias_initializer: khởi tạo giá trị đầu cho bias
+ kernel_regularizer:regularizer cho coeff
+ bias_regularizer:regularizer cho bias
+ activity_regularizer có sử dụng regularizer cho output không
+ kernel_constraint,bias_constraint có ràng buộc về weight không
- Activation dùng để chọn activation trong layer(có thể dùng tham số activation thay thế)
- Dropout layer này dùng như regularization cho các layer hạn chế overfiting Tham số cần chú ý :
+ seed: random seed bình thường
- Flatten dùng để lát phằng layer để fully connection, vd : shape : 20x20 qua layer này sẽ là 400x1
- Input layer này sử dụng input như 1 layer
- Reshape giống như tên gọi của nó, dùng để reshape
- Lambda dùng như lambda trong python
Convolutional Layers: chứa các layer trong mạng nơ ron tích chập
- Conv1D,Conv2D là convolution layer dùng để lấy feature từ image tham số cần chú ý:
+ filters số filter của convolution layer
+ kernel_size size window search trên image
+ strides bước nhảy mỗi window search
+ padding same là dùng padding,valid là không
+ data_format format channel ở đầu hay cuối
- UpSampling1D,UpSampling2D Ngược lại với convolution layer:
+ Size vd (2,2) có nghĩa mỗi pixel ban đầu sẽ thành 4 pixel
- ZeroPadding1D,ZeroPadding2D dùng để padding trên image
Pooling Layers : Chứa các layer dùng trong mạng CNN
- MaxPooling1D,MaxPooling2D dùng để lấy feature nổi bật(dùng max) và giúp giảm parameter khi training
- AveragePooling1D,AveragePooling2D giống như maxpooling nhưng dùng Average
Recurrent Layers chứa các layers dùng trong mạng RNN
- RNN: layer RNN cơ bản
- GRU: khắc phục hạn chế RNN tránh vanish gradient
- LSTM: Long Short-Term Memory layer
Embedding layer là một thành phần quan trọng trong xử lý ngôn ngữ tự nhiên (NLP), giúp chuyển đổi dữ liệu sang một không gian mới với kích thước nhỏ hơn Thay vì sử dụng mã hóa one-hot cứng nhắc, embedding cho phép học từ dữ liệu, mang lại hiệu quả và tính linh hoạt cao hơn trong việc biểu diễn thông tin.
- input_dim: size của vocabulary
- output_dim: size của word embbding
- input_length: chiều dài mỗi sequence
Merge Layers : chứa các layers giúp chúng ta cộng,trừ,hoặc nối các layer như các vector vậy
- Average: tính trung bình các layers
- Maximum: lấy maximun giữa các layers
- Dot: Nhân matrix giữ 2 layers
Own Keras layers : Giúp chúng ta có thể xây dựng layer như theo ý muốn, gồm
3 method chúng ta cần chú ý là build,call và compute_output_shape
Chúng ta tìm hiểu đến tiền xử lý dữ liệu trong keras, nó được chia ra làm 3 phần :
Sequence Preprocessing tiền xử lý chuỗi
- TimeseriesGenerator cái này dùng để tạo dữ liệu cho time series
- Pad_sequences dùng để padding giúp các chuỗi có độ dài bằng nhau
- Skipgrams tạo data trong model skip gram,kết quả trả về 2 tuple nếu word xuất hiện cùng nhau là 1 nếu không là 0
Text Preprocessing tiền xử lý text
- Tokenizer giống kỹ thuật tokenizer trong nlp, tạo tokenizer từ documment
- One_hot tạo data dạng one hot encoding
- Text_to_word_sequence covert text thành sequence
Image Preprocessing tiền xử lý image
- ImageDataGenerator tạo thêm data bằng cách scale,rotation…
Các Function trong bộ xương của Model
Các hàm loss functions thường dùng :
- Mean_squared_error thường dùng trong regression tính theo eculic
- Mean_absolute_error tính theo trị tuyệt đối
- Categorical_crossentropy dùng trong classifier nhiều class
- Binary_crossentropy dùng trong classifier 2 class
- Kullback_leibler_divergence dùng để tính loss giữa phân phối thực tế và thực nghiệm
metrics nó là thước đo để ta đánh giá accuracy của model:
- binary_accuracy: nếu y_true==y_pre thì trả về 1 ngược lại 0,dùng cho 2 class
- categorical_accuracy: tương tự binary_accuracy nhưng cho nhiều class
optimizers dùng để chọn thuật toán training
- SGD: Stochastic gradient descent optimizer
activations để chọn activation function
- Linear như trong linear regression
- Softmax dùng trong multi classifier
- Relu max(0,x) dùng trong các layer CNN,RNN để giảm chi phí tính toán
- Sigmoid range (0,1) dùng nhiều trong binary class
Callbacks : khi model chúng ta lớn có khi training thì gặp sự cố ta muốn lưu lại model để chạy lại thì callback giúp t làm điều này
- ModelCheckpoint lưu lại model sau mỗi epoch
- EarlyStopping stop training khi training ko cải thiện model
- ReduceLROnPlateau giảm learning mỗi khi metrics ko được cải thiện
Datasets Keras hỗ trợ một số dataset theo công thức:
- cifar100 gồm 50,000 32x32 color training images, labeled over 100 categories, and 10,000 test images
- mnist data 70k image data hand written
- fashion_mnist Dataset of 70k 28x28 grayscale images of 10 fashion categories
- imdb 25,000 movies reviews from IMDB, label đánh theo pos/neg
- reuters 11,228 newswires from Reuters, labeled over 46 topics
- boston_housing data giá nhà ở boston theo 13 features
Applications chứa các pre-training weight của các model deep learning nổi tiếng.Xception,VGG16,VGG19,resnet50,inceptionv3,InceptionResNetV2,Mobile
Net,DenseNet,NASNet cấu trúc chung như sau :
- preprocess_input dùng để preprocessing input custom same với input của pretraining
- decode_predictions dùng để xem label predict
Backend trong Keras là các thư viện đã được xây dựng sẵn, cho phép người dùng tiết kiệm thời gian và chi phí thay vì phải phát triển các công thức từ đầu Keras hỗ trợ ba backend chính là TensorFlow, Theano và CNTK, giúp tối ưu hóa quá trình phát triển mô hình.
Initializers set the initial values for the weights of coefficients and biases before training, using kernel_initializer and bias_initializer By default, these initializers are configured with the glorot_uniform distribution, which provides a uniform distribution with a value of 1/sqrt(input + output).
regularizers Dùng để phạt những coeff nào tác động quá mạnh vào mỗi layer thường dùng là L1 và L2
constraints dùng để thiết lập các điều kiện ràng buộc khi training
visualization giúp chúng ta plot lại cấu trúc mạng neral network
Utils chứa các function cần thiết giúp ta xử lý data nhanh hơn
- Normalize chuẩn hóa data theo L2
- Plot_model giúp chúng ta plot model
- To_categorical covert class sang binary class matrix
TỔNG QUAN VỀ ANDROID VÀ FIREBASE
Giới thiệu hệ điều hành android
Android là hệ điều hành di động mã nguồn mở dựa trên nền tảng Linux phiên bản 2.6, được phát triển từ năm 2005 sau khi Google mua lại công ty Android Nó đã trở thành một trong những hệ điều hành di động phổ biến nhất trên thế giới, cung cấp tính năng mạnh mẽ cho các dòng điện thoại SmartPhone.
Hệ điều hành Android là một nền tảng di động mạnh mẽ với bảo mật cao, hỗ trợ nhiều công nghệ tiên tiến như 4G và sắp tới là 5G, cùng với GPS và Wi-Fi Nó tương thích với đa dạng phần cứng và các thiết bị nhập liệu như bàn phím và màn hình cảm ứng Với khả năng kết nối tốt với các mạng không dây, Android cũng hỗ trợ công nghệ OpenGL, cho phép chơi media, hoạt hình và trình diễn đồ họa một cách xuất sắc, tạo điều kiện thuận lợi cho việc phát triển các ứng dụng phức tạp, đặc biệt là trò chơi.
Android liên tục được cải tiến qua từng bản cập nhật từ Google, giúp hệ điều hành này hoạt động tốt hơn, nhanh chóng và ổn định hơn Mỗi phiên bản mới đều hỗ trợ thêm các công nghệ mới, mang lại trải nghiệm người dùng tốt hơn Hiện tại, phiên bản mới nhất của Android là 9.0, được phát hành vào ngày 06/08/2018 và vẫn đang tiếp tục được cập nhật để đáp ứng nhu cầu của người dùng.
Năm 2008, Android đã mở mã nguồn, cho phép các hãng điện thoại tùy chỉnh và thiết kế hệ điều hành theo nhu cầu riêng của họ Điều này không chỉ giúp tiết kiệm chi phí phát triển mà còn mang lại lợi ích cho cả các hãng nhỏ và lớn như Samsung và HTC Hệ điều hành mở và miễn phí này đã tạo điều kiện thuận lợi cho sự phát triển đa dạng của các mẫu điện thoại.
Google không thu phí các hãng sản xuất điện thoại cho hệ điều hành Android, nhưng nhờ vào sự phổ biến của Android, các dịch vụ như Google Search và Google Maps dễ dàng xâm nhập vào thị trường di động Mỗi chiếc điện thoại đều tích hợp nhiều dịch vụ của Google, giúp công ty kiếm lợi nhuận lớn chủ yếu từ quảng cáo trên các nền tảng này.
Với sự phổ biến của hệ điều hành Android, các nhà phát triển ứng dụng có thể tự tin phát triển ứng dụng cho nền tảng này, vì ứng dụng của họ sẽ tương thích với nhiều dòng điện thoại khác nhau Họ không cần lo lắng về việc phát triển cho từng loại điện thoại hay phiên bản cụ thể, nhờ vào nền tảng Android chung và máy ảo Java đảm nhận việc thực thi ứng dụng trên các thiết bị khác nhau.
26 thoại mà nó đang chạy Tất cả các chương trình ứng dụng được viết bằng ngôn ngữ Java kết hợp với XML nên có khả năng khả chuyển cao
4.1.1 Các phiên bản của Android
Phiên bản Tên Ngày phát hành
4.1.2 Kiến trúc của hệ điều hành
Android gồm 5 phần chính sau được chứa trong 4 lớp:
1 Nhân Linux: Đây là nhân nền tảng mà hệ điều hành Android dựa vào nó để phát triển Đâu là lớp chứa tất cả các thiết bị giao tiếp ở mức thấp dùng để điều khiển các phần cứng khác trên thiết bị Android
2 Thư viện: Chứa tất cả các mã cái mà cung cấp cấp những tính năng chính của hệ điều hành Android, đôi với ví dụ này thì SQLite là thư viện cung cấp việc hộ trợ làm việc với database dùng để chứa dữ liệu Hoặc Webkit là thư viện cung cấp những tính năng cho trình duyệt Web
3 Android runtime: Là tầng cùng với lớp thư viện Android runtime cung cấp một tập các thư viện cốt lỗi để cho phép các lập trình viên phát triển viết ứng dụng bằng việc sử dụng ngôn ngữ lập trình Java Android Runtime bao gốm máy ảo Dalvik(ở các version < 4.4, hiện tài là phiên bản máy ảo ART được cho là mạnh mẽ hơn trong việc xử lý biên dịch) Là cái để điều khiển mọi hoạt động của ứng dụng Android chạy trên nó(máy ảo Dalvik sẽ biên dịch ứng dụng để nó có thể chạy(thực thi) được , tương tự như các ứng dụng được biên dịch trên máy ảo Java vậy) Ngoài ra máy ảo còn giúp tối ưu năng lượng pin cũng như CPU của thiết bị Android
4 Android framework: Là phần thể hiện các khả năng khác nhau của
Android cung cấp các tính năng như kết nối, thông báo và truy xuất dữ liệu, giúp các nhà phát triển ứng dụng tạo ra những ứng dụng hiệu quả và tiện ích.
5 Application: Tầng ứng dụng là tầng bạn có thể tìm thấy chuyển các thiết bị Android như Contact, trình duyệt…Và mọi ứng dụng bạn viết đều nằm trên tầng này
Dưới đây là hình ảnh cho các tầng này:
Hình 4.1.2 Cấu trúc của hệ điều hành Android.
Giới thiệu nền tảng Firebase
Firebase là dịch vụ cơ sở dữ liệu đám mây mạnh mẽ của Google, giúp người dùng dễ dàng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.
Firebase cung cấp giao diện lập trình ứng dụng API đơn giản, giúp tăng số lượng người dùng và tối ưu hóa lợi nhuận Với tính năng đa năng và bảo mật cao, Firebase hỗ trợ cả hai nền tảng Android và iOS, lý do nhiều lập trình viên lựa chọn Firebase làm nền tảng đầu tiên để phát triển ứng dụng cho hàng triệu người dùng toàn cầu.
Gần một thập niên trước, Firebase được ra đời từ nền tảng Envolve, chuyên cung cấp API để tích hợp tính năng chat vào trang web Ngoài chức năng nhắn tin trực tuyến, Envolve còn hỗ trợ truyền và đồng bộ hóa dữ liệu cho các ứng dụng khác như trò chơi trực tuyến Do đó, các nhà sáng lập đã tách biệt hệ thống nhắn tin và đồng bộ dữ liệu thời gian thực thành hai phần riêng biệt Năm 2012, Firebase ra mắt với dịch vụ Backend-as-a-Service, và vào năm 2014, Google đã mua lại nền tảng này.
Firebase và phát triển nó thành một dịch vụ đa chức năng được hàng triệu người sử dụng cho đến hiện nay
Firebase Realtime Database cung cấp một cơ sở dữ liệu thời gian thực khi bạn đăng ký tài khoản trên Firebase để phát triển ứng dụng Dữ liệu được lưu trữ dưới dạng JSON và tự động đồng bộ hóa đến mọi kết nối client, cho phép tất cả các ứng dụng đa nền tảng sử dụng chung một cơ sở dữ liệu Mọi thay đổi trong ứng dụng sẽ được cập nhật ngay lập tức, đảm bảo dữ liệu luôn mới nhất thông qua kết nối an toàn SSL với chứng nhận 2048 bit Trong trường hợp mất mạng, dữ liệu sẽ được lưu trữ ở local và tự động cập nhật lên Server của Firebase khi có kết nối trở lại, đồng thời cũng đảm bảo rằng các dữ liệu cũ ở local được làm mới với thông tin mới nhất từ Server.
Firebase Authentication cung cấp các phương thức xác thực người dùng qua Email, Facebook, Twitter, GitHub và Google, đồng thời hỗ trợ xác thực nặc danh cho ứng dụng Tính năng này giúp bảo vệ thông tin cá nhân của người dùng, đảm bảo an toàn và ngăn chặn việc đánh cắp tài khoản.
Firebase Hosting cung cấp dịch vụ lưu trữ an toàn thông qua công nghệ bảo mật SSL và mạng phân phối nội dung (CDN).
4.2.4 Ưu điểm và nhược điểm
Firebase giúp triển khai ứng dụng nhanh chóng nhờ vào việc không cần lo lắng về phần backend và các API hỗ trợ đa nền tảng Điều này tiết kiệm thời gian quản lý và đồng bộ dữ liệu cho người dùng Ngoài ra, Firebase còn cung cấp dịch vụ hosting và hỗ trợ xác thực thông tin khách hàng, giúp quá trình triển khai ứng dụng trở nên hiệu quả hơn.
Bảo mật là một yếu tố quan trọng khi hoạt động trên nền tảng đám mây, và Firebase cung cấp khả năng bảo vệ dữ liệu thông qua giao thức bảo mật SSL Hệ thống này cũng cho phép phân quyền người dùng cơ sở dữ liệu bằng Javascript, từ đó nâng cao độ an toàn cho các ứng dụng.
Firebase cung cấp sự ổn định cho các ứng dụng nhờ vào nền tảng cloud của Google, giúp chúng luôn hoạt động mượt mà Bên cạnh đó, việc nâng cấp và bảo trì server trở nên dễ dàng và không làm gián đoạn hoạt động của ứng dụng.
Nhược điểm của Firebase chủ yếu nằm ở phần Realtime Database, cụ thể là cấu trúc của cơ sở dữ liệu Firebase tổ chức dữ liệu theo dạng cây với mối quan hệ cha-con, thay vì kiểu bảng như trong SQL Do đó, những người quen thuộc với SQL có thể gặp khó khăn từ mức độ nhẹ đến khá nhiều khi làm quen với cách thức này.
4.2.5 Các dịch vụ cung cấp
Nhóm công cụ Firebase Develop & Test Your App:
- Realtime Database: là dịch vụ lưu trữ và đồng bộ dữ liệu người dùng thời gian thực Có hỗ trợ cho Android, IOS, Web, C++, Unity và Xamarin
Người dùng có thể lưu trữ và lấy dữ liệu từ máy chủ rất dễ dàng
Crashlytics là một hệ thống theo dõi và lưu trữ thông tin lỗi của ứng dụng, giúp thu thập và trình bày các thông tin lỗi một cách rõ ràng và hợp lý Hệ thống này ghi lại toàn bộ chu trình hoạt động của ứng dụng cho đến khi xảy ra lỗi, đảm bảo người phát triển có thể dễ dàng phân tích và khắc phục sự cố.
Cloud Firestore là dịch vụ lưu trữ và đồng bộ dữ liệu toàn cầu giữa người dùng và thiết bị, sử dụng cơ sở dữ liệu NoSQL trên hạ tầng đám mây.
- Authentication: là dịch vụ quản lý người dùng đơn giản và an toàn
Authentication cung cấp nhiều phương pháp xác thực email và mật khẩu Google, Facebook
- Cloud Functions: là dịch vụ mở rộng ứng dụng bằng mã phụ trợ tùy chỉnh mà không cần quản lý và quy mô các máy chủ riêng
Cloud Storage là dịch vụ lưu trữ và chia sẻ nội dung do người dùng tạo ra, bao gồm hình ảnh, âm thanh và video Dịch vụ này cung cấp bộ nhớ mạnh mẽ, dễ sử dụng và tiết kiệm chi phí, được thiết kế để đáp ứng quy mô của Google.
Dịch vụ hosting giúp đơn giản hóa quá trình lưu trữ website, cung cấp các công cụ và tính năng mạnh mẽ phù hợp cho các trang web hiện đại.
- Test Lab for Android: là công cụ tự động chạy thử và tùy chỉnh cho ứng dụng trên các thiết bị ảo và vật lý của Google cung cấp
- Performance Monitoring: là dịch vụ có khả năng chẩn đoán các vấn đề xảy ra với hiệu suất ứng dụng
Nhóm công cụ Firebase Grow & Engage Your Audience:
Google Analytics phân tích thuộc tính và hành vi người dùng trên bảng điều khiển, giúp đưa ra quyết định cho lộ trình phát triển ứng dụng Ngoài ra, công cụ này cung cấp thông tin thời gian thực từ báo cáo và cho phép xuất dữ liệu sự kiện thô tới Google BigQuery để thực hiện phân tích tùy chỉnh.