linux下yolact演算法的實現,測試自己的資料集
**
環境
Ubuntu16.0 pytorch1.3.0 pycharm
程式碼連結:https://github.com/dbolya/yolact
- 下載anaconda cudnn 均為最新版
- 下載所需要的包
#Cython needs to be installed before pycocotools
pip install cython
pip install opencv-python pillow pycocotools matplotlib
git clone https://github.com/dbolya/yolact.git
cd yolact
3.在readme裡面下載所需要的權重檔案
程式碼修改
由於我用的是pytorch1.3.0,所以需要進行一些程式碼的修改,在yolact.py檔案中497行下的修改:
去掉 is_script_conv = isinstance(module, torch.jit.WeakScriptModuleProxy)
更換為 is_script_conv = ‘Script’ in type(module).name
2.新增weights檔案以及裡面的權重
3.新增coco/annotations 存放訓練json檔案
新增coco/images/JPEGImages 存放圖片
此時執行python eval.py可以執行
訓練自己的資料集
1.將錄好的視訊利用MP4.py以10幀獲取一幅圖片(錄時控制的大小是550*550)
2.檢視圖片質量,刪除沒有影像的圖片
3.對圖片進行改名字
4.對圖片進行標註
5.利用labelme2coco.py轉為coco資料集
- 利用以下程式碼將自己的圖片設定為550×550的大小
import os
import cv2
import numpy as np
## 讀取影像,解決imread不能讀取中文路徑的問題
def cv_imread(filePath):
cv_img = cv2.imdecode(np.fromfile(filePath, dtype=np.uint8), -1)
## imdecode讀取的是rgb,如果後續需要opencv處理的話,需要轉換成bgr,轉換後圖片顏色會變化 !!!!!!!!
##cv_img=cv2.cvtColor(cv_img,cv2.COLOR_RGB2BGR)
return cv_img
# 縮小圖片演算法 imagePath指的是大圖圖片 image_xPath指的是小圖圖片
def shrink(imagePath, image_xPath, out_width, out_height):
# img = cv2.imread(imagePath)
img = cv_imread(imagePath)
#print("高度,寬度:{}".format(img.shape[:2]))
# height, width = img.shape[:2]
# 縮小圖片
image_x = cv2.resize(img, (out_width, out_height), interpolation=cv2.INTER_CUBIC) # INTER_CUBIC 4x4畫素鄰域的雙三次插值
"""cv2.imshow('reSize2', image_x) #展示圖片
cv2.waitKey()
cv2.destroyAllWindows()"""
cv2.imwrite(image_xPath, image_x) # 寫入 如果是中文路徑有問題
if __name__ == '__main__':
file_path = r'./examples/instance_segmentation/outdir/JPEGImages/'
out_path = r'./examples/instance_segmentation/outdir/JPEGImage/'
image_list = os.listdir(file_path) # 得到的是 含有各個圖片名字的一個list
for image_name in image_list:
print("正在輸出:{}".format(image_name.replace(".JPG","_x.JPG")))
shrink(file_path + image_name, out_path + image_name, 550, 550) # 加上 'r'是為了防止轉義字元 這是不使用字尾名加_x的
# shrink(file_path + image_name, out_path + image_name.replace(".JPG", "_x.JPG"), 512, 512) # 加上 'r'是為了防止轉義字元
# shrink(file_path+image_name, file_path+image_name.replace(".JPG","_x.JPG"), 512, 512) # 加上 'r'是為了防止轉義字元
# shrink(r"I:/資料集/玉米苗識別部分地塊/玉米苗識別部分地塊/原始資料/6架次/DJI_0369.JPG", r"I:\image_x\DJI_0369_x.JPG", 512,512) # 加上 'r'是為了防止轉義字元
-
利用labelme對已經修正好的圖片進行標註
標註時需要注意如果一個圖片中有多個同類物件,標註的形式是person-1,person-2… -
將標註好的labelme轉化為coco資料集
轉化程式碼下載地址:https://github.com/wkentaro/labelme
在anconda中:
#python2
conda install pyqt
pip install labelme
#python3
conda create --name=labelme python=3.6
source activate labelme
pip install pyqt5
pip install labelme
ubuntu中:
#python2
sudo apt-get install python-pyqt5 # PyQt5
sudo pip install labelme
#python3
sudo apt-get install python3-pyqt5 # PyQt5
sudo pip3 install labelme -
修改labelme.txt
ignore
background
加上自己的類別名 -
執行labelme2coco.py
python labelme2coco.py input_dir=‘ ’ output_dir=‘ ’ --labels labels.txt
更改config檔案,建立自己的資料集類別
my_custom_dataset = dataset_base.copy({
'name': 'My Dataset',
'train_images': 'path_to_training_images',
'train_info': 'path_to_training_annotation',
'valid_images': 'path_to_validation_images',
'valid_info': 'path_to_validation_annotation',
'has_gt': True,
'class_names': ('my_class_id_1', 'my_class_id_2', 'my_class_id_3', ...)
})
-
更改num_classes為自己的類別數+1(背景)
-
dataset路徑改為自己的
-
執行train.py進行訓練
-
執行eval.py (將44行權重檔案改為訓練出來的權重檔案)
想要得到output_coco_json可以將114行parser.set_defaults中的output_coco_json改為Ture
-
執行run_coco_eval.py
相關文章
- js基本搜尋演算法實現與170萬條資料下的效能測試JS演算法
- 使用自己的資料集訓練MobileNet、ResNet實現影象分類(TensorFlow)
- JB的測試之旅-Linux下配置Linux
- 測試新人如何體現自己的價值
- Rest Assured+TestNg實現資料驅動的介面測試REST
- 通過sysbench工具實現MySQL資料庫的效能測試MySql資料庫
- 什麼是大資料測試?大資料測試實現步驟有哪些?大資料
- Mxnet R FCN 訓練自己的資料集
- mmsegmentation中構造自己的資料集和資料載入部分,跑現有demoSegmentation
- linux下軟raid的實現LinuxAI
- YOLOv4 win10 配置 + 訓練自己的資料 + 測試YOLOWin10
- 測試面試(三)--資料庫與linux面試資料庫Linux
- TestContainers:現代資料庫的測試方法 -GunduAI資料庫
- keras-retinanet 用自己的資料集訓練KerasNaN
- 用SSD-Pytorch訓練自己的資料集PyTorch
- Mxnet-R-FCN-訓練自己的資料集
- 大資料測試學習筆記之測試工具集大資料筆記
- Matlab與自己實現的平滑演算法對比Matlab演算法
- 【測繪程式設計試題集】 試題06 軌跡資料壓縮演算法程式設計演算法
- ImageAI實現完整的流程:資料集構建、模型訓練、識別預測AI模型
- FCM聚類演算法詳解(Python實現iris資料集)聚類演算法Python
- 資料採集與分析的那些事——從資料埋點到AB測試
- Python排序演算法[二]:測試資料的迷霧散去Python排序演算法
- SAP ABAP OData 服務的分頁載入資料集的實現(Paging)試讀版
- 並查集的概念與演算法實現並查集演算法
- 谷歌colab訓練自己的資料集YOLOv3谷歌YOLO
- 實現自己的promisePromise
- spark 三種建立 資料集的方法,及測試(Scala程式碼)Spark
- 對於JavaScript實現排序演算法的一些其他測試JavaScript排序演算法
- python基礎之 python實現PID演算法及測試的例子Python演算法
- linux下mysql主從複製,實現資料庫同步LinuxMySql資料庫
- Alink漫談(七) : 如何劃分訓練資料集和測試資料集
- PHP 實現簡單的資料採集併入庫PHP
- 如何實現車聯網的靈活資料採集
- 自己編寫平滑加權輪詢演算法,實現反向代理叢集服務的平滑分配演算法
- 全網最細 | 教你如何在 docker 容器下使用 mmdetection 訓練自己的資料集Docker
- JB的測試之旅-測試資料的準備/構造
- PLC實時資料採集如何實現?