999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

LabelMe標注核對系統的設計與實現

2022-04-02 02:55:52迪力夏提多力昆張太紅馮向萍
計算機技術與發展 2022年3期
關鍵詞:數據庫用戶

迪力夏提·多力昆,張太紅,馮向萍

(新疆農業大學 計算機與信息工程學院,新疆 烏魯木齊 830052)

0 引 言

隨著計算機技術的發展,在深度學習領域中,數據集的選擇很重要,在構造數據集時,需要注意做好數據的清洗和標注,一個高質量的數據集往往能夠提高模型訓練的質量和預測的準確率。在沒有大規模的圖像數據集的情況下,為提高數據集質量,筆者設計了一種基于Django[1-2]的LabelMe[3-4](圖像標注工具)標注核對系統。

該文使用的圖像標注工具為LabelMe,在使用LabelMe標注工具完成標注后,通常對標注進行核對檢查。這是一個繁瑣且耗時的事情,需對每張圖片的每個標簽進行逐個點擊,并核對檢查標注與標簽的一致性。為解決該問題,降低核對工作中的復雜性,減少耗時,該文將分別從Django框架的技術、總體設計、數據庫設計、關鍵技術及系統界面展示等五個方面詳述。

1 Django框架技術

Django框架技術是一種開放源代碼式的Web[5-6]應用型框架,由Python[7]程序設計語言寫成,該框架設計模式為MTV[8],選用成熟的框架可避免代碼間迭代耦合等機制,還可根據具體需求,直接調用框架內部方法,更容易完成開發。Django框架也是一個遵循MVC[9]設計模式的框架,即模型、視圖、控制器。它們各自職責如下:

(1)模型層(Model):作為Web應用中最重要的一部分,它涵蓋了整個系統的實體類以及各種變量和方法規則,負責訪問及更新數據庫,為域名訪問使用的服務器提供接口。

(2)視圖層(View):視圖層主要是當有請求服務時來產生應答,并由HTML在界面上供使用者操作。主要以表單的形式傳給后臺,還可對其進行校驗,使開發者不必關心界面的相關問題,專注于業務邏輯的開發與實現。

(3)模板(Templates):模板是將數據的內容與展現分離,Django框架可隨時替換變更,并滿足用戶多樣需求,不局限于內置模板。強調代碼復用性,以插件形式將多個組件服務于整個框架,并隨時支持擴展,使得Django框架搭建Web平臺具有較強的擴展性。

2 總體設計

系統的總體設計如圖1所示,主要有項目管理、原圖記錄、導入JSON[10]、統一標簽名、批量生成標注圖、核對標注圖、導出JSON文件等七大功能模塊,其數據存儲部分使用Django框架自帶的SQLite3[11-12]數據庫。

(1)項目管理:該模塊作為系統的基礎模塊,主要用來管理來自不同項目的LabelMe數據集,使其相互獨立。擁有創建、修改、裁剪主要目標的功能。

(2)原圖記錄:該模塊主要在數據庫中記錄圖片路徑及標注狀態,并在數據庫中創建圖片表,其一張圖片對應一條記錄。

(3)導入JSON:該模塊主要用于導入標注集到數據庫中,一個標簽對應一條記錄,且圖片表與標簽表為一對多關系,同時生成標簽的匯總表。擁有導入新標注數據和導入修改后的標注數據集的功能。

(4)標簽設置:該模塊主要用來統一標簽的英文名,同時設置標簽的序號、中文名、顏色、字體位置和是否導出等功能,并通過預覽查看設置效果。

(5)批量生成掩碼圖:該模塊主要用來批量生成掩碼圖,通過設置好的標簽,使用OpenCV[13]生成掩碼圖,使用戶核對標注時無需逐個生成掩碼圖,加快核對速度。

(6)標注核對:該模塊為核心模塊,主要用來核對標注集,通過生成的掩碼圖以核對標簽名稱與對應標注物是否一致。擁有切換、修改、預覽等功能。

