pybullet GGCNN数据集制作(三)
目錄
深度相機
驅動安裝
pyrealsense2安裝
學校端口問題用以下方法安裝?
其它相關環境安裝?
Vscode配置anaconda環境
數據集制作和加載
調用深度相機進行數據集制作
代碼部分
?運行效果
展示的代碼文件
數據集標注
?相關環境配置
代碼理解?
標簽代碼
可視化標簽代碼
?數據增強
康奈爾數據集下載(沒有深度相機可以直接用這個數據集學習)
鏈接:https://pan.baidu.com/s/1lgPBUT4NPKYXNbzKgBIzCQ 提取碼:1n7s數據集如圖所示
day01--數據集制作(一)_m0_46154334的博客-CSDN博客_cornell數據集1.Cornell數據集下載鏈接:https://pan.baidu.com/s/1sVH5cgWWzyISv5v1XaPllg?pwd=udc6提取碼:udc6圖一 cornell grasp data文件圖二 cornell文件兩者內容解壓后內容差不多(圖一為linux下壓縮包)1.1Windows下解壓tar.gz文件1、進入解壓包所在的文件夾,按住shift點擊鼠標右鍵,打開Powershell窗口。2、輸入命令tar -zxvf 文件名3、解壓完成后,應該有4種文件,一https://blog.csdn.net/m0_46154334/article/details/124119048?此處注意需要進行相關轉換
先說明一下:沒有深度相機也可以學習,直接用的康奈爾數據集里的進行標注
相關資料:
鏈接:https://pan.baidu.com/s/1Q6UXKxAqkjerpSZkRBW4pA 提取碼:02eo --來自百度網盤超級會員V4的分享深度相機
注意要用USB3.0連接
?如果是這種情況確定插入的是usb3.0的插口的情況下,那就是線不對(不能用type-c的手機數據線)
要用
?這種
用手機數據線的話只能通過代碼開攝像機
驅動要關閉
測量的實際深度越多誤差越大
左邊第一個和右邊第二個是紅外主動測距立體相機
左邊第二個大的是紅外投影(投射紅外點陣,然后用紅外主動測距相機捕捉反射測量距離)
最右邊是RGB彩色相機
工作原理:
通過紅外主動測距立體相機可以拍攝到場景包含紅外信息的圖像
(通過三角測距法來獲得每一點的深度)
驅動安裝
Window10 intel realsense D435安裝并實現opencv顯示realsense讀取的彩色和深度數據(QT+openCV+rsD35)_Pabebe的博客-CSDN博客
?這個可以查看圖像
深度指令(平時是不用的)
?右上角可以選擇2D或者3D模式
左邊已經顯示連接到了USB接口上
第一個選項是查看深度圖像,第二個選項RGB
pyrealsense2安裝
?Windows下使用Python配置環境、調用Intel realsense D435/D435i,即pyrealsense2庫的安裝_GRF-Sunomikp31的博客-CSDN博客_d435i windowsWindows下使用Python配置環境、調用Intel realsense D435/D435i前言錯誤嘗試嘗試一嘗試二配置過程創建Python3.6環境安裝**pyrealsense2**、opencv、numpy庫測試記錄筆記后言Bibliography前言近來太懶了,想拿起Python玩玩,突然想到可以把手邊的D435i配置一下,在windows下利用python調調;經過幾個小時的配置,解決了一些問題,總結如下;由于只使用RGB和深度圖,不使用IMU,因此D435i和D435配置是完全相同的https://blog.csdn.net/qq_44847636/article/details/113821588?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165270910516780357213382%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165270910516780357213382&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-113821588-null-null.nonecase&utm_term=Windows%E4%B8%8B%E4%BD%BF%E7%94%A8Python&spm=1018.2226.3001.4450
安裝的時候如果有問題可以臨時換源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package恢復源
https://www.csdn.net/tags/MtjaYg4sOTAxNDctYmxvZwO0O0OO0O0O.html?
學校端口問題用以下方法安裝?
在python中安裝包出現Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))_lsf_007的博客-CSDN博客先向大家展示以下困擾了我好久的問題死活就是安裝不上,總是說出錯,其實就是說連接超時,下載不了安裝包,我這里也沒有科學上網的工具,經過多方百度,找到了辦法通過幾次pip的使用,對于默認的pip源的速度實在無法忍受,于是便搜集了一些國內的pip源,如下:阿里云 http://mirrors.aliyun.com/pypi/simple/中國科技大學 https://pypi.mirrors....https://blog.csdn.net/lsf_007/article/details/87931823
其它相關環境安裝?
?
?
?用以下方式安裝即可
pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn opencv-python?此時cv2不再報錯
?安裝imageio
pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn imageio?
WARNING: The scripts imageio_download_bin.exe and imageio_remove_bin.exe are installed in 'C:\Users\SZU\AppData\Roaming\Python\Python38\Scripts' which is not on PATH.Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.?出現這個提醒
加入提示的環境變量
Vscode配置anaconda環境
下載相關拓展
關聯VSCode與Anaconda
在VSCode里使用快捷鍵 Ctrl + P ,搜索 >select intetrpreter ,點擊圖片上這個:
?點擊這個python旁邊的版本數字
選擇要用的環境即可?
數據集制作和加載
自己制作數據集最好是100張以上的圖片
調用深度相機進行數據集制作
沒有深度圖也沒事,可以直接用數據集里的圖片?
以下是相機拍攝效果
代碼部分
打開對應的編碼文件?
?這一部分是建立相機到程序的聯通
def run():pipeline = rs.pipeline()#Create a config并配置要流??式傳輸的管道config = rs.config()config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)align_to = rs.stream.coloralign = rs.align(align_to)這一部分是建立保存圖像的文件夾(文件夾名為日期)
# 按照日期創建文件夾save_path = os.path.join(os.getcwd(), "out", time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime()))os.mkdir(save_path)這一部分是建立兩個opencv2的兩個窗口
# 保存的圖片和實時的圖片界面cv2.namedWindow("live", cv2.WINDOW_AUTOSIZE)cv2.namedWindow("save", cv2.WINDOW_AUTOSIZE)saved_count = 0然后進入循環
?因為抓取檢測最好是用彩色圖像和深度圖對齊的
所以獲取了RGB圖像以及和RGB對齊的深度圖像
# 獲取RGB圖像color_frame = aligned_frames.get_color_frame()color_image = np.asanyarray(color_frame.get_data())# 獲取深度圖aligned_depth_frame = aligned_frames.get_depth_frame()depth_image = np.asanyarray(aligned_depth_frame.get_data()).astype(np.float32) / 1000. # 單位為m?但因為獲取的深度圖是以毫米為單位的,為了單位一致,轉換成米
此處可以補全也可以不補全
# 可視化圖像# depth_image = inpaint(depth_image) # 補全缺失值先看一下不補全的效果(所以此處注釋掉了補全)
Python-OpenCV中的cv2.inpaint()函數的使用_python_腳本中心 - 編程客棧目錄概念庫函數實現代碼概念修復是圖像插值。數字修復算法在圖像插值,照片恢復,縮放和超分辨率等方面具有廣泛的應用。大多數人會在家里放一些舊的退化照片,上面有一些黑點,一些筆畫等。你有沒有想過恢復它?我們...http://www.cppcns.com/jiaoben/python/402435.html
深度圖轉換成RGB(這樣觀感更好)
depth_image_color = depth2RGB(depth_image)然后展示出來
cv2.imshow("live", np.hstack((color_image, depth_image_color)))?然后s鍵保存、q鍵退出(選中窗口)
# s 保存圖片if key & 0xFF == ord('s'):cv2.imwrite(os.path.join((save_path), "{:04d}r.png".format(saved_count)), color_image) # 保存RGB為png文件imsave(os.path.join((save_path), "{:04d}d.tiff".format(saved_count)), depth_image) # 保存深度圖為tiff文件saved_count+=1cv2.imshow("save", np.hstack((color_image, depth_image_color)))# q 退出if key & 0xFF == ord('q') or key == 27:cv2.destroyAllWindows()break?運行效果
?先切換到配置好的環境
1.不補全缺省值的情況下
這個live窗口是實時的
?
然后點擊live窗口,再按一下s?
?
多摁幾次s多保存幾張
?
?然后保存好之后摁q退出
?保存在這個目錄下
進入對應目錄
?彩色圖像保存為.png格式
深度圖保存為.tiff格式
因為后續的GGCNN使用的就是tiff格式
2.打開補全
?live效果(比剛剛生動一點)
?補全后就沒有缺失點了
但是其實還有一點糊
可能是因為就是消費級深度相機
展示的代碼文件
第二個文件是用來展示剛剛保存的圖像
?展示路徑為
path = './out/2021_12_24_14_59_49/0000d.tiff'的圖像?
?
然后搭建拍攝平臺對著足夠的物體或者樣本進行拍攝
數據集標注
GGCNN其實沒有標注 (其實只是轉換了康奈爾數據集的標簽)
但是他不精確,因為康奈爾原本的數據集就不精確
?打開網絡的代碼文件
?相關環境配置
切換到對應環境?
conda activate GGCNN
安裝(版本號一定要對上)
conda install scikit-image==0.18.3?更新numpy庫不然會報錯
pip install -U --user -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn numpy安裝mkl
pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn mkl同樣的環境在vscode和在pycharm中運行報錯不一樣
主要原因有可能是VSCode
默認使用項目文件夾根目錄作為工作目錄(cwd),這會使得子文件夾中的程序無法使用相對路徑。
可以在File -> Preference -> Settings,再搜索Execute in File Dir,勾上這個即可
?配置好環境后就運行成功了
代碼理解?
主要的程序就是main_label.py
if __name__ == '__main__':path = './test' # 數據集圖片路徑label_win_name = 'labeling'files = glob.glob(os.path.join(path, 'pcd*[0-9]r.png')) # 匹配所有的符合條件的文件,并將其以list的形式返回就是對指定的path下的
pcd*[0-9]r.png進行標注
(.png)彩色圖命名為pcd+四位數編號+r?
? (.tiff)格式圖命名為pcd+四位數編號+d
?注意這里有一個pcd0100Label的.txt文件這是因為此時的test文件夾的圖片都是標注好的
所以如果想標注(但是沒有數據集,可以先把里面的.txt文件刪掉或者移除到別的地方)
?程序運行
此時有兩個窗口
labeling是可以開始標注的窗口
labeled是顯示標注結果的窗口
?操作說明
****** 操作說明 ****** 1 用鼠標左鍵畫出一條適合夾持器抓取的直線 2 按 上/下 調整線寬(抓取區域寬度)上: 增加線寬下: 減小線寬3 按 W/S/Q/E 設置抓取模式:w: 朝向紅色點單向抓取S: 朝向綠色單向抓取E: 對稱抓取Q: 圓形抓取4 按 左/右 調整抓取寬度 (抓取寬度比物體寬2cm,兩側各1cm)左: 增加右: 減小換下一張:空格 退出標注:Esc在換下一張時,當前圖像上標注的數據會保存至pcd****label.txt, 退出時,當前圖像的標注不保存1.
?按住左鍵拖動然后放開兩邊出現了一個紅色的點和綠色的點(這條直線代表線上的點或者線周圍點是可以作為抓取點的)
?按方向鍵上下可以調節線的寬度(抓取區域寬度)
最好不要超過6
注意:如果物體很窄,那畫線跟它對齊就行
抓取模式設置(此時要設置為英文輸入法)
3 按 W/S/Q/E 設置抓取模式: (實際上就是抓取角)
w: 朝向紅色點單向抓取
S: 朝向綠色單向抓取
E: 對稱抓取
Q: 圓形抓取
下圖為按了E鍵的效果?
?
?對稱抓取是針對二指抓取器的
如果是單側的話
代表一邊的抓手先到紅色點然后再抓取
?4 按 左/右 調整抓取寬度 (抓取寬度比物體寬2cm,兩側各1cm)
左: 增加
右: 減小
代表抓手的張開寬度?(一定要物體更寬防止碰撞)
?換下一張:空格
在換下一張時,當前圖像上標注的數據會保存至pcd****label.txt,
這是生成的遙控器的抓取配置
.txt 命名是pcd+編號+Label
每一行五個數
?前兩個數代表第一條畫的線上的點(沒有寬度時)
?第三個數和第四個數就是抓取角的弧度
?如果使用單側抓取模式
此時只有一個抓取角弧度
?
?最后一個數代表抓取寬度
是以像素為單位的
注:圓形抓取
1.先按住左鍵點一個點
2.按上下調整點的大小
?3.選擇圓形抓取模式并用左右鍵調整寬度
?
此時只有三個數
?前兩個數是抓取點的橫軸和縱軸
第三個數就是抓取寬度也就是直徑
?沒有角度是因為在這種情況下怎么抓取都是可以的
標簽代碼
?對應修改path為剛剛的test的路徑即可(記得調整反斜杠)
?運行前
?運行后
對每個圖片生成了.mat格式文件
?里面的內容是
3代表3個通道
480 640 代表圖片大小
?抓取點這個通道其實就是對這個480*640的圖片上每個像素的抓取置信度
剛剛標注的就是淺藍色上的點都是置信度都是1其他都是0
抓取角是當時標注時的第一個角
比如說第一行這里它就只選擇3.03914880008267作為抓取角
抓取寬度是除以一個數讓它在0-1之間
這樣就可以直接用sigmod
.mat格式可以通過python的scipy直接讀取
可視化標簽代碼
修改path為test的路徑
注意反斜杠
?
?保存路徑如下(此處將保存函數注釋掉了,需要的話可以解開注釋)
?
?運行結果
?數據增強
?
?縮放
旋轉(抓取配置也要對應旋轉)
裁剪出適合圖像訓練的尺寸
隨機的翻轉
def __getitem__(self, idx):# 讀取img和標簽image = DepthImage(self.depth_files[idx])label = GraspMat(self.grasp_files[idx])# 數據增強if self.argument:# resizescale = np.random.uniform(0.9, 1.1)image.rescale(scale)label.rescale(scale)# rotaterota = 30rota = np.random.uniform(-1 * rota, rota)image.rotate(rota)label.rotate(rota)# cropdist = 30crop_bbox = image.crop(self.output_size, dist)label.crop(crop_bbox)# flipflip = True if np.random.rand() < 0.5 else Falseif flip:image.flip()label.flip()else:# cropcrop_bbox = image.crop(self.output_size)label.crop(crop_bbox)# img歸一化image.normalize()# 獲取targetlabel.encode()img = self.numpy_to_torch(image.img)grasp_point = self.numpy_to_torch(label.grasp_point)grasp_cos = self.numpy_to_torch(label.grasp_cos)grasp_sin = self.numpy_to_torch(label.grasp_sin)grasp_width = self.numpy_to_torch(label.grasp_width)return img, (grasp_point, grasp_cos, grasp_sin, grasp_width)歸一化就是減去均值,讓其位于-1~1之間 (0均值標準化使其符合正態分布)
?角度就是生成論文的cos和sin那個
總結
以上是生活随笔為你收集整理的pybullet GGCNN数据集制作(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PDF转换成excel,如何做?
- 下一篇: Typora主题代码更改(引用块颜色,