網路城邦
上一篇 回創作列表 下一篇  字體:
研究影像辨識,Python、Java或C++其實都不好用!
2020/11/17 08:38:02瀏覽2950|回應0|推薦6

我們(逸中軟體)是以影像辨識軟體研發為主業的公司,請注意到「研發」兩個字!我們不是代理軟體來賣的,也不是拿很多程式模組,替客戶「組裝」解決方案的!就是直接承接辨識問題,替客戶開發專用辨識軟體的公司!所以我們真的是天天在寫程式做影像辨識研究的!

既然每一行影像辨識程式都是自己寫的,當然我們使用的程式語言好不好用?是不是很方便?就是事關重大,影響整體工作效率的重要決策了!搞笑的是:我們的選擇和所有專家的建議都不一樣!我們用的程式語言是VB.NET,開業之初其實還有點不好意思講,但是既然公司做了這麼多年,推出那麼多產品,表現都很好,軟體開發速度也很快,我們就不再介意大聲說出來了!

我自己原本就是教程式設計十幾年的老教授,教過的課程範圍就涵蓋VBC#JavaHTMLASPSQLJavaScript等等多樣化的語言種類,我的碩博士論文中的程式則是用更古老的FORTRAN與HBASIC語言寫的。所以不要誤會我「只會」用VB!開業之後我們也聽說「專業」影像辨識多半會使用哪些語言?就通通都會試試看!C++寫影像辨識程式幾年前就玩過,最近也學會Python,當然也會嘗試一下做影像辨識程式的可能性。

經過充分的實驗體驗,我們的答案還是一樣!使用VB最方便最好用!如果微軟終究要停止支援VB,其實也不是甚麼危機,因為C#VB.NET算是攣生兄弟,只有上層語法略有不同,效能工具箱函式庫都是完全一樣的,就改用C#吧!但是除非不得已,我們一定不會主動選擇PythonJavaC++

為何如此?首要原因是影像辨識的靈魂是演算法,任何程式語言,除了高度特化的SQL等語言之外,基本上都可以精準的實作出所有影像辨識需要的演算法,連JavaScript都行!用Python寫的二值化程式沒有比VB寫的更有效率,事實上是比較慢!執行速度與該語言基底的函式庫有關,在Windows作業系統下,C++的速度與VB.NETC#是完全一樣的!因為都是用.NET函式庫。Java呢?如果你是在Windows系統,就不可能快過微軟公司本身支援的C#VBC++

結論是:如果你不使用外來的影像辨識程式模組,像我們一樣,真的完全依照最基礎的原理,分析問題寫程式客製化解決問題,任何語言都不會限制我們的創意,也不會因為某種語言比較少「資源」而感到困窘。我們的影像辨識函式庫資源,即使有也都是自己建立的,不必到該語言的論壇或平台去抓的。我們的習慣是:即使使用別人的「演算法」,也是照原理重寫一次程式,不會用現成的!因為不放心,怕套錯公式嘛!

所以我們可以選擇使用的語言很多,大家說比較好的那些語言,多半是有很多可以互相抄襲的現成的程式,以降低研發的難度,縮短研發時程,但是我們公司並不需要!我們需要的程式資源都已經自己建立好了,新的需求也一定會自己看書寫程式,這樣軟體才會精準有效率。這應該是很多大公司乃至頂尖學術機構都做不到的!我們做到了!

語言的程式資源如果不是限制,那就是要看研究過程中使用該語言是不是方便了?影像辨識就是研究影像,所有演算法的計算過程最好都能隨時追蹤,以掌握我的程式在哪裡出軌了!程式碼可以設中斷點,處理過程中的全部或局部影像呢?就要用程式繪圖顯示了!所以標準好用的視窗程式語言一定是我們的首選!VB最好,其次是C#

本文最前面的圖是我用來研究車牌辨識核心的程式介面,當然是用VB寫的!幾乎所有我想知道,想追蹤的辨識細節過程都可以從這個程式中看到!如果有客戶說某張影像的車牌辨識錯誤或無法辨識,打開這個程式,我一分鐘之內就可以完成診斷,找到事故現場!當我有新的演算法創意時,也都是用這個軟體做實驗的!很快很方便!

但是那些網路上的影像辨識專家沒有告訴大家的是:使用PythonJavaC++要做出像我這樣的實驗軟體都非常困難!因為它們基本上都不是預設以視窗程式為開發標的的程式,必須匯入外加好多模組,非常辛苦的才能建立一個可以方便檢視資料與影像的視窗程式,甚至必須使用其他軟體才能將計算結果繪圖呈現,怕自己累不死啊?所以我當然不會笨到用Python作我研究的工具程式

在此我倒不是要硬推我自己的做法,而是一方面解釋我會用VB其實非常合理,但未必適合所有的人,我能這樣做是有一定的前提條件的!另一方面,則是提醒大家:有一好沒兩好,影像程式資源豐富的那幾種語言,都是不太容易製成視窗軟體的!不僅實驗時不容易學我,要做成產品出售時也有點麻煩。

事實上前面的影像只是我做車牌辨識的實驗軟體,每一個不同目的的影像辨識專案我們都會很快建立一個這種軟體,辨識核心與這些過程介面是一起一邊研究,一邊依據需要逐步擴充出來的!研發完成之後可能就是增刪一些介面,改出一個適合客戶使用(而非我們做實驗)的軟體了!如果我們不是用本來就很好設計視窗介面的程式語言,那就會多出好多額外的工作了!

( 心情隨筆工作職場 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=yccsonar&aid=153289806