paint-brush
Tạo AI phát hiện chim: Từ ý tưởng đến ra mắt sản phẩmtừ tác giả@olegkokorin
1,795 lượt đọc
1,795 lượt đọc

Tạo AI phát hiện chim: Từ ý tưởng đến ra mắt sản phẩm

từ tác giả Oleg Kokorin10m2023/09/23
Read on Terminal Reader

dài quá đọc không nổi

'Hậu trường' về cách phát triển một sản phẩm thị giác máy tính phức tạp: ● giải quyết vấn đề chạy mô hình phát hiện đối tượng trên phần cứng yếu ● xử lý các kết quả dương tính giả và tập dữ liệu không cân bằng ● dạy máy phân biệt các loài chim trông gần giống nhau
featured image - Tạo AI phát hiện chim: Từ ý tưởng đến ra mắt sản phẩm
Oleg Kokorin HackerNoon profile picture
0-item

Tầm nhìn máy tính đã thu hút sự quan tâm của các doanh nhân trên toàn thế giới và vì lý do chính đáng: khả năng của công nghệ AI hiện đại biến những ý tưởng không thể thực hiện được trước đây thành sản phẩm thực tế.


Việc phát hiện và phân loại đối tượng trong ảnh và video đã tìm thấy ứng dụng trong nhiều lĩnh vực khác nhau và hàng trăm hệ thống – từ camera an ninh tích hợp tính năng nhận dạng khuôn mặt và phát hiện bệnh dựa trên quét X-quang cho đến các ứng dụng di động đơn giản.


Nhưng phần giới thiệu đã đủ rồi, trong bài viết này tôi muốn chia sẻ 'hậu trường' về cách phát triển một sản phẩm thị giác máy tính, đặc biệt là một sản phẩm phức tạp.


Tôi đã có cơ hội làm việc trên Birdsy - một ứng dụng nhận dạng loài chim dành cho những người muốn xem ai đến thăm sân sau của họ khi họ không để ý.


Birdsy là một dịch vụ được hỗ trợ bởi AI, phát hiện các loài chim và động vật có vú nhỏ trong thời gian thực và quay video để người dùng xem sau.



Birdsy là một ứng dụng phức tạp, được hỗ trợ bởi AI với khả năng phát hiện và phân loại đối tượng theo thời gian thực, cần có khả năng chạy trên phần cứng yếu, phát hiện các loại chim và giới tính với độ chính xác cao.


Với tất cả những điều đó, con đường từ ý tưởng ban đầu đến xuất bản ứng dụng trên các cửa hàng ứng dụng rất phức tạp — đồng thời cũng rất hấp dẫn.


Chúng tôi đã phải đối mặt với nhiều trở ngại - cả từ góc độ kinh doanh và phát triển - mà tôi quyết định chia sẻ ở một nơi với hy vọng giúp ích cho các doanh nhân và nhà phát triển AI có thể đang đối mặt với cùng một dự án.


Nhiệm vụ đang diễn ra


Các loài chim đã có hàng triệu năm tiến hóa để hòa hợp hoàn hảo với môi trường của chúng nhằm tránh những kẻ săn mồi và trong trường hợp này là những kẻ quan sát chim, khiến chúng khó chiêm ngưỡng động vật hoang dã hơn.


Mặc dù việc quan sát một số loài chim nhất định đối mặt với… mỏ có thể gặp khó khăn, nhưng việc theo dõi chúng qua máy quay video từ sự thoải mái trong nhà của bạn là một cách thú vị để tận hưởng những người bạn có cánh của chúng ta, đặc biệt nếu AI loại bỏ nhu cầu xem hàng giờ cảnh quay video và gửi bạn cảnh báo khi có một con chim lọt vào tầm nhìn của camera, tự động phát hiện đó là loài chim nào.


Birdsy có hai phần:


  • Phát hiện đối tượng - mạng lưới thần kinh chịu trách nhiệm phát hiện sự hiện diện của chim hoặc động vật có vú
  • Phân loại đối tượng - một mạng lưới thần kinh chịu trách nhiệm xác định loài chim hoặc động vật có vú nào đã bị bắt



