AI貓窩:一位工程師鏟屎官給流浪貓主子們的賀年禮
刷臉開門,智慧溫溼度控制,新風系統……
如此智慧的不是我的家,而是喵星人的家。
來自百度大腦的工程師晚兮與流浪貓救助者一起,打造了「全球首個 AI 智慧貓窩」,在北京冷冽的寒風裡,為這些小傢伙們搭建了一隅避風港。

智慧貓窩裡的「智慧」包括刷臉開門的貓臉門禁系統,能控制 27 度恆溫的溫溼度感測器與加熱器,保持內部空氣清新的新風系統,以及可以判斷貓是否患病、是否尚未絕育的識別系統。

俗話說得好,不會寫程式碼的鏟屎官搭不出好貓窩,哪些深度學習模型在智慧貓窩中扮演了重要作用?他們又是如何訓練而成的呢?作為全民貓奴的機器之心編輯部的代表,我們和晚兮聊了聊。
機器之心:智慧貓窩裡用到了哪些機器學習模型?
智慧貓窩裡有動物識別、病貓識別和絕育識別三個機器學習模型。
機器之心:模型規模有多大?模型是如何搭建的?
模型的引數規模達到上千萬。
病貓識別、絕育識別模型是通過百度 EasyDL 平臺直接獲取介面完成的。在產品背後,EasyDL 是在預訓練過的模型上進行精調完成的最終模型。
選擇遷移學習是因為它可以提高訓練的效率和模型的效能:精調的模型引數一開始就較好,可以使網路更快地收斂;同時該方法可以解決樣本資料不夠充足的問題。
機器之心:模型需要多大規模的資料集?如何收集?需要自己進行標註嗎?
最初版本的模型,每一個類別需要 100 張左右的樣本,訓練集主要是從網上採集圖片經過篩選構建而成的。後續迭代中,為了使識別效果更佳準確,我們在寵物醫院實地進行了更真實更廣泛的資料採集。
採集後,需要自己進行簡單標註,對每一種貓的受傷種類進行區分,並放入對應的資料夾中,最後打包。
機器之心:模型如何處理貓臉離攝像頭遠近不同/角度各異等問題?
採集和篩選樣本的時候,我們會考慮到樣本多樣性的問題,同時也會使用資料增強增加樣本的多樣性。
機器之心:模型的推理在終端還是在雲端完成?有哪些與 AI 相關的計算是在終端完成的呢?使用了什麼硬體?
貓舍模型推理在雲端完成。但是我們 EasydDL 產品對裝置端的和雲端推理都能支援。特別是,我們最近釋出的 EasyEdge 一站式端計算平臺可以適配多種終端裝置並實現裝置端推理的加速。
在終端完成的與 AI 相關的計算主要是貓臉的特徵識別,使用的硬體計算平臺是一套 X86 的計算平臺,以及一臺紅外夜視攝像機。
機器之心:貓在多大範圍內活動能被貓窩上的攝像頭捕捉?貓臉識別夜視模型和白天模型是同一個模型嗎?
光線充足的情況下距離入口處的 2-3 米半徑範圍內可以進行貓臉識別,夜晚半徑範圍則為 1.5 米。夜視模型和白天是同一個模型。
機器之心:貓臉識別的粒度是「是否是貓」/「是哪一種貓」還是可以辨別「是哪一隻貓」?
根據智慧貓窩的需求,模型只需要做到能夠識別「是否是貓」就可以滿足。百度大腦動物識別 API 可以識別 174 種不同的貓的圖片,來確保各種貓都能夠被正確的識別。至於「是哪一隻貓」這類對於個體的識別,需要通過採集每個個體的資料才能進行準確的識別,因此不屬於目前場景的需求。
當然 EasyDL 影象分類的相關模型是能夠解決個體識別問題的,比如,我們之前有基於東北虎的虎皮紋識別老虎個體的實際案例。

機器之心:病貓識別問題相比於其他識別問題有什麼難點?
病貓識別的最大的問題在於很多病的特徵點比較小,比如受傷的貓咪可能只有一個很小的傷口,為了能夠準確的識別此類圖片,需要大量的病貓的圖片來進行訓練,同事要對模型不斷地進行引數優化和迭代,最終才能達到一個比較好的效果,減少誤識別的比例,減輕志願者的工作量。

機器之心:什麼病種相對更難識別?原因有哪些?
目前識別效果比較好的主要還是一些外部特徵較為明顯的疾病,比如外傷、鼻支、口炎等等。外部特徵不明顯的疾病比如貓瘟、消化道疾病之類的病不是很容易通過圖片來判斷,只能通過貓咪的精神狀態和表現來做大概的判斷。
機器之心:絕育模型識別的特徵是什麼?
絕育的貓咪和沒有絕育的貓咪在外觀上是基本沒有區別的,因此在傳統的流浪動物救助工作中,對已經進行過絕育的動物打耳標是一個非常通用的做法。所以在智慧貓窩的設計過程中,當然也採用識別耳標這個通用的方法來對貓咪是否絕育作出判斷。同時由於攝像頭的擺放位置,貓咪如果進入智慧貓窩,耳朵一定會處於攝像頭的照射範圍之內,拍出來的圖片效果非常明顯,比志願者用肉眼觀察效果都要好,因此識別耳標的出錯率甚至低於人工判斷的錯誤率。

