Mô hình và nền tảng AI
Julien Rebetez, Kỹ sư trưởng Máy học tại Picterra – Loạt phỏng vấn

Julien Rebetez, là Kỹ sư trưởng Phần mềm và Máy học tại Picterra. Picterra cung cấp một nền tảng đám mây không gian địa lý đặc biệt được thiết kế để đào tạo các bộ phát hiện dựa trên học sâu, nhanh chóng và bảo mật.
Một dòng mã duy nhất và chỉ với một vài chú thích do con người tạo, người dùng của Picterra xây dựng và triển khai các mô hình học sâu hoạt động và sẵn sàng sử dụng.
Nó tự động hóa việc phân tích hình ảnh vệ tinh và trên không, cho phép người dùng xác định đối tượng và mẫu.
Điều gì thu hút bạn đến máy học và trí tuệ nhân tạo?
Tôi bắt đầu lập trình vì tôi muốn tạo ra các trò chơi điện tử và quan tâm đến đồ họa máy tính lúc đầu. Điều này dẫn tôi đến tầm nhìn máy tính, đó là một quá trình ngược lại khi mà thay vì máy tính tạo ra một môi trường giả, bạn có nó nhận thức môi trường thực. Trong quá trình học tập, tôi đã tham gia một số khóa học Máy học và tôi quan tâm đến góc độ tầm nhìn máy tính của nó. Tôi nghĩ điều thú vị về ML là nó nằm ở giao điểm giữa kỹ thuật phần mềm, thuật toán và toán học và nó vẫn cảm giác một chút như ma thuật khi nó hoạt động.
Bạn đã làm việc về việc sử dụng máy học để phân tích hình ảnh vệ tinh trong nhiều năm. Dự án đầu tiên của bạn là gì?
Dự án đầu tiên của tôi khi tiếp xúc với hình ảnh vệ tinh là dự án Terra-i (để phát hiện phá rừng) và tôi đã làm việc trên nó trong quá trình học tập. Tôi đã ngạc nhiên về lượng dữ liệu vệ tinh miễn phí được sản xuất bởi các cơ quan vũ trụ (NASA, ESA, v.v…). Bạn có thể nhận được hình ảnh thường xuyên của hành tinh miễn phí mỗi ngày hoặc như vậy và đây là một nguồn tài nguyên tuyệt vời cho nhiều ứng dụng khoa học.
Bạn có thể chia sẻ thêm chi tiết về dự án “Terra-i”?
Dự án Terra-i (http://terra-i.org/terra-i.html) được bắt đầu bởi Giáo sư Andrez Perez-Uribe, từ HEIG-VD (Thụy Sĩ) và hiện được lãnh đạo bởi Louis Reymondin, từ CIAT (Colombia). Ý tưởng của dự án là phát hiện phá rừng bằng cách sử dụng hình ảnh vệ tinh miễn phí. Lúc đó, chúng tôi đã làm việc với hình ảnh MODIS (độ phân giải pixel 250m) vì nó cung cấp một phạm vi thống nhất và có thể dự đoán (cả không gian và thời gian). Chúng tôi sẽ nhận được một phép đo cho mỗi pixel mỗi vài ngày và từ chuỗi thời gian của các phép đo này, bạn có thể cố gắng phát hiện các bất thường hoặc những điều mới mẻ như chúng tôi gọi chúng trong ML đôi khi.
Dự án này rất thú vị vì lượng dữ liệu là một thách thức vào thời điểm đó và cũng có một số kỹ thuật phần mềm liên quan để làm cho nó hoạt động trên nhiều máy tính và như vậy. Từ góc độ ML, nó sử dụng Mạng nơ-ron Bayesian (không quá sâu vào thời điểm đó) để dự đoán chuỗi thời gian của một pixel sẽ trông như thế nào. Nếu phép đo không khớp với dự đoán, thì chúng tôi sẽ có một bất thường.
Trong khuôn khổ của dự án này, tôi cũng đã làm việc về việc loại bỏ đám mây. Chúng tôi đã sử dụng một phương pháp xử lý tín hiệu truyền thống, nơi bạn có một chuỗi thời gian của các phép đo và một số trong chúng sẽ hoàn toàn không chính xác do đám mây. Chúng tôi đã sử dụng một phương pháp dựa trên Fourier (HANTS) để làm sạch chuỗi thời gian trước khi phát hiện những điều mới mẻ trong đó. Một trong những khó khăn là nếu chúng tôi làm sạch nó quá mạnh, chúng tôi cũng sẽ loại bỏ những điều mới mẻ, vì vậy có khá nhiều thí nghiệm để thực hiện để tìm ra các tham số phù hợp.
Bạn cũng đã thiết kế và thực hiện một hệ thống học sâu để phân loại tự động loại cây trồng từ hình ảnh trên không (hình ảnh từ máy bay không người lái) của các cánh đồng. Những thách thức chính tại thời điểm đó là gì?
Đây là lần đầu tiên tôi thực sự tiếp xúc với Học sâu. Vào thời điểm đó, tôi nghĩ rằng thách thức chính là việc nhận được khuôn khổ để chạy và sử dụng đúng GPU hơn là về ML itself. Chúng tôi đã sử dụng Theano, đó là một trong những tổ tiên của Tensorflow.
Mục tiêu của dự án là phân loại loại cây trồng trong một cánh đồng, từ hình ảnh từ máy bay không người lái. Chúng tôi đã thử một cách tiếp cận nơi mô hình Học sâu sử dụng histogram màu làm đầu vào thay vì chỉ hình ảnh thô. Để làm cho nó hoạt động một cách hợp lý, tôi nhớ đã phải thực hiện một lớp tùy chỉnh của Theano, tất cả các cách đến một số mã CUDA. Đó là một kinh nghiệm học tập tuyệt vời vào thời điểm đó và một cách tốt để đào sâu vào các chi tiết kỹ thuật của Học sâu.
Bạn chính thức là Kỹ sư trưởng Phần mềm và Máy học tại Picterra. Bạn có thể mô tả hoạt động hàng ngày của mình như thế nào?
Nó thực sự thay đổi, nhưng phần lớn là về việc theo dõi kiến trúc tổng thể của hệ thống và sản phẩm nói chung và giao tiếp với các bên liên quan khác nhau. Mặc dù ML là cốt lõi của kinh doanh của chúng tôi, bạn nhanh chóng nhận ra rằng hầu hết thời gian không được dành cho ML itself, mà là tất cả những thứ xung quanh nó: quản lý dữ liệu, cơ sở hạ tầng, UI/UX, nguyên mẫu, hiểu người dùng, v.v… Điều này khá khác so với Học viện hoặc kinh nghiệm trước đó trong các công ty lớn hơn nơi bạn tập trung nhiều hơn vào một vấn đề cụ thể.
Điều thú vị về Picterra là chúng tôi không chỉ chạy Mô hình Học sâu cho người dùng, mà chúng tôi thực sự cho phép họ đào tạo mô hình của riêng họ. Điều này khác với nhiều quy trình làm việc ML典型, nơi bạn có đội ML đào tạo một mô hình và sau đó xuất bản nó sang sản xuất. Điều này có nghĩa là chúng tôi không thể tự tay điều chỉnh các tham số đào tạo như bạn thường làm. Chúng tôi phải tìm ra một phương pháp đào tạo sẽ hoạt động cho tất cả người dùng của chúng tôi. Điều này đã dẫn chúng tôi đến việc tạo ra cái mà chúng tôi gọi là ‘khung thử nghiệm’, đó là một kho lưu trữ lớn các tập dữ liệu mô phỏng dữ liệu đào tạo mà người dùng của chúng tôi sẽ xây dựng trên nền tảng. Chúng tôi có thể dễ dàng kiểm tra các thay đổi đối với phương pháp đào tạo của mình so với các tập dữ liệu này và đánh giá xem chúng có giúp hay không. Thay vì đánh giá một mô hình duy nhất, chúng tôi đang đánh giá nhiều hơn về kiến trúc + phương pháp đào tạo.
Thách thức khác là người dùng của chúng tôi không phải là những người thực hành ML, vì vậy họ không nhất thiết phải biết gì về tập đào tạo, nhãn, v.v… Xây dựng một giao diện người dùng để cho phép những người không phải là người thực hành ML xây dựng tập dữ liệu và đào tạo mô hình ML là một thách thức liên tục và có rất nhiều sự tương tác giữa các nhóm UX và ML để đảm bảo rằng chúng tôi hướng dẫn người dùng theo đúng hướng.
Một số trách nhiệm của bạn bao gồm việc tạo ra các ý tưởng và công nghệ mới. Bạn có thể chia sẻ một số dự án thú vị mà bạn đã làm việc?
Tôi nghĩ rằng dự án thú vị nhất tại Picterra là nguyên mẫu Phát hiện Tùy chỉnh. 1,5 năm trước, chúng tôi đã có ‘các bộ phát hiện tích hợp’ trên nền tảng: những bộ phát hiện mà chúng tôi đã đào tạo và làm cho người dùng có thể tiếp cận. Ví dụ, chúng tôi đã có bộ phát hiện tòa nhà, bộ phát hiện xe hơi, v.v…
Đây thực sự là quy trình làm việc ML điển hình: bạn có một kỹ sư ML phát triển một mô hình cho một trường hợp cụ thể và sau đó bạn phục vụ nó cho khách hàng.
Nhưng chúng tôi muốn làm điều gì đó khác biệt và đẩy ranh giới một chút. Vì vậy, chúng tôi đã nói: “Điều gì xảy ra nếu chúng tôi cho phép người dùng đào tạo mô hình của riêng họ trực tiếp trên nền tảng?”
Có một số thách thức để làm cho nó hoạt động: đầu tiên, chúng tôi không muốn điều này mất nhiều giờ. Nếu bạn muốn giữ cảm giác tương tác, đào tạo nên mất vài phút. Thứ hai, chúng tôi không muốn yêu cầu hàng nghìn chú thích, điều mà thường cần cho các mô hình Học sâu lớn.
Chúng tôi đã bắt đầu với một mô hình rất đơn giản, thực hiện một số thử nghiệm trong Jupyter và sau đó cố gắng tích hợp nó vào nền tảng của chúng tôi và kiểm tra toàn bộ quy trình làm việc, với giao diện người dùng cơ bản và như vậy. Lúc đầu, nó không hoạt động rất tốt trong hầu hết các trường hợp, nhưng có một số trường hợp nó hoạt động. Điều này đã mang lại cho chúng tôi hy vọng và chúng tôi đã bắt đầu lặp lại phương pháp đào tạo và mô hình. Sau một vài tháng, chúng tôi đã có thể đạt đến một điểm mà nó hoạt động tốt và bây giờ chúng tôi có người dùng của mình sử dụng điều này mọi lúc.
Điều thú vị về điều này là thách thức kép của việc giữ đào tạo nhanh (hiện tại chỉ mất vài phút) và do đó mô hình không quá phức tạp, nhưng đồng thời làm cho nó đủ phức tạp để nó hoạt động và giải quyết vấn đề của người dùng. Trên hết, nó hoạt động với ít nhãn (<100) cho nhiều trường hợp.
Chúng tôi cũng đã áp dụng nhiều “Quy tắc của Máy học” của Google (GOOGL ), đặc biệt là những quy tắc về việc thực hiện toàn bộ đường ống và các chỉ số trước khi bắt đầu tối ưu hóa mô hình. Điều này đặt bạn vào chế độ suy nghĩ hệ thống, nơi bạn nhận ra rằng không phải tất cả các vấn đề của bạn nên được xử lý bởi cốt lõi của ML, mà một số trong số chúng có thể được đẩy đến giao diện người dùng, một số có thể được xử lý trước hoặc sau khi xử lý, v.v…
Điều gì là một số công nghệ máy học được sử dụng tại Picterra?
Trong sản xuất, chúng tôi hiện đang sử dụng Pytorch để đào tạo và chạy mô hình của mình. Chúng tôi cũng sử dụng Tensorflow từ thời gian để thời gian, cho một số mô hình cụ thể được phát triển cho khách hàng. Ngoài ra, đó là một ngăn xếp khoa học Python tiêu chuẩn (numpy, scipy) với một số thư viện không gian địa lý (gdal) được thêm vào.
Bạn có thể thảo luận về cách Picterra hoạt động ở phía sau khi ai đó tải lên hình ảnh và muốn đào tạo mạng nơ-ron để chú thích đúng đối tượng?
Được, vì vậy đầu tiên khi bạn tải lên một hình ảnh, chúng tôi xử lý nó và lưu trữ nó trong định dạng “Cloud-Optimized-Geotiff” (COG) trên kho lưu trữ blob của chúng tôi (Google Cloud Storage), điều này cho phép chúng tôi nhanh chóng truy cập các khối của hình ảnh mà không cần tải xuống toàn bộ hình ảnh sau này. Đây là một điểm quan trọng vì hình ảnh không gian địa lý có thể rất lớn: chúng tôi có người dùng thường xuyên làm việc với hình ảnh 50000×50000.
Sau đó, để đào tạo mô hình của bạn, bạn sẽ phải tạo tập dữ liệu đào tạo của mình thông qua giao diện người dùng web của chúng tôi. Bạn sẽ làm điều này bằng cách định nghĩa 3 loại khu vực:
- ‘Khu vực đào tạo’, trong đó bạn sẽ vẽ nhãn đào tạo
- ‘Khu vực kiểm tra’, nơi mô hình sẽ dự đoán để bạn có thể trực quan hóa một số kết quả
- ‘Khu vực chính xác’, nơi bạn sẽ vẽ nhãn cũng như vậy, nhưng những nhãn này không được sử dụng cho đào tạo, chỉ để tính điểm
Khi bạn đã tạo tập dữ liệu này, bạn có thể chỉ cần nhấp vào ‘Đào tạo’ và chúng tôi sẽ đào tạo một bộ phát hiện cho bạn. Điều gì xảy ra tiếp theo là chúng tôi xếp hàng một công việc đào tạo, có một trong những công nhân GPU của chúng tôi nhận nó, đào tạo mô hình của bạn, lưu trữ trọng số của nó vào kho lưu trữ blob và cuối cùng dự đoán trong ‘khu vực kiểm tra’ để hiển thị trên giao diện người dùng. Từ đó, bạn có thể lặp lại mô hình của mình. Thông thường, bạn sẽ phát hiện ra một số lỗi trong ‘khu vực kiểm tra’ và thêm ‘khu vực đào tạo’ để giúp mô hình cải thiện.
Khi bạn hài lòng với điểm số của mô hình của mình, bạn có thể chạy nó với quy mô lớn. Từ góc độ người dùng, điều này thực sự đơn giản: chỉ cần nhấp vào ‘Phát hiện’旁 cạnh hình ảnh bạn muốn chạy nó. Nhưng nó hơi phức tạp hơn ở phía sau nếu hình ảnh rất lớn. Để tăng tốc, xử lý thất bại và tránh có phát hiện mất nhiều giờ, chúng tôi chia nhỏ các phát hiện lớn thành các ô lưới và chạy một công việc phát hiện độc lập cho mỗi ô. Điều này cho phép chúng tôi chạy phát hiện với quy mô rất lớn. Ví dụ, chúng tôi đã có một khách hàng chạy phát hiện trên toàn bộ Đan Mạch trên hình ảnh 25cm, điều này nằm trong phạm vi TB của dữ liệu – cho một dự án duy nhất. Chúng tôi đã bao gồm một dự án tương tự trong bài đăng trên Medium này.
Có điều gì khác mà bạn muốn chia sẻ về Picterra?
Tôi nghĩ rằng điều tuyệt vời về Picterra là nó là một sản phẩm độc đáo, tại giao điểm giữa ML và Không gian địa lý. Điều gì phân biệt chúng tôi với các công ty khác xử lý dữ liệu không gian địa lý là chúng tôi trang bị cho người dùng của mình một nền tảng tự phục vụ. Họ có thể dễ dàng tìm kiếm vị trí, phân tích mẫu, phát hiện và đếm đối tượng trên hình ảnh quan sát Trái đất. Điều này sẽ không thể nếu không có máy học, nhưng người dùng của chúng tôi thậm chí không cần phải có kỹ năng lập trình cơ bản – nền tảng thực hiện công việc dựa trên một số chú thích do con người tạo. Đối với những người muốn đi sâu hơn và học các khái niệm cốt lõi của máy học trong lĩnh vực không gian địa lý, chúng tôi đã ra mắt một khóa học trực tuyến toàn diện.
Điều cũng đáng đề cập là các ứng dụng có thể có của Picterra là vô tận – các bộ phát hiện được xây dựng trên nền tảng đã được sử dụng trong quản lý thành phố, nông nghiệp chính xác, quản lý rừng, quản lý rủi ro thiên tai và nhân đạo, chỉ để đặt tên cho một số ứng dụng phổ biến nhất. Chúng tôi thực sự bị ngạc nhiên mỗi ngày bởi những gì người dùng của chúng tôi đang cố gắng làm với nền tảng của chúng tôi. Bạn có thể thử nó và cho chúng tôi biết nó hoạt động như thế nào trên mạng xã hội.
Cảm ơn vì cuộc phỏng vấn tuyệt vời và vì đã chia sẻ với chúng tôi về sức mạnh của Picterra, những người đọc muốn tìm hiểu thêm nên truy cập trang web của Picterra.