Camera chất lượng thấp để phát hiện đối tượng


Để làm cho dịch vụ trở nên dễ tiếp cận và dễ sử dụng hơn, bạn có thể sử dụng bất kỳ máy ảnh nào để quan sát chim. Đây là nơi chúng tôi gặp phải vấn đề đầu tiên: máy ảnh chất lượng thấp vì chúng có giá cả phải chăng nhất và phổ biến nhất.


Mặc dù 'không giới hạn máy ảnh' là điều tuyệt vời đối với người dùng nhưng nó lại là một thách thức đối với chúng tôi vì mô hình phát hiện đối tượng chạy bằng chipset máy ảnh.


Khi ai đó nhận được một thỏa thuận tốt, những người khác sẽ nhận được lợi ích ngắn hạn, trong trường hợp này 'những người khác' là nhà phát triển CV của chúng tôi. Làm việc với một chiếc máy ảnh giá rẻ có nghĩa là làm việc với một chipset giá rẻ khiến không thể sử dụng kiến trúc mạng thần kinh mặc định.


So với máy quay video thị giác máy tính tiêu chuẩn vàng, hàng đầu (NVIDIA Jetson Nano) cho phép sử dụng khoảng 120 lớp YOLO v4 mặc định, thì những máy ảnh mà chúng tôi phải làm việc chỉ được phép sử dụng 22 lớp.


Trong đó mạng thần kinh YOLO v4 đầy đủ cung cấp kết quả nhận dạng tuyệt vời thì phiên bản rút gọn lại hoạt động kém. Chúng tôi đã thử nghiệm cả hai và rất ngạc nhiên với độ sâu mô hình thấp khi chạy nó bằng chipset giá rẻ.


Kiểm tra YOLO v4 mặc định so với Giảm


Chúng tôi bắt đầu với việc đào tạo mô hình YOLO v4 mặc định và thử nghiệm nó trên tập dữ liệu của khách hàng. Kết quả chúng tôi đạt được rất khả quan - 95% mAp, trong thế giới thị giác máy tính là quá đủ để đưa một chế độ vào sản xuất.


Sau khi đào tạo lại mô hình để phù hợp với thông số của camera, chất lượng phát hiện giảm đáng kể. Nhưng ở đâu máy móc thất bại thì con người lại tiến lên.


Chúng tôi đã thử nghiệm mạng lưới thần kinh trên dữ liệu thử nghiệm và đánh giá trực quan các kết quả dương tính giả và âm tính giả. Điều này nêu bật điểm mà mạng thiếu kiến thức và điểm mà nó mắc nhiều lỗi nhất.


Chúng ta chẳng là gì ngoài động vật có vú, hoặc những kết quả dương tính giả

Mạng này mong muốn phát hiện con người, đặc biệt là bàn tay của con người, là động vật (và chúng tôi không đổ lỗi cho điều đó, xét cho cùng thì con người LÀ động vật). Mặc dù, từ quan điểm sinh học, điều này đúng, người dùng cuối quan tâm đến việc quan sát các loài chim hơn những người hàng xóm của họ, vì vậy, chúng tôi phải nỗ lực hướng dẫn mạng bỏ qua con người và thay vào đó tập trung vào các loài chim và động vật có vú.


Để làm điều này, chúng tôi đã thêm các ví dụ tiêu cực, bao gồm hình ảnh con người ở nhiều góc độ khác nhau cũng như bàn tay con người.

Mô hình đôi khi phát hiện bàn tay, ngón tay và thân của con người giống như loài chim



Điều gì ẩn giấu trong bóng tối


Camera có hai chế độ: chế độ ban ngày thông thường tạo ra hình ảnh đủ màu và chế độ hồng ngoại ban đêm tạo ra hình ảnh đen trắng. Khi máy ảnh chuyển sang hồng ngoại, mô hình tạo ra rất nhiều kết quả dương tính giả:


  • lá cây lay động trong gió
  • côn trùng, như bướm đêm, bị thu hút bởi một chiếc máy ảnh ấm áp
  • đài phun nước