機器之心:AI 貓窩的開發使用了 EasyDL 的哪些模組與功能?
EasyDL 提供了影象識別、聲音識別和文字分類這三種定製化的產品,其中影象識別當中又有影象分類和物體檢測兩種不同的應用。在智慧貓窩中,主要使用了影象分類來對圖片進行訓練,訓練出的模型可以快速地將圖片分類為貓和其他動物,健康貓和患有不同的疾病的貓。
機器之心:在你看來,使用 EasyDL 開發在哪些方面幫助你提高了效率?
傳統的機器學習,除了準備大量的資料之外,還需要對機器學習的原理有一定的理解,知道不同的問題適用於哪些學習框架的哪些網路模型,同時還需要有一定的編碼基礎,才能夠完成一個模型的訓練。另外對於資料量較大的模型,個人手中的訓練資源,比如需要使用的訓練資料、對訓練資料的標註、訓練所需要使用的機器等等都是非常有限並且成本很高的。而 EasyDL 的出現基本上解決了上面提到的所有問題。

只需要將準備好的資料打包上傳到平臺,選擇適用的模型類別,點選訓練,後臺就會調動雲端大量的機器資源幫你訓練模型,根據資料量大小,短則十幾分鍾,長則數個小時,就能夠訓練好一個機器學習的模型,並且生成一個線上可供呼叫的 API,直接就能夠使用了,極大地降低了 AI 在各個場景下的使用門檻,節省了大量的人力物力。
機器之心:貓窩搭建和運營各自需要哪些成本和條件?
貓窩的搭建主要是一些物料成本,比如保溫板、玻璃等,還有就是攝像頭、感測器、電機、控制主機等電子裝置,組裝是非常簡單的。運營所需要的條件當然首先要有不間斷的供電,另外就是有志願者能夠定時添糧換水。因此我這次這個智慧貓窩是放在了志願者經常對貓咪進行投喂和救助的社群裡,來幫助志願者減少工作量,同時提高貓咪的生活條件。
機器之心:一個貓窩大概能容納多少隻流浪貓?如果數量超出預期怎麼辦?
一個智慧貓窩的生活區使用隔板分成了四層,因此同時容納 5-6 只貓咪是完全沒有問題的,另外不是所有的貓都會同時進入貓窩,所以一個貓窩至少可以服務附近十幾只的流浪貓。由於每隻貓咪的進入志願者都能夠在手機上收到通知,所以如果流浪貓數量真的瞬間增加很多,他們會採取行動去做安置,如果這是個長期現象,我可能也會進一步在空間上做一些改善和增加,當然啦,到現在為止,貓咪們還沒有出現「超載」現象。
貓窩最初設計到現在這段時間內經歷過很多次的改進,比如入口處電動門後置的設計,最開始的設計是隻有一道門,但是測試過程中發現由於電動門的噪音導致流浪貓不敢靠近入口,後來靈機一動改為將識別放在前面,電動門放在後面這樣兩道門的設計,就避免了流浪貓被電動門的噪音嚇走的問題。測試的這段時間內,我們也收到了很多大型公益組織、品牌,還有微博和微信使用者的諮詢與正向反饋,我也希望希望智慧貓窩得到進一步推廣。
機器之心:接下來還打算新增哪些新的基於機器學習/深度學習的功能嗎?
目前的智慧貓窩只是一個非常初步的產品,但是我腦海中還有許多的功能後續會逐步新增到智慧貓窩上,比如可能識別貓糧、飲用水是不是已經吃完喝完,方便通知志願者及時新增;比如可以通過識別貓身上是不是乾淨、是不是品種貓來判斷這是不是一隻走失的貓咪,這樣可以及時幫助主人找回離家出走的貓等等。總之,人工智慧在生活中的方方面面都會有很大的作用,能夠極大地改變我們的生活。
機器之心:除了上面的問題之外,在開發過程中有哪些有意思的觀察或者發現可以與讀者分享一下嗎?
其實貓窩的製作、程式碼的編寫、模型的優化是比較枯燥無聊的,但是在製作過程中,我會時不時去流浪貓經常出沒的地方去看看流浪貓們,觀察觀察它們的生活狀態、性格、體型大小、習慣等等。
在和志願者們交流的過程中,我也學到了很多知識,比如貓咪餓了渴了,怎麼吸引它們來餵食點;怎麼判斷貓咪是不是病了,怎麼帶生病的流浪貓去醫院等等。看到貓咪們在志願者和好心人的照顧下生活的很開心,我是真心的覺得高興。