讓我們不妨先來盤點下從 2016 年起過去三年間 Google I/O 開發(fā)者大會亮相的重磅 AI 產(chǎn)品:
深度好玩!文章開始紅色石頭先在草稿紙上寫一道高數(shù)微積分題目給大家看看如何求解:
怎么算呢?趁著高數(shù)知識還沒忘完,趕緊拿起紙演算起來。大部分人是這么做的。但是如果現(xiàn)在跟你說,可以用 AI 來做,你信嗎?
現(xiàn)在就有這樣一個 AI 程序,你只要輕松上傳上面這張手寫算術(shù)題,程序就能幫你自動分析,寫出解題步驟和答案!你信嗎?就像下面一樣:
Amazing!有沒有!今天就給大家介紹這個有趣的 mathAI 項目。它是一個拍照做題程序。輸入一張包含數(shù)學(xué)計算題的圖片,就會自動輸出識別出的數(shù)學(xué)計算式以及計算結(jié)果。
項目介紹
該項目名為:mathAI,是一個自動計算手寫公式的程序。作者是一名中山大學(xué)的學(xué)霸碩士小哥 Roujack,他的研究方向就是計算機視覺。
整個程序使用 Python 實現(xiàn),具體處理流程包括了圖像預(yù)處理、字符識別、數(shù)學(xué)公式識別、數(shù)學(xué)公式語義理解、結(jié)果輸出。
整個系統(tǒng)流程圖如下:
1. 預(yù)處理
首先,需要對手寫圖片進行預(yù)處理。圖片預(yù)處理以 OpenCV 作為主要工具。預(yù)處理的主要目的是把圖片中的字符切割出來,同時避免無關(guān)變量對字符識別的影響。
預(yù)處理主要包括:灰度化、二值化、高斯濾波、字符切割與細化。
對圖片預(yù)處理的效果如下圖所示:
2. 字符識別
預(yù)處理之后,下一步就是對字符進行識別。選擇的模型是卷積神經(jīng)網(wǎng)絡(luò) LeNet5,因為不需要提取字符特征值,而且圖像識別精確度高。
訓(xùn)練網(wǎng)絡(luò)選用的數(shù)據(jù)集是國際數(shù)學(xué)公式識別比賽數(shù)據(jù)集(CROHME)。CROHME 數(shù)據(jù)集具有海量字符集圖片,而且圖片類型與實際輸入非常相似。每種字符有 400 張圖片,其中 60% 的圖片用于訓(xùn)練,40% 的圖片用于測試。
接下來就是結(jié)構(gòu)分析和語義分析。
總的來說,對于數(shù)學(xué)公式的識別,主要是將識別出的獨立的字符組織成計算機能夠理解的數(shù)學(xué)公式(這里的數(shù)學(xué)公式就是純字符的可求解的數(shù)學(xué)計算題)。大概的方法是使用編譯原理的算符優(yōu)先法和遞歸下降法進行實現(xiàn)。 然后根據(jù)屬性文法的值傳遞思想,將數(shù)學(xué)公式的值計算出來。最后使用 Python 的 Matplotlib 庫把計算過程和答案打印出來。
實驗結(jié)果
模型訓(xùn)練完成之后,作者驗證了字符識別的準(zhǔn)確率:
然后,作者對 160 道測試題進行測試,系統(tǒng)做對 127 道題目,正確率為 79.38%??梢哉f相當(dāng)不錯了!
項目開源
真正令人激動是作者已將這個項目的源碼發(fā)布在了 GitHub 上,供大家查看。開源地址為:
https://github.com/Roujack/mathAI
GitHub 上公開了系統(tǒng)代碼。
其實,這是一個半開源的項目,目前上傳的版本只能處理較簡單的一維算術(shù)表達式(如果想要識別更加復(fù)雜的表達式,可以參考數(shù)學(xué)公式識別的論文)??梢詤⒖嫉拇a是前面字符識別部分以及整個算法處理框架。
例如圖像預(yù)處理代碼:
例如字符識別代碼:
運行程序
要運行這個系統(tǒng)分為兩種,一種是網(wǎng)頁模式,一種是接口模式。
1. 網(wǎng)頁模式
在項目的網(wǎng)頁上,輸入圖片,即可獲得處理結(jié)果。
2. 接口模式
項目有一個 solver 的 Python package。里面的 solve 方法封裝了整個系統(tǒng)。其功能是輸入一張圖片路徑,將輸出計算題識別過程和計算結(jié)果。
作者還專門錄制了一個視頻,講解如何在網(wǎng)頁模式上運行程序并驗證正確率。
優(yōu)點與缺點
優(yōu)點:這是一整套拍照做題的算法框架,同時能夠處理多種多樣的計算題,目前市面上還沒有看到實現(xiàn)。OCR 技術(shù)如此成熟的今天字符識別已經(jīng)不算有挑戰(zhàn)的東西了。
缺點:字符空間關(guān)系判斷只用了人類啟發(fā)式規(guī)則,圖像預(yù)處理不夠魯棒,數(shù)學(xué)公式的結(jié)構(gòu)識別算法不夠完美(可以考慮使用二維文法來做)。系統(tǒng)還有很大的提升空間。
總的來說,這個程序相對比較簡單,能夠?qū)崿F(xiàn)一般的手寫圖片微積分高數(shù)題,較復(fù)雜的還不能實現(xiàn)。但是該項目確實是一個有意思的嘗試,相信作者也會不斷優(yōu)化。有興趣的可以看一下,試一試你手寫的算術(shù)題,看看準(zhǔn)確率如何。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4726瀏覽量
100326 -
AI
+關(guān)注
關(guān)注
87文章
29435瀏覽量
267737 -
python
+關(guān)注
關(guān)注
54文章
4759瀏覽量
84297
原文標(biāo)題:開源!mathAI手寫拍照自動能解高數(shù)題,還不快試試?
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論