Người dùng sẽ không mấy vui vẻ khi bị đánh thức bởi một thông báo, phấn khích khi nhìn một con cú hoặc một con cáo, nhưng cuối cùng lại nhìn thấy đoạn ghi âm cảnh một con bướm đêm đập cơ thể vào ống kính máy ảnh.


Vào ban đêm, mô hình sẽ phát hiện cành cây di chuyển hoặc côn trùng như chim



Để giảm thiểu tình trạng gián đoạn giấc ngủ ở mức tối thiểu, chúng tôi đã thu thập các trường hợp dương tính giả trong cài đặt ban đêm và đánh dấu chúng bằng tay.


Instagram và thực tế

Bạn đã bao giờ nghe nói mạng xã hội được gọi là 'cuốn phim nổi bật' nơi mọi người thể hiện phiên bản tốt nhất của mình chưa? Ai biết được điều tương tự có thể đúng với động vật hoang dã.


Ảnh về các loài chim có thể lấy được từ các nguồn mở, như Google Hình ảnh và video trên Youtube, thường có chất lượng cao, rất sắc nét và mô tả các mẫu vật ở mức tốt nhất, nhìn vào máy ảnh hoặc ít nhất là ở vị trí phía trước, không có gì ở giữa con chim và camera cản trở tầm nhìn.


Thực tế không phải lúc nào cũng đẹp như vậy. Máy ảnh tạo ra hình ảnh chất lượng thấp có thể khiến mắt người khó hiểu được điều gì đang xảy ra, điều kiện thời tiết xấu như mưa, tuyết hoặc bụi có thể cản trở tầm nhìn và chúng tôi chắc chắn rằng loài chim sẽ cảm nhận được khi ai đó muốn chụp chúng và định vị bản thân theo cách lố bịch nhất có thể.


Sự khác biệt giữa hình dáng của loài chim trên Internet và hình dáng của chúng trong môi trường thực tế



Tập dữ liệu mà khách hàng cung cấp (bao gồm các hình ảnh rõ ràng được tìm thấy trên Internet) không được sử dụng nhiều cho dự án này.


Chúng tôi cần thu thập một bộ hình ảnh các loài chim trong điều kiện thực tế bằng cách sử dụng máy ảnh của khách hàng để cho mô hình thấy loài chim thực sự trông như thế nào chứ không phải cách chúng được hiển thị trên mạng xã hội.

Những gì chúng ta có bây giờ

Vì vậy, sau khi thực hiện tất cả những điều trên:


  • xem xét thủ công mọi trường hợp mạng bị lỗi
  • dạy mạng bỏ qua con người và không phát hiện họ là chim hoặc động vật có vú
  • làm việc với hình ảnh đen trắng và dương tính giả
  • thu thập tập dữ liệu về các loài chim trong điều kiện thực tế, dưới nhiều góc độ khác nhau và trong các điều kiện thời tiết khác nhau


Chúng tôi đã cố gắng đạt được mAP 97,5% để phát hiện đối tượng. Đây là kết quả rất cao đối với một mô hình thị giác máy tính vì quy luật bất thành văn đối với bất kỳ mô hình CV nào khi đi vào sản xuất là phải có mAP trên 94%.


Đạt được sự hoàn hảo (gần như)


Mặc dù kết quả mà chúng tôi đạt được hiện nay là quá đủ để sử dụng trong sản phẩm cuối cùng nhưng vẫn còn chỗ để cải thiện.


  • mạng nhầm hoa với chim
  • Tầm nhìn của loài chim từ phía sau đôi khi vẫn còn là một điều bí ẩn
  • chim bị che phủ một phần bởi các vật thể ngẫu nhiên
  • những chú chim đến gần máy ảnh


Sau khi thu thập đủ hình ảnh cho từng nhóm, chúng tôi kỳ vọng mAP sẽ tăng và đạt 98,5%.


Mô hình phân loại hình ảnh

