Left_Udjat: Phát Hiện Máy Bay Phản Lực Bằng Phương Pháp Học Chuyển Giao (Modern Jet Aircraft Detection Using Transfer Learning Methods)
- Giới Thiệu
- Tính Năng Chính
- Cài Đặt
- Cấu Trúc Dự Án
- Dữ Liệu
- Kiến Trúc Mô Hình & Huấn Luyện
- Sử Dụng
- Kết Quả
- Mô Hình Đã Huấn Luyện Trước
- Giấy Phép
- Lời Cảm Ơn
- Liên Hệ
Dự án Left_Udjat tập trung vào việc phát hiện đối tượng máy bay phản lực trong hình ảnh và video sử dụng mô hình YOLOv11. Mục tiêu là xây dựng một hệ thống phát hiện có khả năng nhận diện các loại máy bay chiến đấu cụ thể như F22, F35, và J20.
- Huấn luyện YOLOv11: Hỗ trợ huấn luyện mô hình YOLOv11 trên bộ dữ liệu tùy chỉnh.
- Phát hiện đối tượng: Thực hiện nhận diện máy bay phản lực trên hình ảnh và video.
- Xử lý video: Cắt, điều chỉnh FPS và tốc độ phát lại video.
- Chuyển đổi Video sang GIF: Dễ dàng chuyển đổi video kết quả nhận diện sang định dạng GIF để chia sẻ và trình bày.
-
Clone Repository:
git clone https://github.com/your-username/fighter_object_detection.git cd fighter_object_detection(Thay
https://github.com/your-username/fighter_object_detection.gitbằng URL repo của bạn) -
Tạo và Kích hoạt Môi trường Ảo (Khuyến nghị):
python -m venv venv # Trên Windows .\venv\Scripts\activate # Trên macOS/Linux source venv/bin/activate
-
Cài đặt Dependencies:
pip install -r requirements.txt
Lưu ý: Đảm bảo bạn có cài đặt PyTorch với hỗ trợ CUDA nếu muốn huấn luyện/nhận diện trên GPU.
fighter_object_detection/
├── data/
│ ├── interim/ # Dữ liệu tạm thời sau khi xử lý ban đầu
│ ├── processed/ # Dữ liệu đã được xử lý, sẵn sàng cho huấn luyện (YOLO format)
│ ├── processed_cache/ # Cache của dữ liệu đã xử lý
│ └── raw/ # Dữ liệu gốc tải về
│ ├── 333.v1i.coco/
│ ├── Cats.v1i.coco/
│ ├── fight_10000_images/
│ └── yolov8veesles.v1i.coco/
├── runs/ # Thư mục lưu trữ kết quả huấn luyện, phát hiện
│ └── detect/
│ ├── finetuned_test_report/
│ ├── yolov11_fighter_jets_kaggle_<timestamp>/ # Kết quả huấn luyện
│ └── f22_detection_result/ # Kết quả nhận diện video
├── src/
│ ├── data/ # Scripts xử lý và chuẩn bị dữ liệu
│ │ ├── convert_coco_to_yolo.py
│ │ ├── deduplicate_dataset.py
│ │ ├── merge_coco.py
│ │ ├── split_dataset.py
│ │ └── video_editor.py # Script chỉnh sửa video
│ ├── model/ # Scripts liên quan đến mô hình và huấn luyện
│ │ ├── detect.py # Script nhận diện trên ảnh/video
│ │ ├── train_yolov11.py # Script huấn luyện mô hình
│ │ └── model.py
│ └── visualization/ # Scripts hỗ trợ trực quan hóa
│ └── convert_video_to_gif.py # Script chuyển đổi video sang GIF
├── fighter_jets_kaggle.yaml # Cấu hình dataset cho Kaggle
├── fighter_jets.yaml # Cấu hình dataset chung
├── requirements.txt # Danh sách các thư viện Python
└── README.md # File README này
Dự án sử dụng kết hợp nhiều bộ dữ liệu máy bay phản lực, chủ yếu từ Roboflow Universe. Dữ liệu được hợp nhất và chuyển đổi sang định dạng YOLO để huấn luyện.
Các bộ dữ liệu nguồn bao gồm:
333.v1i.coco: Cung cấp bởi người dùng Roboflow, được cấp phép theo CC BY 4.0. Chứa 1150 hình ảnh huấn luyện với các lớp đa dạng như:A10,A400M,AG600,AV8B,B1,B2,B52,Be200,C130,C17,C2,C5,E2,E7,EF2000,F117.fight_10000_images: Cung cấp bởi người dùng Roboflow, được cấp phép theo MIT License. Chứa khoảng 7070 hình ảnh huấn luyện với các máy bay chiến đấu.- Ngoài ra, các bộ dữ liệu khác như
Cats.v1i.cocovàyolov8veesles.v1i.cococũng được sử dụng trong quá trình tiền xử lý dữ liệu.
Dữ liệu được xử lý cuối cùng cho huấn luyện được cấu hình trong fighter_jets_kaggle.yaml với các lớp chính:
F22F35J20
Dự án sử dụng YOLOv11 làm kiến trúc mô hình chính cho tác vụ phát hiện đối tượng. Quá trình huấn luyện được thực hiện bằng cách fine-tuning mô hình yolov11l (YOLOv11 Large) trên bộ dữ liệu hợp nhất.
Các tham số huấn luyện chính (trong src/model/train_yolov11.py):
epochs: 200imgsz: 1024batch: 6device: 0 (GPU đầu tiên)optimizer: Adampatience: 20 (Early stopping)Data Augmentation: Hỗ trợ nhiều kỹ thuật tăng cường dữ liệu nhưhsv_h,hsv_s,hsv_v,degrees,translate,scale,shear,perspective,flipud,fliplr,copy_paste.
Để huấn luyện mô hình YOLOv11 trên bộ dữ liệu đã chuẩn bị:
python src/model/train_yolov11.pyKết quả huấn luyện sẽ được lưu trong thư mục runs/detect/yolov11_fighter_jets_kaggle_<timestamp>.
Để chạy nhận diện trên một video cụ thể và lưu video kết quả với bounding box:
python src/model/detect.pyLưu ý: Các đường dẫn mô hình và video đầu vào đã được hardcode trong src/model/detect.py. Đảm bảo rằng bạn đã tải best.pt từ quá trình huấn luyện của mình vào đường dẫn được chỉ định.
Video đầu ra sẽ được lưu vào thư mục runs/detect/f22_detection_result/.
Để cắt video, điều chỉnh FPS hoặc tốc độ phát lại:
python src/data/video_editor.pyLưu ý: Các tham số video đầu vào/đầu ra, thời gian cắt, FPS và tốc độ đã được hardcode trong src/data/video_editor.py. Bạn có thể thay đổi chúng trực tiếp trong file.
Để tạo file GIF từ video đã xử lý:
python src/visualization/convert_video_to_gif.pyLưu ý: Các đường dẫn video đầu vào/GIF đầu ra, FPS và kích thước GIF đã được hardcode trong src/visualization/convert_video_to_gif.py. Điều chỉnh các tham số này trong file để đạt được chất lượng GIF mong muốn.
Các kết quả huấn luyện, đánh giá và nhận diện được lưu trữ trong thư mục runs/detect/.
-
Báo cáo huấn luyện: Trong
runs/detect/yolov11_fighter_jets_kaggle_<timestamp>/bạn sẽ tìm thấy:- Các biểu đồ hiệu suất (
BoxF1_curve.png,BoxP_curve.png,BoxPR_curve.png,BoxR_curve.png) - Ma trận nhầm lẫn (
confusion_matrix.png,confusion_matrix_normalized.png) - File
results.csvchứa các chỉ số huấn luyện. - Các checkpoint mô hình (
weights/best.pt,weights/last.pt).
Ví dụ về biểu đồ kết quả:
(Lưu ý: Các hình ảnh trên là ví dụ, đường dẫn có thể thay đổi tùy theo timestamp của lần chạy) - Các biểu đồ hiệu suất (
-
Kết quả nhận diện video: Video đã được nhận diện và xử lý sẽ có sẵn trong
runs/detect/f22_detection_result/. -
Dự đoán trên tập validation:
Dự án sử dụng mô hình yolov11l.pt làm điểm khởi đầu cho quá trình fine-tuning. Mô hình này được tải tự động bởi thư viện Ultralytics. Mô hình best.pt sau khi huấn luyện sẽ nằm trong thư mục kết quả của lần chạy tương ứng.
Dự án này được cấp phép theo Giấy phép MIT License.
Các bộ dữ liệu nguồn có thể có giấy phép riêng, ví dụ: bộ dữ liệu 333.v1i.coco được cấp phép theo CC BY 4.0.


