對於機器學習也不是了解的很深入,今天無意中在GitHub看到一個star的比較多的庫,就用着試一試,效果也還行。比是可能比不上TensorFlow的,但是在Android上用起來比較簡單,畢竟TensorFlow還要又JNI的知識。
這個庫:onyx
效果:
用法非常簡單,就是根據圖片分析得到圖片有可能的分類,這個學習的庫是已經被訓練過的,所以我們只需要直接讓它識別就好了。得到的結果是根據可能概率由高到低排列。因為得到的結果都是英語,這里也用百度翻譯來翻譯了,所以結果中可能某些詞會比較奇怪。
① onyx使用
依賴:
compile 'com.hanuor.onyx:onyx:1.1.4'
直接編譯會不通過,因為這個庫用的是Java8寫的,而Android Studio默認新建的工程是1.7的,所以還要進行配置,在app下的build.gradle文件中,添加如下代碼:
android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } defaultConfig { ... jackOptions { enabled true } } ... }
使用就比較簡單了:
1 Onyx.with(MainActivity.this).fromURL(URL).getTagsfromApi(new OnTaskCompletion() { 2 @Override 3 public void onComplete(ArrayList<String> response) { 4 // do your stuff 5 } 6 });
這里如果分析成功會回調onComplete方法,得到上面我們顯示的標簽的英文。
這里其實還有另一個方法:getTagsandProbability(),這個方法則是會同時獲取到每個標簽對應的概率。
② 百度翻譯
使用百度翻譯其實不難,但是一定要吐槽一下百度翻譯的問題,如果一個單詞邊上有一個其他符號,百度翻譯會直接忽略這個單詞。
接入基本看文檔就明白了,但是有幾個地方要注意:
- MD5加密的時候,要得到一個十六進制串
- 構造參數前要進行URLEncode
代碼也存一下,免得以后碰到又忘了。