- Mozilla.ai đã công bố OpenStreetMap AI Helper Blueprint, kết nối dữ liệu OpenStreetMap với ảnh vệ tinh để tìm các đối tượng trên bản đồ, sau đó để con người xác minh rồi đóng góp ngược trở lại
- Cách làm này tách riêng phát hiện đối tượng YOLOv11 và phân đoạn SAM2 thay vì dùng LLM/VLM, giao lần lượt việc nhận diện vị trí và tạo đường viền polygon
- Ví dụ lập bản đồ bể bơi cho thấy quy trình tạo dữ liệu huấn luyện bằng thẻ
leisure=swimming_poolvà tile của Mapbox, rồi đưa kết quả lên Hugging Face Hub - Trong quá trình suy luận, hệ thống ghép các tile quanh điểm quan tâm rồi so sánh với các đối tượng OpenStreetMap hiện có để loại trừ ứng viên trùng lặp, chỉ để con người kiểm tra các ứng viên mới
- Làm hoàn toàn thủ công chỉ đạt khoảng 2–3 bể bơi mỗi phút, nhưng Blueprint này xử lý được 10–15 trong cùng thời gian ngay cả khi UX chưa tối ưu, nhanh hơn khoảng 5 lần
Vì sao dùng dữ liệu OpenStreetMap cho AI mapping
- Mozilla.ai đã công bố Blueprint OpenStreetMap AI Helper vì cho rằng trong cộng đồng cộng tác mở, AI có thể giảm các công việc lặp đi lặp lại và chậm chạp
- Mục tiêu không phải để AI thay thế người làm bản đồ, mà là giảm thời gian tìm đối tượng và vẽ polygon, đồng thời giữ xác minh của con người ở bước cuối
- Công việc cốt lõi mà con người vẫn phải đảm nhiệm là kiểm tra xem dữ liệu bản đồ được tạo ra có đúng với thực tế hay không
- OpenStreetMap là một bản đồ chỉnh sửa mở nơi cộng đồng mapper tạo và duy trì dữ liệu như đường sá, lối đi bộ, quán cà phê và ga tàu
- OpenStreetMap là một trong những cơ sở dữ liệu bản đồ mở hoàn chỉnh nhất, và khi kết hợp với các nguồn khác như ảnh vệ tinh, nó có thể được dùng làm dữ liệu huấn luyện cho mô hình AI
Chọn mô hình thị giác máy tính nhẹ thay vì LLM
- Nhiều Map Features trong OpenStreetMap được biểu diễn bằng các vùng dạng polygon
- Việc con người tìm và tự vẽ polygon rất tốn thời gian, nhưng nếu có đủ dữ liệu thì có thể huấn luyện mô hình thị giác máy tính cho tác vụ này
- Blueprint sử dụng các mô hình không phải LLM hiện đại theo hai giai đoạn
- YOLOv11 và SAM2 nhẹ, nhanh và phù hợp để chạy cục bộ
- Trọng số kết hợp của hai mô hình dưới 250MB
- SmolVLM, được nhắc đến để so sánh, có dung lượng 4.5GB
Quy trình 3 bước của Blueprint
-
Bước 1: Tạo bộ dữ liệu phát hiện đối tượng từ OpenStreetMap
- Lấy dữ liệu OpenStreetMap, kết hợp với ảnh vệ tinh và chuyển đổi sang định dạng phù hợp cho huấn luyện
- Có sẵn Create Dataset Colab có thể chạy trực tiếp
- Hai API được dùng để thu thập dữ liệu OpenStreetMap
- Nominatim API: cho phép người dùng chọn linh hoạt khu vực quan tâm
- Overpass API: tải về các polygon tương ứng với tag cụ thể trong khu vực đã chọn
- Trong ví dụ về bể bơi, Galicia được dùng cho huấn luyện và Viana do Castelo cho kiểm chứng
- Tag mục tiêu là leisure=swimming_pool, còn các đối tượng có kèm location=indoor thì bị loại trừ
- Sau khi tải polygon, hệ thống chọn zoom level rồi xác định các tile chứa polygon ở mức zoom đó
- Tải tile qua Static Tiles API của Mapbox
- Polygon ở tọa độ vĩ độ/kinh độ được chuyển thành bounding box theo tọa độ pixel của từng tile và lưu ở định dạng Ultralytics YOLO
- Bộ dữ liệu hoàn chỉnh được tải lên Hugging Face Hub, và bộ dữ liệu ví dụ là mozilla-ai/osm-swimming-pools
-
Bước 2: Fine-tune mô hình phát hiện đối tượng
- Khi định dạng bộ dữ liệu đã sẵn sàng, có thể fine-tune YOLOv11 hoặc các mô hình khác mà Ultralytics hỗ trợ
- Có sẵn Finetune Model Colab có thể chạy trực tiếp
- Có thể xem các hyperparameter khả dụng trong tài liệu cấu hình huấn luyện của Ultralytics
- Mô hình đã huấn luyện cũng được tải lên Hugging Face Hub
- Mô hình ví dụ là mozilla-ai/swimming-pool-detector
-
Bước 3: Đóng góp vào OpenStreetMap
- Chạy suy luận trên nhiều tile bằng mô hình phát hiện đối tượng đã fine-tune
- Có sẵn Run Inference Colab có thể chạy trực tiếp
- Có thể thử bộ phát hiện bể bơi ví dụ tại HuggingFace Demo
- Quá trình suy luận cần một số tương tác của con người
- Trước tiên, chọn một điểm quan tâm trên bản đồ
- Một bounding box được tính quanh điểm đã chọn theo tham số
margin - Tải các đối tượng quan tâm hiện có từ OpenStreetMap
- Tải tất cả tile từ Mapbox, ghép lại rồi tạo thành một ảnh stack
- Ảnh stack lại được chia thành các tile chồng lấp
- Mô hình phát hiện đối tượng YOLOv11 được chạy trên từng tile
- Khi phát hiện đối tượng quan tâm như bể bơi, bounding box sẽ được chuyển cho SAM2 để lấy segmentation mask
- Polygon dự đoán được so sánh với các polygon hiện có tải từ OpenStreetMap để tránh tải lên trùng lặp
- Các ứng viên được nhận diện là đối tượng mới sẽ được hiển thị lần lượt để người dùng xác minh và lọc thủ công
- Các đối tượng mà người dùng chọn giữ lại sẽ được tải lên OpenStreetMap trong một changeset
Hiệu năng và ý nghĩa thực tế
- OpenStreetMap AI Helper Blueprint cho thấy AI có thể tăng cường đóng góp bản đồ của con người trong khi vẫn đặt xác minh của con người làm trung tâm
- Với quy trình hoàn toàn thủ công, có thể lập bản đồ khoảng 2–3 bể bơi mỗi phút
- Khi dùng Blueprint, ngay cả khi UX chưa được tối ưu, có thể lập bản đồ 10–15 bể bơi trong cùng thời gian, tức nhiều hơn khoảng 5 lần
- Nếu có dữ liệu OpenStreetMap chất lượng cao, có thể huấn luyện các mô hình như YOLOv11 để thực hiện phát hiện đối tượng
- Không nhất thiết phải áp dụng LLM cho mọi bài toán; với phát hiện đặc trưng bản đồ và tạo polygon, tổ hợp thị giác máy tính nhẹ có thể là lựa chọn trực tiếp hơn
- Nếu muốn huấn luyện mô hình cho các đặc trưng bản đồ khác hoặc đóng góp cho kho mã, có thể dùng OpenStreetMap AI Helper Blueprint
- Có thể xem các Blueprint công khai khác tại Blueprints Hub
2 bình luận
Tôi thấy rằng
Map Featurethường được dịch là đối tượng bản đồ.Ý kiến trên Hacker News
Từ góc độ OpenStreetMap Foundation, không nên thêm trực tiếp các thực thể địa lý do AI phát hiện vào cơ sở dữ liệu
Thuật toán có vấn đề dương tính giả, và như ảnh chụp màn hình áp chót, còn có vấn đề ánh xạ các vật thể thẳng/hình chữ nhật thành dạng méo mó
Công cụ này rất quý giá như một trợ cụ để tìm các thực thể địa lý bị thiếu, nhưng để xác nhận đối tượng được phát hiện đã được vẽ đúng hay chưa thì vẫn cần sự can thiệp của con người
Tham khảo: https://wiki.openstreetmap.org/wiki/Import/Guidelines và https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_...
Nếu không sửa mã nguồn thì không thể tự động tải lên, và trong toàn bộ tài liệu, bài viết được liên kết cũng như các mẫu mã đều nhấn mạnh lặp đi lặp lại việc xác minh bởi con người
Chưa từng tự động tải lên thực thể địa lý; ngay cả trước khi huấn luyện phiên bản đầu tiên, tôi cũng đã tự tay chỉnh sửa và gán nhãn hàng trăm mẫu hồ bơi
Nếu có ý tưởng cải thiện quy trình để ngăn việc tự động tải lên thực thể địa lý, tôi muốn được nghe và triển khai
Có thể sẽ có phản ứng rằng không nên công khai công cụ này, nhưng tôi cho rằng vẫn có cách tốt hơn: chấp nhận AI và thảo luận công khai
Trên thực tế, cũng có trường hợp đa giác dự đoán bị méo, nên khuyến nghị là hãy loại bỏ các kết quả như vậy
Dù vậy, demo này đã không được công bố cho đến khi có phiên bản đầu tiên của mô hình đạt chất lượng tối thiểu
Trong mã cũng có logic đơn giản hóa hình dạng để tránh đa giác dự đoán có quá nhiều node
Những công cụ như thế này rất có thể đã được dùng bán tự động rồi, và điều đó có thể giúp giảm nguy cơ toàn bộ cơ sở dữ liệu bị ô nhiễm
Phát hiện hồ bơi thì tốt, và phát hiện điện mặt trời cũng nằm trong danh sách tôi muốn thử
Tôi cảm thấy phần lớn phản ứng phản đối ở đây xuất phát từ tiền đề rằng OSM có thể phát triển chỉ bằng cách lập bản đồ thủ công
Nhưng với tư cách là người đã tạo 60 nghìn changeset trong 10 năm, ở quy mô toàn cầu, chỉ bằng nhiệt huyết tình nguyện thì không thể “giải quyết” việc lập bản đồ đến mức khiến dữ liệu bản đồ trở nên hữu dụng áp đảo
Cần một framework có khả năng mở rộng cho việc nhập và bảo trì dữ liệu: cách để ghi chú về chất lượng, nguồn gốc, nơi báo lỗi nguồn dữ liệu, cũng như hướng dẫn cho người tiêu thụ dữ liệu
Ví dụ, nếu muốn truy vấn “các doanh nghiệp loại X do con người lập bản đồ trong vòng 1 năm qua”, thì
check datecó thể làm được ở mức nào đóNhưng khó biết thuộc tính đó chính xác đến đâu, hay mapper đã kiểm tra chỉ một khía cạnh như tên hoặc vị trí hay chưa
Có thể tốt hơn nếu tự động nhập và duy trì dữ liệu giờ mở cửa từ alltheplaces hằng tháng
Từ góc độ người tiêu thụ dữ liệu, sẽ tốt hơn nếu họ có thể lọc chỉ những nguồn cụ thể mà họ tin cậy, hoặc có thể sử dụng dữ liệu với các giới hạn đã biết như “điểm quan tâm do AI suy luận”, ngay cả khi đa giác không hoàn hảo
https://community.openstreetmap.org/t/what-you-think-about-i...
https://www.openstreetmap.org/user/Mateusz%20Konieczny%20-%2...
https://codeberg.org/matkoniecz/list_how_openstreetmap_can_b...
Ở trạng thái hiện tại, nó có thể truyền cảm hứng nhưng không tương thích với OpenStreetMap
Khó phân biệt tấm pin quang điện với bộ thu nhiệt mặt trời
Nhìn bề ngoài chúng gần như giống nhau, nhưng chức năng lại rất khác
Khi trực tiếp trải nghiệm lập bản đồ tự động, bạn sẽ trở nên cực kỳ thận trọng
Tôi từng băng qua Nam Mỹ bằng xe máy; trên OSM có nhiều chỉnh sửa trông như tự động, đặc biệt là ở Brazil, và ở một số khu vực thì gần như khó dùng
Không chỉ đường nông thôn, mà cả ở những thành phố khá lớn cũng vậy
Khi đi du lịch, tôi thường dùng mapwithme và cố để lại ghi chú bằng ảnh mô tả vấn đề
Tôi hay chụp ảnh hàng rào và sân chơi, còn người khác thì chụp phong cảnh
Có thể đó là lập bản đồ tự động, nhưng việc lập bản đồ từ xa của tôi khi kiểm tra thực địa cũng có lúc khá lộn xộn
Vài năm trước tôi từng làm trong lĩnh vực này, và có vô số mô hình, bộ dữ liệu và công cụ sẵn có
https://github.com/satellite-image-deep-learning
Tôi từng nghịch QGIS, đăng ký nhiều API ảnh vệ tinh công khai và tư nhân để lấy dữ liệu rồi thử nghiệm
Cơ quan vũ trụ EU có nhiều nguồn dữ liệu tốt cho phép truy cập hoàn toàn công khai mà không cần tài khoản người dùng
Tôi rất mong được thử làm việc với bộ công cụ chuyên cho học máy mới này
Google có lẽ sẽ không cho phép, nhưng Mapbox dường như cho phép nếu là mục đích phi thương mại hoặc dùng cho OSM
Tuy nhiên, chỉ có thể khi sử dụng dữ liệu vệ tinh, chứ không phải dữ liệu vector của Mapbox
Điều khoản quy định rằng khách hàng không được theo dõi, phái sinh hoặc trích xuất nội dung, dữ liệu, thông tin từ các dịch vụ được cung cấp; nhưng có ngoại lệ cho phép dùng Studio hoặc phần mềm bên thứ ba để truy vết Mapbox Maps chỉ gồm ảnh vệ tinh nhằm tạo bộ dữ liệu vector phái sinh, với điều kiện mục đích phải là phi thương mại hoặc OpenStreetMap
Có thể nói Mapbox đã xử lý khá ổn
https://wiki.openstreetmap.org/wiki/Bing_Maps#Aerial_imagery
Vài tháng trước tôi đã làm một thứ tương tự
Dù dành cho dữ liệu địa lý quy mô nhỏ hơn: https://github.com/uav4geo/GeoDeep
Không nên lập bản đồ những gì nhìn thấy trên ảnh vệ tinh, mà phải lập bản đồ những gì là sự thật ngoài thực địa
Tuyệt đối không nên đóng góp những thứ AI ảo giác ra
Chất lượng truy vết đó đôi khi dao động rất lớn, và tôi đã nhiều lần phải sửa những đường bờ biển lệch kỳ lạ khiến đường sá nằm trên biển
Nếu công cụ này có mức độ nhất quán nhất định, nó có thể còn tốt hơn người đóng góp OSM trung bình
Tuy vậy, sẽ tốt nếu bắt đầu bằng cách phân đoạn nhà cửa, đường sá, vùng nước, rồi so sánh với dữ liệu hiện tại để tìm điểm không khớp và đánh dấu làm đối tượng cần sửa
Mozilla không thể tập trung vào việc làm một trình duyệt tốt sao?
Tôi muốn xem thêm chi tiết về việc fine-tune SAM/2 để phát hiện bể bơi hoặc các mảng pin mặt trời
Cả hai đều sẽ rất hữu ích nếu được đưa lên bản đồ cho các dự án khả năng phục hồi cộng đồng, nhưng việc fine-tune SAM2 khá khó theo dõi
Dùng mô hình Yolov8 để tìm và phân đoạn pin mặt trời hoạt động khá tốt, nhưng các cạnh quá lộn xộn nên cần rất nhiều công sức dọn dẹp
Tôi đã xem kết quả SAM2 đã được huấn luyện và trông tốt hơn nhiều
Vì vấn đề độ chính xác nên tôi sẽ không đưa vào OSM, nhưng ở nơi khác thì hoàn toàn có thể dùng được
Dữ liệu phân đoạn của OSM không đủ chất lượng để huấn luyện đúng nghĩa một mô hình phân đoạn
Ở đây dùng mô hình YOLO để dự đoán bounding box
Bounding box của OSM là đủ cho mục đích này, và mỗi bounding box được chuyển cho SAM2 làm prompt để nó phân đoạn phần bên trong
Chúng tôi cũng đã thử cách chuyển điểm trung tâm của hộp cho SAM làm prompt, nhưng kết quả kém hơn
Sau khi phản ánh nhiều góp ý, tôi đã phát hành bản mới và thay toàn bộ mã tải trực tiếp lên OSM bằng xuất ra định dạng OsmChange
Hy vọng đây là một bước đi đúng hướng, và chúng tôi sẽ tiếp tục thảo luận trong luồng riêng trên diễn đàn OSM