目前市面上的圖片標記工具琳瑯滿目,不同的標記幾乎都能找到相對應(yīng)的標記工具來使用,但是,能加以客制化適應(yīng)特殊需求的卻不多,因此,本文試著開發(fā)一款segmentation標記的工具,能夠針對不同標記公司及用戶的需求以加入特定標記功能,也能夠兼容于特別指定的輸入輸出要求。
PixelAnnotationTool
PixelAnnotationTool是一款簡單方便的segmentation工具,之前所訓練的道路區(qū)域檢測模型,便是用這工具來標記道路區(qū)域。
優(yōu)點:
1.支援Linux, Windows, Mac等平臺。
2.免費, 開源。
3.支持多標記:不同顏色代表不同的類別class,點選便可標記涂刷各種標記。
4.直接將segmentation結(jié)果存為png格式的mask檔。
5.可用鼠標圖片放大縮小,可進行精細的標記調(diào)整。
缺點:
1.自定類別繁鎖:預(yù)設(shè)為COCOdataset的類別,要修改為自己的類別須匯出config json檔后,自行修改再載入。
2.開啟一個檔案便會產(chǎn)生一個頁簽,超過某數(shù)量后便無法再開啟其它圖檔,需關(guān)閉頁簽后才能再開其它檔案。
3.使用點按方式調(diào)整透明度、筆篩大小等,但調(diào)整按鍵過小,且要重復點擊多次后才能到達需要的數(shù)值。
4.無法另外設(shè)定標記mask的儲存路徑,默認只能與dataset圖片放置于同一路徑。
5.標記mask圖片默認皆為輸出三張color_mask、_mask、_watershed_mask,名稱及種類無法更改。
自制的Segmentation Tool
自行開發(fā)的segmentation tool,可針對需求加以客制功能,例如,在碰到不曉得怎么標記的圖片,希望有個按鈕將此圖片移到指定文件夾,好讓其它人員來review教導。「刪除」的功能也是一樣,他們不希望圖片直接被刪除,而是移到指定區(qū)域,代表這些圖片不需要標記。此外,在輸入及輸出的圖片命名格式,也可依據(jù)需求來修改。
開發(fā)使用的組件
開發(fā)此Tool UI的工具是采用CVUI:https://dovyski.github.io/cvui/,這是一套另人印象深刻的好用工具,對于那些只想單純用OpenCV開發(fā)的人,不需要辛苦的用繪圖指令刻出各種按鈕組件了,CVUI已經(jīng)替你作好,而且不僅僅是陽春簡單的版面。
不過,由于OpenCV本身就不支持顯示中文,因此,CVUI也無法顯示中文字型,這是唯一比較可惜的地方。
特色:
1.簡單、輕量
2.僅需要OpenCV無需其它組件
3.完全基于OpenCV繪圖產(chǎn)生,不需要OpenGL或Qt等套件
4.采用C開發(fā),速度快
5.使用行列方式自動排列,不需擔心組件的位置
6.提供簡單功能完整的mouse API
7.不多不少的接口組件(約11個)
安裝:
pip install cvui
基本用法:
下方范例為產(chǎn)生一張空白的圖檔frame,然后再上面顯示Hello world!
注意原有的cv2.imshow 已被 cvui.imshow 所取代。
如果想用cv2.imshow,那么可在cv2.imshow之前先呼叫cvui.update()。cv2.imshow+cvui.update()就等于cvui.imshow()
importnumpy as np
importcv2
importcvui
WINDOW_NAME= ‘CVUI Test’
cvui.init(WINDOW_NAME)
frame =np.zeros((200, 400, 3), np.uint8)
whileTrue:
frame[:] = (49, 52, 49)
cvui.text(frame, 10, 15, ‘Hello world!’)
cvui.imshow(WINDOW1_NAME,frame)
if cv2.waitKey(20) == 27:
break
OpenCV畫面的priority
由于程序同時需顯示三個畫面:工具欄、編輯主畫面、放大畫面,這些畫面都是透過OpenCV的imshow()命令來執(zhí)行,我們必須先呼叫setWindowProperty,讓工具欄及放大畫面的窗口皆保持在編輯主畫面上方,否則會被遮蓋(后方數(shù)字愈大則在愈上方)。
cv2.setWindowProperty(WINDOW_NAME,cv2.WND_PROP_TOPMOST, 1)
使用接口
總共分為三個窗口:工具欄、主圖片、以及Zoom放大三個窗口。
為了提供伊甸的標記人員操作方便,工具欄圖示特意放得較大,且以方便按到為原則,顯示文字也以直覺易懂為主。
1.點按數(shù)字0-9可調(diào)整圖片mask的透明度,確定mask是否正確。
2.筆刷調(diào)整,可于工具欄上預(yù)覽目前筆刷的大小。鼠標左鍵為白色,右鍵為黑色,代表在黑白的mask上增加及減少區(qū)域。
3.「存盤」按鈕:直接將目前看到mask所編修的畫面,存成黑白mask檔(png格式),若沒有按此鍵存檔就跳到其它張,不會儲存。
4.「不會」及「刪除」按鈕:此兩個按鈕會把目前圖片移到指定的區(qū)域(可在配置文件中修改域位置),方便事后作檢視的動作。
5.「上一張」及「下一張」:切換圖片使用。
6.Zoom放大區(qū):放大預(yù)覽目前鼠標所在的區(qū)域。放大倍率可在配置文件中調(diào)整。
.ini 配置文件說明
[PATHS]
#待標注圖片的路徑(例如imagesf1)
source_path = images
#不曉得怎么標注的圖片, 要存放的路徑(「不會」按鈕)
unknown_path = unknown
#不需要標注的圖片, 要存放的路徑(「刪除」按鈕)
removed_path = dont_need
[DISPLAY]
#工具欄的方向:0為橫向, 1為蹤向。
tool_box = 1
[masks]
#是否要在標記完成所儲存的mask圖檔,文件名前方加上額外字符串。(空白代表不需要)
txt_prefix =
#是否要在標記完成所儲存的mask圖檔,文件名后方加上額外字符串。(空白代表不需要)
#下方范例,代表要加上 _mask 字符串,可讓PixelAnnotationTool程序讀取。
txt_append = _mask
#儲存的mask圖檔格式
ext_format = .png
#放大預(yù)覽的尺寸(單位為pixels)
zoom_size = 600
未來可加入的功能
針對不同的標記對象,可加入該對象相關(guān)的mask檢測功能。例如此次的目標物為人物,那么可加入訓練好的人物mask檢測模型,先替用戶產(chǎn)生預(yù)先mask好的圖片,讓用戶進行編修,以加快標記mask的速度。
審核編輯:劉清
-
OpenGL
+關(guān)注
關(guān)注
1文章
85瀏覽量
29219 -
OpenCV
+關(guān)注
關(guān)注
30文章
628瀏覽量
41273 -
python
+關(guān)注
關(guān)注
56文章
4783瀏覽量
84473
原文標題:影像Segmentation工具開發(fā)
文章出處:【微信號:易心Microbit編程,微信公眾號:易心Microbit編程】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論