OncoVision gom camera realtime, training YOLO và nhánh medical vào một repo duy nhất, nên README này là bản đồ nhanh nhất để vào hệ thống.
| Nhóm | Ảnh/volume thường dùng |
|---|---|
| Gan | Siêu âm, CT, MRI, PET/CT |
| Phổi | X-quang ngực, CT ngực, PET/CT |
| Vú | Mammogram, siêu âm vú, MRI vú |
| Dạ dày | Nội soi, CT, MRI, PET, EUS |
| Đại trực tràng | Nội soi đại tràng, CT ngực-bụng-chậu, MRI trực tràng, PET |
| Tuyến tiền liệt | MRI tuyến tiền liệt, siêu âm, PET/CT |
| Cổ tử cung | MRI, CT, PET/CT |
- Xem Tóm Tắt Nhanh để hiểu repo làm gì trong 30 giây.
- Mở Bản Đồ Entrypoint để biết dùng file nào cho việc nào.
- Chọn một nhánh:
- docs/runtime_tool_guide.md nếu bạn làm camera realtime.
- docs/medical_imaging_guide.md nếu bạn làm medical.
- docs/training_guide.md nếu bạn train model.
Model medical mặc định được tìm theo thứ tự:
medical_7_cancers.ptở root,medical/medical_7_cancers.pt, rồi filefallback_modelnếu bật trongconfig/medical_settings.yaml. Hệ thống hỗ trợ 2 backend classifier: centroid (legacy) và CNN (PyTorch). Đổi qua CNN bằngclassifier_backend: cnntrongconfig/medical_settings.yaml.
- Tóm Tắt Nhanh
- Ngôn Ngữ Và Thư Viện
- Bản Đồ Entrypoint
- Khi Nào Dùng File Nào
- Luồng Nghiệp Vụ
- Cài Đặt Nhanh
- Tài Liệu Trong docs
- Dành Cho Người Mới
| Nhóm | Giá trị |
|---|---|
| Realtime camera | Chạy camera desktop với các mode auto, high, medium, low |
| Medical workflow | Quản lý skin lesion dataset, report, status model và output medical |
| Entrypoint rõ ràng | Mỗi tác vụ lớn có run_*.py riêng |
| Kiểm tra sớm | Có run_doctor.py, run_smoke.py, run_tests.py để rà lỗi nhanh |
| Tài liệu vận hành | Có bộ docs/ cho cài đặt, training, runtime, medical và kiến trúc |
Mục tiêu của README là cho bạn nắm được hệ thống trong vài phút, rồi đi đúng file thay vì phải lần mò cả repo.
| Ký hiệu | Thành phần |
|---|---|
| 🐍 | Python |
| 🧠 | PyTorch / Ultralytics |
| 📷 | OpenCV |
| 🪟 | PySide6 |
| 🗃️ | SQLite |
| 📄 | YAML / JSON |
| 🧰 | utils/ helper nội bộ |
Nếu chỉ nhìn một chỗ, hãy nhìn bảng này cùng badge phía trên để hiểu repo đang dựa vào những gì.
run_menu.py -> menu tổng hợp
run_app.py -> runtime advisor / camera realtime
run_chat.py -> chat UI / medical preflight / cleanup output
run_doctor.py -> doctor scan toàn hệ thống
run_train.py -> train YOLO object detection
run_medical.py -> CLI quản lý luồng medical
run_smoke.py -> smoke check entrypoint
run_tests.py -> dashboard unit test
| Bạn muốn làm gì | Entrypoint nên dùng |
|---|---|
| Xem toàn bộ chức năng | python run_menu.py |
| Kiểm tra máy nên chạy runtime nào | python run_app.py --advisor-only |
| Mở camera realtime | python run_app.py |
| Kiểm tra chat UI sẵn sàng chưa | python run_chat.py --check-only |
| Mở chat UI desktop | python run_chat.py |
| Mở web chat UI | python -m uvicorn web_app:app --host 0.0.0.0 --port 8000 rồi mở http://localhost:8000 |
| Xem lịch sử chat web | http://localhost:8000/admin/db |
| Kiểm tra tổng thể môi trường | python run_doctor.py --skip-camera-check |
| Train YOLO object detection | python run_train.py |
| Kiểm tra nhanh luồng y dược | python run_medical.py status |
| Train classifier nhận diện modality | python run_medical.py train-modality |
| Chạy smoke check an toàn | python run_smoke.py |
| Chạy unit test | python -m unittest discover -s tests -p "test_*.py" |
Mục tiêu:
- quản lý dataset object detection,
- train model YOLO custom,
- validate model,
- đưa model vào camera realtime.
Thư mục liên quan:
dataset/object_detection/raw/
dataset/object_detection/processed/
models/pretrained/
models/trained/
Luồng cơ bản:
python run_train.py --check-only
python training\prepare_dataset.py
python training\validate_dataset.py
python training\split_dataset.py
python run_train.py
python training\validate_model.py
python run_app.py --model models/trained/best.ptMục tiêu:
- tổ chức dataset skin lesion,
- theo dõi model medical,
- chạy các lệnh khởi tạo, status, ready, sources, verify,
- phục vụ chat UI và pipeline phân tích medical.
Thư mục liên quan:
dataset/medical/skin_lesion/
output/medical/
Luồng cơ bản:
python run_medical.py init-dataset
python run_medical.py status
python run_medical.py sources
python run_medical.py ready
python run_chat.py --check-onlygit clone <repo-url>
cd OncoVision
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python run_menu.py- docs/project_overview.md: bản đồ kiến trúc tổng thể
- docs/runtime_tool_guide.md: giải thích runtime advisor
- docs/medical_imaging_guide.md: luồng y dược
- docs/training_guide.md: luồng training object detection
- docs/ci_and_quality.md: cách đọc CI, smoke và quality gate
- docs/troubleshooting.md: lỗi thường gặp và cách khoanh vùng
- Mở docs/project_overview.md để hiểu cấu trúc tổng thể.
- Mở docs/runtime_tool_guide.md nếu bạn muốn chạy camera realtime.
- Mở docs/medical_imaging_guide.md nếu bạn làm nhánh medical.
- Mở docs/training_guide.md nếu bạn chuẩn bị train model.
- Mở docs/ci_and_quality.md nếu bạn đang debug CI hoặc quality gate.
- Mở docs/troubleshooting.md nếu gặp lỗi cụ thể.
| Nhóm | Ảnh/volume thường dùng |
|---|---|
| Gan | Siêu âm, CT, MRI, đôi khi PET/CT |
| Phổi | X-quang ngực, CT ngực, PET/CT |
| Vú | Mammogram, siêu âm vú, MRI vú |
| Dạ dày | Nội soi, CT, MRI, PET, EUS |
| Đại trực tràng | Nội soi đại tràng, CT ngực-bụng-chậu, MRI trực tràng, PET |
| Tuyến tiền liệt | MRI tuyến tiền liệt, siêu âm, PET/CT |
| Cổ tử cung | MRI, CT, PET/CT |
-
Validator ảnh đầu vào (
medical/validator.py): kiểm tra định dạng, đọc được, phân loại modality + body region, reject ảnh không hợp lệ. -
Classifier mới (
medical/cnn_classifier.py): ResNet/EfficientNet backbone, pretrained ImageNet, dropout, cosine annealing scheduler. Lưu.ptformat. -
Backward compatible: cũ centroid classifier vẫn hoạt động, load CNN tự động khi đúng format.
-
CLI validate:
python run_medical.py validate-image --image <path> --min-confidence 0.30 -
Pap/HPV, soi cổ tử cung và sinh thiết là đầu vào lâm sàng, không phải file ảnh để upload trực tiếp. -
Chat UI có preset chọn nhóm bệnh để lọc nguồn ảnh ngay từ đầu.
-
Chat UI có thêm chọn modality theo nhóm bệnh để file picker bám đúng loại ảnh cần dùng.
-
File picker sẽ ưu tiên đuôi ảnh/volume phù hợp với modality đã chọn.
-
Folder DICOM series và volume
.nii/.nii.gzcó thể xem từng lát trong preview.
Dùng để train classifier phân loại modality ảnh y khoa (CT/MRI/X-ray/...). Cấu trúc:
dataset/medical_modality/
ct/ 200 anh (OrganMNIST3D - CT)
mri/ 200 anh (OrganMNIST3D - MRI)
xray/ 200 anh (ChestMNIST - X-quang nguc)
mammogram/ 200 anh (BreastMNIST - nhu anh mammography)
endoscopy/ 200 anh (PathMNIST - mo beneficiary hoc duong tieu hoa/colon)
ultrasound/200 anh (BloodMNIST - anh mau, gan the closest)
pet_ct/ 200 anh (OrganMNIST3D + augment, synthetic)
eus/ 200 anh (PathMNIST + augment, synthetic)
- Nguồn: MedMNIST (BSD license), ảnh chuẩn hóa, resize 224×224 RGB.
- Tổng: 1600 ảnh (200/class × 8 modality).
- Sinh lại bằng:
python scripts/build_modality_dataset.py(tự động tải MedMNIST và tạo dataset). pet_ct/euslà ảnh augment tổng hợp (MedMNIST không có bộ gốc); cần bộ lâm sàng thật nếu muốn 100% ảnh thật.- Train:
python run_medical.py train-modality(tự chia 80/20 train/val stratified). Model ramodels/pretrained/modality_classifier.pt. - Hiện tại: train 12 epoch đạt
val_acc ≈ 0.74.
dataset/medical/unlabeled/ chứa ảnh y khoa thật (từ MedMNIST test split) dùng cho active-learning gợi ý ảnh cần dán nhãn. Sinh bằng:
python scripts/build_unlabeled_dataset.pyMỗi lần chạy tải ~160 ảnh (224×224 RGB) từ BloodMNIST, PathMNIST, OrganMNIST3D, ChestMNIST. Ảnh có prefix unlabeled_ để không nhầm với ảnh đã dán nhãn.
Mục tiêu:
- giao diện chat web giống desktop,
- lưu lịch sử vào SQLite,
- xem và xóa lịch sử từ sidebar,
- upload ảnh y khoa phân tích trực tiếp.
Thư mục liên quan:
web_app.py
templates/index.html
output/web_uploads/
output/chat_history.db
Luồng cơ bản:
python -m uvicorn web_app:app --host 0.0.0.0 --port 8000Mở trình duyệt: http://localhost:8000
Tính năng:
- Chat realtime với medical pipeline
- Upload ảnh y khoa (JPG, PNG, DICOM, NIfTI)
- Phân tích ảnh + hiển thị kết quả
- Lịch sử chat lưu vào
output/chat_history.db - Sidebar xem/xóa lịch sử
- Admin DB viewer:
http://localhost:8000/admin/db





