Tiện ích mở rộng Ultralytics cho VS Code#
Xem: Cách sử dụng tiện ích mở rộng Ultralytics cho Visual Studio Code | Code snippet có thể dùng ngay | Ultralytics YOLO 🎉
Tính năng và lợi ích#
✅ Bạn là nhà khoa học dữ liệu hay kỹ sư machine learning đang xây dựng ứng dụng thị giác máy tính bằng Ultralytics?
✅ Bạn có ngán việc phải viết đi viết lại cùng một đoạn code không?
✅ Bạn thường quên các đối số hoặc giá trị mặc định của các phương thức train, val, predict, export hoặc track không?
✅ Bạn muốn bắt đầu sử dụng Ultralytics và mong có cách dễ dàng hơn để tham khảo hoặc chạy các ví dụ code?
✅ Bạn muốn tăng tốc chu kỳ phát triển khi làm việc với Ultralytics?
Nếu bạn sử dụng Visual Studio Code và trả lời “có” cho bất kỳ câu hỏi nào ở trên, tiện ích Ultralytics-snippets dành cho VS Code sẽ hỗ trợ bạn! Hãy đọc tiếp để tìm hiểu thêm về tiện ích, cách cài đặt và cách sử dụng.
Chạy code ví dụ sử dụng Ultralytics YOLO trong chưa đầy 20 giây! 🚀
Lấy cảm hứng từ Cộng đồng Ultralytics#
Ý tưởng xây dựng tiện ích này xuất phát từ Cộng đồng Ultralytics. Các câu hỏi của Cộng đồng về những chủ đề và ví dụ tương tự đã thúc đẩy quá trình phát triển dự án. Ngoài ra, nhiều thành viên trong nhóm Ultralytics sử dụng VS Code để tăng tốc công việc của mình ⚡.
Tại sao chọn VS Code?#
Visual Studio Code rất phổ biến với các nhà phát triển trên toàn thế giới và đứng đầu trong Khảo sát nhà phát triển Stack Overflow về mức độ phổ biến vào các năm 2021, 2022, 2023 và 2024. Với khả năng tùy biến cao, các tính năng tích hợp, khả năng tương thích rộng và khả năng mở rộng của VS Code, không có gì ngạc nhiên khi rất nhiều nhà phát triển sử dụng công cụ này. Xét mức độ phổ biến trong cộng đồng nhà phát triển nói chung cũng như trên các cộng đồng Ultralytics tại Discord, Discourse, Reddit và GitHub, việc xây dựng tiện ích mở rộng cho VS Code để tinh giản quy trình làm việc và nâng cao năng suất của bạn là điều hợp lý.
Bạn muốn cho chúng tôi biết bạn thường dùng gì để phát triển code? Hãy vào cuộc thăm dò ý kiến cộng đồng trên Discourse và chia sẻ với chúng tôi! Khi ở đó, bạn cũng có thể xem một số meme yêu thích về thị giác máy tính, machine learning, AI và lập trình viên, hoặc đăng meme yêu thích của bạn!
Cài đặt tiện ích mở rộng#
Mọi môi trường code cho phép cài đặt tiện ích mở rộng VS Code đều phải tương thích với tiện ích Ultralytics-snippets. Sau khi tiện ích được phát hành, chúng tôi phát hiện ra rằng có thể cấu hình neovim để tương thích với các tiện ích mở rộng VS Code. Để tìm hiểu thêm, hãy xem phần cài đặt neovim trong Readme của kho lưu trữ Ultralytics-Snippets.
Cài đặt trong VS Code#
-
Mở menu Extensions trong VS Code hoặc sử dụng phím tắt Ctrl+Shift ⇑+x, rồi tìm Ultralytics-snippets.
-
Nhấp vào nút Install.
Cài đặt từ VS Code Extension Marketplace#
-
Truy cập VS Code Extension Marketplace và tìm Ultralytics-snippets, hoặc truy cập trực tiếp trang tiện ích trên VS Code Marketplace.
-
Nhấp vào nút Install và cho phép trình duyệt mở phiên VS Code.
-
Làm theo các lời nhắc để cài đặt tiện ích mở rộng.
Trang trên Visual Studio Code Extension Marketplace dành cho Ultralytics-Snippets
Sử dụng tiện ích Ultralytics-Snippets#
-
🧠 Tự động hoàn tất code thông minh: Viết code nhanh và chính xác hơn nhờ các đề xuất tự động hoàn tất nâng cao được tùy chỉnh cho API Ultralytics.
-
⌛ Tăng tốc độ phát triển: Tiết kiệm thời gian bằng cách loại bỏ các tác vụ lập trình lặp lại và tận dụng các snippet code dựng sẵn.
-
🔬 Cải thiện chất lượng code: Viết code gọn gàng, nhất quán và ít lỗi hơn nhờ tính năng tự động hoàn tất code thông minh.
-
💎 Tinh giản quy trình làm việc: Tập trung vào logic cốt lõi của dự án bằng cách tự động hóa các tác vụ thường gặp.
Tổng quan#
Tiện ích chỉ hoạt động khi Chế độ ngôn ngữ được đặt thành Python 🐍. Điều này giúp tránh chèn snippet khi làm việc với các loại file khác. Tất cả snippet đều có tiền tố bắt đầu bằng ultra; chỉ cần nhập ultra trong trình soạn thảo sau khi cài đặt tiện ích để hiển thị danh sách snippet có thể sử dụng. Bạn cũng có thể mở Command Palette của VS Code bằng Ctrl+Shift ⇑+p rồi chạy lệnh Snippets: Insert Snippet.
Trường trong snippet code#
Nhiều snippet có các “trường” chứa tên hoặc giá trị placeholder mặc định. Ví dụ, đầu ra từ phương thức predict có thể được lưu vào biến Python tên là r, results, detections, preds hoặc bất kỳ tên nào khác do nhà phát triển chọn; đó là lý do snippet có các “trường”. Sau khi chèn snippet, nhấn Tab ⇥ trên bàn phím để nhanh chóng di chuyển con trỏ giữa các trường. Khi một trường được chọn, nhập tên biến mới sẽ thay đổi tên tại vị trí đó và cả mọi vị trí khác của biến đó trong code snippet!
Sau khi chèn snippet, đổi tên model thành world_model sẽ cập nhật tất cả các vị trí xuất hiện. Nhấn Tab ⇥ để chuyển đến trường tiếp theo; menu thả xuống sẽ mở ra để chọn scale của model. Chuyển đến trường kế tiếp sẽ hiển thị một menu thả xuống khác để chọn biến thể model world hoặc worldv2.
Tự động hoàn tất snippet code#
Bạn không cần nhập toàn bộ tiền tố của snippet, thậm chí không cần bắt đầu nhập từ đầu snippet. Xem ví dụ trong hình bên dưới.
Snippet được đặt tên sao cho mô tả rõ nhất có thể, nhưng điều đó đồng nghĩa với việc bạn có thể phải nhập khá nhiều ký tự, gây phản tác dụng nếu mục tiêu là làm việc nhanh hơn. May mắn là VS Code cho phép người dùng nhập ultra.example-yolo-predict, example-yolo-predict, yolo-predict hoặc thậm chí ex-yolo-p mà vẫn tìm được snippet mong muốn! Nếu snippet cần dùng thực sự là ultra.example-yolo-predict-kwords, chỉ cần dùng các phím mũi tên ↑ hoặc ↓ để chọn snippet mong muốn, rồi nhấn Enter ↵ hoặc Tab ⇥ để chèn đúng khối code.
Nhập ex-yolo-p vẫn sẽ đưa bạn đến đúng snippetđích.
Danh mục snippet#
Đây là các danh mục snippet hiện có trong tiện ích Ultralytics-snippets. Các danh mục khác sẽ được bổ sung trong tương lai, vì vậy hãy thường xuyên kiểm tra bản cập nhật và bật tính năng tự động cập nhật cho tiện ích. Bạn cũng có thể yêu cầu bổ sung snippet nếu thấy còn thiếu.
| Danh mục | Tiền tố bắt đầu | Mô tả |
|---|---|---|
| Ví dụ | ultra.examples | Ví dụ code giúp tìm hiểu hoặc bắt đầu sử dụng Ultralytics. Các ví dụ được sao chép hoặc phỏng theo code từ các trang tài liệu. |
| Kwargs | ultra.kwargs | Tăng tốc độ phát triển bằng cách thêm snippet cho các phương thức train, val, predict và track, kèm theo tất cả đối số từ khóa và giá trị mặc định. |
| Imports | ultra.imports | Snippet giúp import nhanh các đối tượng Ultralytics thường dùng. |
| Models | ultra.yolo | Chèn các khối code để khởi tạo nhiều model khác nhau (yolo, sam, rtdetr, v.v.), bao gồm các tùy chọn cấu hình dạng danh sách thả xuống. |
| Kết quả | ultra.result | Các khối code cho những thao tác thường dùng khi làm việc với kết quả suy luận. |
| Tiện ích | ultra.util | Cung cấp quyền truy cập nhanh vào các tiện ích phổ biến được tích hợp trong package Ultralytics; tìm hiểu thêm tại trang Tiện ích đơn giản. |
Học qua ví dụ#
Các snippet ultra.examples rất hữu ích cho những ai muốn tìm hiểu cách bắt đầu với những kiến thức cơ bản khi làm việc với Ultralytics YOLO. Các snippet ví dụ được thiết kế để chạy ngay sau khi chèn (một số cũng có tùy chọn dạng danh sách thả xuống). Ví dụ được minh họa trong ảnh động ở đầu trang: sau khi chèn snippet, toàn bộ code sẽ được chọn và chạy tương tác bằng Shift ⇑+Enter ↵.
Như ảnh động ở đầu trang minh họa, bạn có thể dùng snippet ultra.example-yolo-predict để chèn ví dụ code sau. Sau khi chèn, tùy chọn duy nhất có thể cấu hình là scale của model; tùy chọn này có thể là một trong các giá trị sau: n, s, m, l hoặc x.
from ultralytics import ASSETS, YOLO
model = YOLO("yolo26n.pt", task="detect")
results = model(source=ASSETS / "bus.jpg")
for result in results:
print(result.boxes.data)
# result.show() # bỏ chú thích để xem từng ảnh kết quảTăng tốc quá trình phát triển#
Các snippet khác với ultra.examples nhằm giúp việc phát triển khi làm việc với Ultralytics trở nên dễ dàng và nhanh chóng hơn. Một đoạn code thường được dùng trong nhiều dự án là lặp qua danh sách Results được trả về khi sử dụng phương thức predict của model. Snippet ultra.result-loop có thể hỗ trợ việc này.
Sử dụng ultra.result-loop sẽ chèn đoạn code mặc định sau (bao gồm cả comment).
# tham khảo https://docs.ultralytics.com/modes/predict#working-with-results
for result in results:
result.boxes.data # mảng torch.TensorTuy nhiên, vì Ultralytics hỗ trợ nhiều task, khi làm việc với kết quả suy luận, bạn có thể muốn truy cập các thuộc tính Results khác; đây là lúc các trường trong snippet phát huy tác dụng.
Sau khi nhấn Tab đến trường boxes, một menu thả xuống sẽ xuất hiện để bạn chọn thuộc tính khác nếu cần.
Đối số từ khóa#
Có hơn 💯 đối số từ khóa cho các task và mode khác nhau của Ultralytics! Có rất nhiều thứ cần nhớ, và bạn có thể dễ quên đối số là save_frame hay save_frames (nhân tiện, chắc chắn là save_frames). Đây là lúc các snippet ultra.kwargs có thể giúp ích!
Để chèn phương thức predict cùng toàn bộ đối số suy luận, hãy dùng ultra.kwargs-predict; thao tác này sẽ chèn đoạn code sau (bao gồm cả comment).
model.predict(
source=src, # (str, optional) thư mục nguồn chứa ảnh hoặc video
imgsz=640, # (int | list) kích thước ảnh đầu vào dưới dạng int hoặc list[h,w] cho predict
conf=0.25, # (float) ngưỡng confidence tối thiểu
iou=0.7, # (float) ngưỡng intersection over union (IoU) cho NMS
vid_stride=1, # (int) bước lấy mẫu tốc độ khung hình video
stream_buffer=False, # (bool) lưu các khung hình đầu vào vào hàng đợi (True) hoặc chỉ giữ khung hình mới nhất (False)
visualize=False, # (bool) lưu heatmap kích hoạt lớp
augment=False, # (bool) áp dụng tăng cường ảnh cho các nguồn đầu vào của quá trình dự đoán
agnostic_nms=False, # (bool) NMS không phụ thuộc lớp
classes=None, # (int | list[int], optional) lọc kết quả theo lớp, ví dụ classes=0 hoặc classes=[0,2,3]
retina_masks=False, # (bool) sử dụng mask phân đoạn độ phân giải cao
embed=None, # (list[int], optional) trả về vector đặc trưng/embedding từ các layer đã chỉ định
show=False, # (bool) hiển thị ảnh và video được dự đoán nếu môi trường cho phép
save=True, # (bool) lưu kết quả dự đoán
save_frames=False, # (bool) lưu từng khung hình video đã dự đoán
save_txt=False, # (bool) lưu kết quả dưới dạng file .txt
save_conf=False, # (bool) lưu kết quả kèm confidence score
save_crop=False, # (bool) lưu ảnh đã crop cùng kết quả
stream=False, # (bool) xử lý video dài hoặc nhiều ảnh với mức sử dụng bộ nhớ thấp hơn bằng cách trả về generator
verbose=True, # (bool) bật/tắt ghi log suy luận chi tiết trong terminal
)Snippet này có các trường cho tất cả đối số từ khóa, cũng như model và src trong trường hợp bạn đã dùng biến khác trong code. Mỗi dòng có đối số từ khóa đều kèm theo phần mô tả ngắn để tiện tham khảo.
Tất cả snippet code#
Cách tốt nhất để biết có những snippet nào là tải xuống, cài đặt tiện ích và dùng thử! Nếu muốn xem trước danh sách, bạn có thể truy cập repo hoặc trang tiện ích trên VS Code Marketplace để xem bảng liệt kê tất cả snippet hiện có.
Kết luận#
Tiện ích Ultralytics-Snippets dành cho VS Code được thiết kế để hỗ trợ các nhà khoa học dữ liệu và kỹ sư machine learning xây dựng ứng dụng thị giác máy tính bằng Ultralytics YOLO hiệu quả hơn. Bằng cách cung cấp snippet code dựng sẵn và các ví dụ hữu ích, chúng tôi giúp bạn tập trung vào điều quan trọng nhất: tạo ra các giải pháp sáng tạo. Hãy chia sẻ phản hồi bằng cách truy cập trang tiện ích trên VS Code Marketplace và để lại đánh giá. ⭐
Câu hỏi thường gặp#
Bạn có thể yêu cầu snippet mới bằng cách tạo Issue trong repo Ultralytics-Snippets.
Hoàn toàn miễn phí!
VS Code sử dụng tổ hợp phím Ctrl+Space để hiển thị thêm hoặc bớt thông tin trong cửa sổ xem trước. Nếu bạn không thấy bản xem trước đoạn mã khi nhập tiền tố của snippet, hãy dùng tổ hợp phím này để hiển thị lại.
Nếu bạn dùng VS Code và bắt đầu thấy thông báo nhắc cài đặt extension Ultralytics-snippets nhưng không muốn thấy thông báo này nữa, có hai cách để tắt thông báo.
-
Cài đặt Ultralytics-snippets để không còn thấy thông báo này nữa 😆!
-
Bạn có thể dùng
yolo settings vscode_msg=Falseđể tắt thông báo mà không cần cài extension. Nếu chưa quen, bạn có thể tìm hiểu thêm trên trang Cài đặt Ultralytics.
-
Truy cập repo Ultralytics-snippets và mở Issue hoặc Pull Request!
Giống như mọi extension VS Code khác, bạn có thể gỡ cài đặt bằng cách mở menu Extensions trong VS Code. Tìm extension Ultralytics-snippets trong menu, nhấp vào biểu tượng bánh răng (⚙), rồi nhấp vào "Uninstall" để xóa extension.