Chương 3. Triển khai thực nghiệm
3.2. Công cụ lập trình
3.2.1. Tổng quan về Python
Python là một ngôn ngữ lập trình được sử dụng rộng rãi trong các ứng dụng web, phát triển phần mềm, khoa học dữ liệu và máy học (ML). Các nhà phát triển sử dụng Python vì nó hiệu quả, dễ học và có thể chạy trên nhiều nền tảng khác nhau.
Phần mềm Python được tải xuống miễn phí, tích hợp tốt với tất cả các loại hệ thống và tăng tốc độ phát triển.
Hình 3. 2 Giao diện lập trình python trên Visual Studio Code
Những lợi ích của Python bao gồm:
Các nhà phát triển có thể dễ dàng đọc và hiểu một chương trình Python vì ngôn ngữ này có cú pháp cơ bản giống tiếng Anh.
Python giúp cải thiện năng suất làm việc của các nhà phát triển vì so với những ngôn ngữ khác, họ có thể sử dụng ít dòng mã hơn để viết một chương trình Python.
Python có một thư viện tiêu chuẩn lớn, chứa nhiều dòng mã có thể tái sử dụng cho hầu hết mọi tác vụ. Nhờ đó, các nhà phát triển sẽ không cần phải viết mã từ đầu.
Các nhà phát triển có thể dễ dàng sử dụng Python với các ngôn ngữ lập trình phổ biến khác như Java, C và C++.
Cộng đồng Python tích cực hoạt động bao gồm hàng triệu nhà phát triển nhiệt tình hỗ trợ trên toàn thế giới. Nếu gặp phải vấn đề, ta sẽ có thể nhận được sự hỗ trợ nhanh chóng từ cộng đồng.
Trên Internet có rất nhiều tài nguyên hữu ích nếu ta muốn học Python. Ví dụ:
ta có thể dễ dàng tìm thấy video, chỉ dẫn, tài liệu và hướng dẫn dành cho nhà phát triển.
Python có thể được sử dụng trên nhiều hệ điều hành máy tính khác nhau, chẳng hạn như Windows, macOS, Linux và Unix.
Ngoài ra, hiện nay có rất nhiều các IDE (Integrated Development Environment - môi trường phát triển tích hợp) hỗ trợ lập trình python, có thể kể đến như: PyCharm, Spyder, PyDev, Jupyter Notebook, Microsoft Visual Studio hoặc các môi trường online như Google Colab.
Với các đặc điểm trên, Python là một lựa chọn hoàn hảo cho các lập trình viên mới để có thể phát triển được các ứng dụng đơn giản trong thời gian ngắn. Cũng bởi vậy mà hiện nay Python được rất nhiều Nhà phát triển ưu tiên phát triển các thư viện hay các module để thuận tiện hơn trong công việc như giải toán, viết game, xử lý ảnh, hay các thư viện chuyên sâu về Trí tuệ nhân tạo như Tensorflow, Pytorch,…
3.2.2. Một số các thư viện được sử dụng
Trong Python, các thư viện đóng một vai trò quan trọng trong việc mở rộng khả năng của ngôn ngữ lập trình và thực hiện các tác vụ cụ thể một cách dễ dàng.
Trong mỗi dự án, ta thường sử dụng rất nhiều thư viện khác nhau. Đối với dự án này, một số thư viện tiêu biểu có vai trò đặc biệt quan trọng có thể kể đến như:
Torch: là một thư viện trong Python, viết tắt của PyTorch, được phát triển bởi Facebook. Đây là một trong những thư viện hàng đầu dùng để xây dựng và huấn luyện các mô hình học sâu (Deep Learning). Nó cung cấp một cách tiếp cận linh hoạt và hiệu quả để làm việc với tensor (một cấu trúc dữ liệu tương tự như mảng hoặc ma trận, nhưng mở rộng hơn).
Torchvision: là một thư viện mở rộng của PyTorch được thiết kế dành riêng cho các tác vụ liên quan đến thị giác máy tính. Thư viện này cung cấp các công cụ và tiện ích hỗ trợ mạnh mẽ như tập dữ liệu (datasets), mô hình tiền huấn luyện (pretrained models), và các phép biến đổi (transforms) cho xử lý hình ảnh.
OpenCV: là thư viện mã nguồn mở mạnh mẽ dành cho xử lý hình ảnh, video và các ứng dụng liên quan đến thị giác máy tính. Nó hỗ trợ Python, C++, Java và nhiều ngôn ngữ khác, được sử dụng rộng rãi trong các dự án học máy, trí tuệ nhân tạo và thị giác máy tính.Cho phép đọc và trích suất dữ liệu trực tiếp từ camera
Matplotlib: Matplotlib là một thư viện trực quan hóa dữ liệu, cho phép tạo các biểu đồ đẹp và hấp dẫn để hiển thị dữ liệu một cách dễ hiểu.
Sklearn (scikit-learn): Sklearn là một thư viện mã nguồn mở được xây dựng trên ngôn ngữ Python, chuyên về học máy (machine learning) và khai phá dữ liệu (data mining). Nó cung cấp một bộ công cụ đa dạng để xây dựng, đào tạo và đánh giá các mô hình học máy. Các module được sử dụng trong mã của bạn bao gồm:
o train_test_split: Chia dữ liệu thành tập huấn luyện và tập kiểm tra, giúp đánh giá mô hình một cách chính xác.
o metrics: Cung cấp các hàm để đánh giá hiệu suất của mô hình như confusion matrix, precision, recall, F1 score, và ROC curve, giúp người dùng hiểu rõ hơn về khả năng dự đoán của mô hình.
o preprocessing: Cung cấp các công cụ để chuẩn hóa và biến đổi dữ liệu, như StandardScaler, giúp cải thiện hiệu suất của mô hình.
o ensemble: Cung cấp các mô hình học máy như Random Forest, Gradient Boosting, Voting Classifier, và Stacking Classifier, cho phép kết hợp nhiều mô hình để cải thiện độ chính xác và khả năng tổng quát của dự đoán
Timm (PyTorch Image Models): là một thư viện Python mã nguồn mở dành riêng cho PyTorch, cung cấp một bộ sưu tập lớn các mô hình mạng nơ-ron (neural network models) dành cho xử lý ảnh. Đây là một công cụ mạnh mẽ, được phát triển bởi Ross Wightman, với các tính năng nổi bật như hỗ trợ mô hình tiền huấn luyện (pretrained models), các phép biến đổi (transforms), và khả năng huấn luyện hiệu quả.
EarlyStopping: từ ellzaf_ml.tools được triển khai để áp dụng các chiến lược dừng sớm, chỉ lưu mô hình khi không cải thiện được tình trạng mất xác thực trong một số kỷ nguyên được chỉ định. Điều này sẽ đảm bảo chúng tôi lưu được mô hình hoạt động tốt nhất.