(7)導出JSON:該模塊為完成標注核對后的最后一部分,主要用于導出系統中核對后的JSON標注數據。擁有導出所有數據、移除需刪除數據、拷貝需修改數據和在標簽名后面追加序號等功能。

3 數據庫設計

數據庫的設計是系統設計環節中必不可少的一環,一個功能完善、結構合理的數據庫能夠幫助系統更高效、便捷地管理系統的各項數據。在數據庫設計中,ER模型是一種能夠改善開發人員與用戶之間的溝通交流的建模工具,能夠準確地描述數據的各種相關特性以及它們之間的互相約束關系,是一種概念性設計。通過ORM[14](對象關系映射)的方式建立Model層與數據庫的映射,完成數據庫的具體數據表的生成。EER[15](增強實體關系模型)則是對其進行了進一步細化,轉換成了關系模型,與具體的數據庫管理系統有關。系統的EER模型如圖2所示。

通過圖2對系統數據庫中各個結構的展示,可以清楚地發現數據庫不同表之間的具體關聯關系以及它們的總體情況。本節將根據之前的分析結果,綜合項目開發過程中的具體情況,創建數據Model并通過ORM映射生成具體的數據表,分別是項目表、匯總表、圖片表和標簽表,并對數據表做詳細說明。

3.1 項目表

該表主要用于管理不同項目的數據集,使同項目之間互不干擾。字段有id號、項目英文名、項目中文名、是否裁剪主要目標、X軸裁剪比例和Y軸裁剪比例。其中裁剪目標指的是在原圖上進行目標的裁剪,使圖片只包含主要目標,過濾其他背景。在馬匹四肢別征數據集中,裁剪目標設置為馬匹,裁剪比例設置為-1,使其生成的掩碼圖只包含馬匹,且裁剪比例為馬匹框長寬+10%。項目表的具體結構見表1。

表1 項目表結構

3.2 匯總表

該表主要用于統一標簽名及設置不同標簽之間的顏色及中文名坐標。字段有id號、項目分類、標簽英文名、標簽中文名、標簽序號、標簽掩碼顏色其RGB三通道色值、標簽中文名X軸坐標、標簽中文名Y軸坐標、標簽掩碼顏色是否取色差和是否導出。其中標簽英文名用來統一標簽名,若有同一個物體的標簽名誤寫有多個或更改標簽名,可以通過更改標簽英文名實現。標簽中文名主要用來提示掩碼圖中該物體的中文名,方便快速核對。其標簽中文名坐標是防止出現遮擋掩碼而設立。匯總表的具體結構見表2。

表2 匯總表結構

3.3 圖片表

該表主要用于記錄圖片地址及狀態。字段有id號、項目分類、原圖名、原圖后綴名、原圖路徑、掩碼圖路徑、掩碼圖中中文字體大小、JSON文件是否導入、掩碼圖生成狀態和圖片狀態。其中圖片狀態主要用來判斷圖片的標注數據的狀態,分別為未核對、無問題、有問題、需修改和需刪除共五種狀態。圖片表的具體結構見表3。

表3 圖片表結構

3.4 標簽表

該表主要用于操作標注數據集。字段有id號、圖片表外鍵、標簽分類、標注數據值、修改時間和標簽狀態。其中標注數據值分別有標簽名、坐標值、Group值、ShapeType值和Flags值。標簽名關聯匯總表,為一對多關系。坐標值為標注物在圖像中的坐標。項目表的具體結構見表4。

表4 標簽表結構

4 關鍵技術

本系統的關鍵技術是通過標注坐標生成掩碼圖,掩碼是由0和1組成的一個二進制圖像。用選定的圖像、圖形或物體,對待處理的圖像的全部或局部進行遮擋,用來控制圖像。該文用于在馬匹圖像中將馬匹、四肢和別征用不同顏色鏡像顯示,方便用戶一眼就能快速核對,如圖3所示。

在本系統中使用導入的JSON標注數據,查詢與圖片關聯的標簽表及匯總表,通過OpenCV將設置好的標簽顏色、標簽中文名和標簽中文名坐標繪制出來,下面詳細闡述其具體步驟。