Bước tiếp theo để tìm hiểu những vị khách đến thăm sân sau của bạn là chuyển hình ảnh có con chim sang mô hình phân loại đối tượng. Mục tiêu của nó là nhận biết loài chim và giới tính của nó.


Vì một số loài chim chỉ sống ở một số lục địa nhất định nên chúng tôi đã quyết định tạo ra hai mô hình - một dành cho những loài chim sống ở Bắc Mỹ và một dành cho những loài ở Châu Âu.


Từng bước một: bài học về mạng lưới thần kinh nhiều tầng


Ban đầu, vấn đề phân loại đối tượng được giải quyết bằng cách sử dụng phương pháp 'trực tiếp': mạng được hiển thị ảnh của tất cả các loài khác nhau, cả con đực và con cái, từ đó nó cố gắng tìm hiểu xem chúng trông như thế nào và chúng khác nhau như thế nào với mỗi loài. khác.


Điều này dẫn đến điểm chính xác rất kém, nói cách khác, mạng đã mắc rất nhiều lỗi khi xác định các loài chim và động vật có vú.


Mạng đang cố gắng tìm hiểu quá nhiều khía cạnh cùng một lúc. Nhiều loài chim trông rất giống nhau và khác nhau ở một mảng lông có màu khác nhau hoặc mỏ có hình dạng khác nhau.


Việc lưu giữ tất cả thông tin này, cùng với những giới tính khác nhau của cùng một loài trông như thế nào, là quá khó khăn trong những trường hợp nhất định. Mạng thường trộn lẫn các loài chim trong khi xác định chính xác loại chim rộng hơn.


Ví dụ: sự khác biệt giữa chim chích trùm đầu và chim chích kentucky ở một mảng lông đen:


Một số loài chim trông rất giống nhau nên khó phát hiện chính xác


Mạng sẽ gắn nhãn chim chích trùm đầu là chim chích kentucky, tạo ra kết quả sai nhưng nhìn chung là đúng: cả hai đều LÀ chim chích. Để tiết kiệm thời gian, khách hàng quyết định rằng điều quan trọng hơn là phát hiện loại chim tổng thể hơn là loài cụ thể của nó, vì vậy đó là nơi chúng tôi bắt đầu.


Sau khi đánh giá mô hình, chúng tôi đã quyết định triển khai phương pháp tiếp cận nhiều giai đoạn:


  • tất cả các loài chim được nhóm lại thành các loại chung hơn: đại bàng, chim sẻ, quạ, bồ câu, v.v.
  • trước tiên mạng sẽ xác định loại chim tổng thể
  • Bước thứ hai là phát hiện đó là loài nào
  • việc cuối cùng là xác định xem con chim là đực hay cái


Bằng cách nhóm các loài chim, chúng tôi đã giảm được số lượng lớp từ 98 xuống 49, điều này đã cải thiện đáng kể điểm chính xác vì mạng không có nhiều lớp để lựa chọn.


Luyện tập tạo nên sự hoàn hảo, ngay cả đối với máy móc


Khi bạn gặp một khái niệm mới, bạn đọc sách hoặc xem video giáo dục để nắm bắt nó. Nếu thất bại, bạn nhờ bạn bè giải thích cho bạn hoặc bạn tham dự một buổi hội thảo về chủ đề này. Nói cách khác, bạn cố gắng tích lũy thêm thông tin về nó để hiểu rõ hơn về nó.


Điều tương tự cũng xảy ra với mạng lưới thần kinh. Bạn càng cần hiểu rõ chim chích trông như thế nào thì bạn càng cần hiển thị nhiều hình ảnh về chim chích. Càng xem xét nhiều dữ liệu thì điểm chính xác sẽ càng cao.


Phương pháp tiếp cận nhiều tầng mà chúng tôi đã chọn không chỉ cải thiện độ chính xác của mô hình phân loại đối tượng mà còn giúp phân tích tập dữ liệu và xác định nơi mạng thiếu dữ liệu học tập.


Vấn đề vịt con xấu xí