(1)獲取標簽:在JSON標注集中,標簽的順序是以手工標注物體的順序存放,而每張圖的標注順序不同,故無法按照固定順序獲取標簽。本系統將每個標簽存入標簽表中,一個標簽為一條記錄,同一張圖中的標簽以圖片表和匯總表關聯,通過匯總表中用戶設置的序號排序,獲取每張圖中的標簽。

(2)繪制掩碼圖:通過獲取到的標簽,取出每個標簽的坐標值并將其轉換成OpenCV的嵌套字典格式,通過OpenCV的fillPoly函數生成mask層,并對標簽坐標值進行半透明填充。

(3)計算中文字體坐標:在繪制圖片中文名之前需要指定其標注中文名的坐標,而每個標簽位置不同,本系統從獲得的標簽中通過標簽坐標值得到該標簽邊框的左上角與右下角的坐標,獲取的文字坐標值見公式1。

(1)

其中,X和Y為標簽中文名坐標值,x1和y1為標簽邊框左上角坐標,x2和y2為標簽邊框右下角坐標。ratioX和ratioY為用戶設置的標簽坐標比例,以邊框左上角為原點,將標簽邊框長度和寬度除10為基本比例單位,ratioX和ratioY的值從-10到10控制標簽中文名的文字位置。

(4)繪制標簽中文名:在繪制標簽中文名時,有些圖片中將看不清文字,因此需要給文字添加背景,在本系統中添加的背景為白色矩形實體框,之后再繪制文字。白色矩形框的左上角坐標值為標簽中文名的左上角坐標值,其右下角的坐標值見公式2。

(2)

因中文、英文數字、符號所占長度空間不同,以字節為單位獲取文字實際長度,其中BLen為文字字節長度,TLen為文字個數長度,通過公式即可獲取文字實際長度LLen。因每張圖片長和寬不同,可能會出現字體太大遮擋圖片的情況,若遇到不合適的字體大小值,則需要用戶手動設置該圖片的文字大小TSize,默認值為55。X和Y為白色矩形框右下角坐標值。

5 系統界面展示

在用戶界面部分,根據具體需求,需要制作一個快速核對標注的界面。并在界面設計上,做到簡單明了與易于操作。本節主要是對系統的各個功能模塊進行展示,主要包括項目管理、原圖記錄、導入JSON、統一標簽名、批量生成標注圖、核對標注圖、導出JSON等七大功能模塊。

5.1 項目管理模塊

該模塊主要是管理不同項目的LabelMe數據集,模塊界面見圖4。用戶進行項目管理界面后,輸入項目英文名和中文名,點擊創建目錄,即可生成以項目名稱為名的項目文件夾,其中存放有圖片集、標注集、修改、刪除和掩碼等五個文件夾,用戶需要把原圖放到image文件夾中,標注文件放到JSON文件夾中。該模塊作為該系統的基礎模塊,主要用來管理不同項目的LabelMe數據集,使其相互獨立。該模塊的主要功能是為用戶生成存放【原圖】和【標注】的空文件夾,同時生成數據集的【修改】、【刪除】、【掩碼】圖的空文件夾。【修改】文件夾是用戶核對標注后,若有標注有問題,可將圖片狀態改為有問題,最后導出有問題JSON文件,系統會將所有有問題圖片的標注文件和原圖拷貝到【修改】文件夾,方便用戶修數據集使用。

【刪除】文件夾則是若該圖片不可用,可將圖片狀態改為需刪除,系統會將所有有問題圖片的標注文件和原圖移動到【修改】文件夾,并將數據庫中的數據清除,方便用戶最后導出JSON文件。

【掩碼】文件夾為用戶核對前,系統通過批量生成標掩碼圖,方便用戶快速核對標注。需要注意的是,在最后導出核對后的標注集時,系統會覆蓋【標注】文件夾的JSON標注文件。

5.2 原圖記錄模塊

該模塊主要是在數據庫中記錄圖片路徑及標注的狀態,模塊界面見圖5。

用戶進入原圖記錄界面后,需要先將原圖集放入【原圖】文件夾,再選擇項目并提交,待進度條達到100%后,提示已完成即可完成圖片記錄工作。