Sau khi mô hình phân loại đối tượng được đưa ra, chúng tôi rất ngạc nhiên khi nhận được kết quả tệ hơn nhiều so với những gì thử nghiệm cho chúng tôi thấy: mô hình không thể xác định chính xác loài hoặc loại chim.


Vấn đề còn sâu xa hơn thế này: nhà phát triển thị giác máy tính của chúng tôi phụ trách toàn bộ dự án, người đã tự mình tìm hiểu tất cả các loài chim khi làm việc với nó, cũng không xác định được loài chim đó là gì khi anh ta nhận được những hình ảnh bị mạng gắn nhãn sai. .


Hóa ra, tháng 7 không phải là thời điểm tốt nhất để triển khai mô hình phân loại chim vì đây là thời điểm những chú chim non học cách bay và rời tổ.


Bạn có nhớ câu chuyện vịt con xấu xí không? Chà, điều đó đúng với hầu hết các loài chim, những con non trông không giống chim trưởng thành và thật khó để biết bạn đang nhìn con chim nào nếu nó vẫn còn non.


Chúng tôi đã thu thập hình ảnh các loài chim non trong mùa hè và có kế hoạch huấn luyện mạng lưới phân loại để xác định các loài chim khác nhau ở các độ tuổi khác nhau.


Thường thì chim non trông không giống chim trưởng thành


Làm việc theo nhóm làm cho mạng hoạt động


Những người chơi chim là những người đam mê, họ biết cách nhận biết một con chim bằng hình dạng chiếc lông đơn của nó. Chúng sở hữu kiến thức mà mạng lưới phân loại của chúng ta mơ ước có được, vậy tại sao không kết hợp cả hai lại với nhau và thành lập một liên minh yêu chim mà thế giới chưa từng thấy trước đây?


Hiện tại, mạng phân loại không chỉ cho người dùng biết về loài chim mà còn cho thấy mức độ tin cậy cùng với những phỏng đoán khác.


Người dùng có thể xác nhận dự đoán của mạng hoặc sửa nó, từ đó giúp chúng tôi huấn luyện nó - mỗi lần một con chim. Sau khi chạy hệ thống phản hồi của người dùng được 3 tháng, chúng tôi đã thu thập được hơn 20 nghìn hình ảnh. Dữ liệu này là vô giá đối với chúng tôi vì các bức ảnh được chụp trong điều kiện thực tế (điều kiện thời tiết xấu, vào ban đêm, v.v.) và được các chuyên gia đánh giá.


Khi bạn nhìn chằm chằm vào vực thẳm, vực thẳm sẽ ríu rít lại với bạn


Điều đáng chú ý là trong dự án này, chúng tôi đã trở thành chuyên gia về chim. Việc quan sát các loài chim suốt cả ngày, đồng thời về cơ bản là giáo dục một đứa trẻ ảo về tất cả những khác biệt nhỏ giữa các loại chim sẻ khác nhau, khiến một đứa trẻ ngay lập tức trở thành thành viên bạch kim của cộng đồng quan sát chim.


Nếu vẫn thất bại, các thành viên trong nhóm CV của chúng tôi có thể dễ dàng tìm thấy chính mình trong lĩnh vực điểu học.


Một lưu ý nghiêm túc là khi xem qua hàng nghìn hình ảnh về các loài chim, dù là để đánh dấu tập dữ liệu hay phân tích nơi mạng mắc nhiều lỗi nhất, chúng tôi đã đào sâu vào dự án này và tìm ra kết quả không chỉ với một loạt kiến thức về chim mà còn hiểu rõ hơn về cách hoạt động của các hệ thống nhận dạng và phân loại hình ảnh phức tạp, cách triển khai chúng tốt nhất, cách phân tích một tập dữ liệu lớn và tìm ra điểm yếu của nó.


Dự án này vô cùng quý giá đối với chúng tôi vì đây là cơ hội để nghiên cứu và làm việc với các công nghệ thị giác máy tính mới nhất, xử lý phản hồi của khách hàng theo thời gian thực và trau dồi kỹ năng giải quyết vấn đề khi làm việc với mã lỗi thời.