5.3 導入JSON模塊

該模塊主要用來導入標注集到數據庫中,一個標簽名對應一條記錄,圖片表與標簽表為一對多關系,模塊界面與圖5相似,下拉框內容不同。

用戶進入導入JSON界面后,需要先將標注集放入【標注】文件夾,再選擇項目并提交,待進度條達到100%后,提示已完成即可完成標注集導入工作。

在核對標注環節中若有圖片與標注無法對應,需要重新導入修改后的標注集,用戶選擇“重新導入需修改JSON”選項并提交,系統會將狀態為需修改的標簽數據從數據庫中清除,并將修改后的標注數據重新導入到數據庫中。待進度條達到100%后,提示已完成即可。

5.4 標簽設置模塊

該模塊主要用來統一標簽名英文名和設置標簽屬性。在導入JSON文件時會一同生成匯總表,相同英文名標簽只生成一條記錄,匯總表和標簽表也是一對多關系,模塊界面見圖6。

用戶進入導入JSON界面后,可設置標簽的序號、中文名、顏色、字體位置和是否導出,并通過預覽檢查設置情況。若修改標簽英文名與其他標簽英文名相同,則系統會合并標簽。標簽的排序號則會按照從小到大的順序排序,方便用戶將相同類型標簽放到一起,同時在生成掩碼圖時按照序號順序進行繪制。標簽的是否導出指的是生成掩碼圖和最后導出JSON文件時,這些標簽是否使用,不選擇則忽略。標簽中文名只在掩碼圖中使用,方便用戶快速核對。標簽的標注顏色是指生成掩碼圖時該標簽的顏色。中文名相對位置是指標簽中文名在掩碼圖中的位置。標簽的顏色疊加或色差是指在生成掩碼圖時標簽的顏色會進行疊加,而經過多層疊加后,顏色不好區分,因此一般只對最上層標簽進行取色差操作。最后用戶可以通過修改字體大小并預覽觀察設置效果。

5.5 批量生成掩碼圖模塊

該模塊主要是通過設置號的匯總表,通過OpenCV繪制掩碼圖,并將掩碼圖存入【掩碼】文件夾,方便用戶在核對時無需一一生成掩碼圖,加快核對速度。模塊界面與圖5相似,下拉框內容不同。

用戶進入標批量生成掩碼圖界面后,因批量生成掩碼圖需要一定的時間,用戶可以選擇不同狀態圖片批量生成掩碼圖,選擇完選項后并提交,待進度條達到100%后,提示已完成即可。

5.6 標注核對模塊

該模塊為核心模塊,主要用來核對標注集,用戶通過生成的掩碼圖核對標簽名稱與對應標注物是否一致,模塊界面見圖7。用戶進入標注核對界面后,可選擇核對不同狀態的數據。在左側掩碼圖中,若標注物與標簽中文名一致,可點擊左上角確認并切換該圖片的狀態。若標簽名有問題,只需用右側下拉菜單修改正確的標簽名并預覽,核對結束可點擊確認并切換修改圖片狀態。

若圖片與標注物無法對應,如圖片與JSON文件未對應,可將圖片狀態設置為需修改狀態并繼續核對其他圖片,所有圖片核對完成后可通過導出需修改JSON文件,重新標注,再回到導入JSON模塊,選擇重新導入需修改JSON,并繼續對需修改狀態的圖片核對即可。

若圖片質量不好,無法成為數據集,可將圖片狀態修改為需刪除狀態。所有圖片核對完成后可通過導出將需刪除狀態的圖片和JSON移除即可。

若圖片無法確定其狀態,可將圖片狀態修改為有問題狀態并繼續核對,所有圖片核對完成后重新對有問題狀態的圖片進行核對即可。

5.7 導出JSON模塊

該模塊為主要做導出所有核對后的數據、移除需刪除狀態的數據、拷貝需修改狀態的文件和對核對后的數據中,同一張圖片中有相同標簽名的標簽添加序號,模塊界面與圖5相似,下拉框內容不同。

用戶進入標注核對界面后,若選擇導出全部,則會將【標注】文件夾里的JSON文件全部按照核對后的數據進行覆蓋,形成核對后的數據集。

若選擇移除需刪除狀態的圖片,系統則會刪除數據庫里需刪除狀態的數據,并將對應的圖片和JSON文件移動到【刪除】文件夾,防止誤刪操作。

若選擇拷貝需修改狀態的圖片和JSON,系統則將需修改狀態的圖片和JSON文件拷貝到【修改】文件夾里,用戶只需修改完后,將修改后的JSON文件放入【標注】文件夾里,替換掉原文件并重新在導入JSON模塊導入即可。

若選擇在標簽名后面追加序號,系統則會在每張圖片有相同標簽名的標簽后面追加序號,用于實例分割數據集區分同一張圖中相同標簽名物體為不同實例。

6 結束語

該系統采用Django框架、Python語言進行開發,由于Django和Python發展至今技術已十分成熟,在很大程度上提升了開發的效率。系統通過數據可視化技術幫助大部分做圖像處理的研究人員,為提高圖像數據集的質量方面做出一份貢獻,為有相關需求的人員提供一定的幫助。

猜你喜歡
數據庫用戶
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數據庫
財經(2016年15期)2016-06-03 07:38:02
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
主站蜘蛛池模板: 亚洲综合九九| 国产成人久视频免费| 人妻21p大胆| 日本成人在线不卡视频| 色窝窝免费一区二区三区 | 色偷偷av男人的天堂不卡| 99资源在线| 亚洲成aⅴ人在线观看| 成人在线观看不卡| 久久国产高清视频| 免费国产福利| 九色免费视频| 在线亚洲精品福利网址导航| 这里只有精品在线播放| 亚洲综合欧美在线一区在线播放| 999在线免费视频| 在线a视频免费观看| 四虎影视国产精品| 国产午夜一级毛片| 2021最新国产精品网站| 国产精品夜夜嗨视频免费视频| av无码一区二区三区在线| 5555国产在线观看| 91毛片网| 成人午夜视频免费看欧美| 国产精品区网红主播在线观看| 精品人妻一区二区三区蜜桃AⅤ| 午夜毛片福利| 亚洲中文字幕久久无码精品A| 一级看片免费视频| 免费一级全黄少妇性色生活片| 大学生久久香蕉国产线观看| 精品久久久久久成人AV| 无码粉嫩虎白一线天在线观看| 国产成人毛片| 亚洲婷婷丁香| 秋霞国产在线| 国产成人精品第一区二区| 亚洲精品无码av中文字幕| 久草视频福利在线观看| 一级高清毛片免费a级高清毛片| 国产9191精品免费观看| 欧美另类图片视频无弹跳第一页 | 97国产在线观看| 老熟妇喷水一区二区三区| 国产黄在线观看| 亚洲综合精品香蕉久久网| 成年A级毛片| 亚洲人成网站观看在线观看| 日本亚洲成高清一区二区三区| 在线看片免费人成视久网下载| 日韩高清中文字幕| 久久精品中文无码资源站| 在线精品亚洲一区二区古装| 久久a级片| 中文字幕伦视频| 毛片基地美国正在播放亚洲| 亚洲人成网站在线播放2019| 色综合婷婷| 日本精品中文字幕在线不卡 | 久久99精品国产麻豆宅宅| 亚洲无码一区在线观看| 91福利免费视频| 午夜毛片福利| 国产国产人成免费视频77777| 精品少妇人妻无码久久| 国产成人在线无码免费视频| 久99久热只有精品国产15| 国产免费一级精品视频| 国产一区自拍视频| 午夜视频在线观看区二区| 不卡视频国产| 天堂成人av| 国产成人免费视频精品一区二区| 亚洲综合第一区| 国产一在线| 91人妻在线视频| 亚洲午夜18| 国产aⅴ无码专区亚洲av综合网| 韩日无码在线不卡| 毛片a级毛片免费观看免下载| 中文字幕日韩丝袜一区|