日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 目标检测 >内容正文

目标检测

目标检测simple Faster R-CNN训练自己的数据集

發布時間:2023/12/29 目标检测 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 目标检测simple Faster R-CNN训练自己的数据集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、復現

剛開始接觸目標檢測,自己動手復現的第一個開源項目是github上chenyuntc的simple faster?rcnn。歷經千辛萬苦最后貌似因為服務器顯卡內存不夠,在訓練時一直出現一個錯誤,如下:

最后也沒解決掉,就直接使用預訓練模型去測試了,測試平臺是jupyter notebook.在連著實驗室vpn使用服務器時,外部的網絡就卡成了狗,而我對linux環境的不熟悉,也在一定程度上對自己造成了困擾。總之最后測試的效果還可以,精確度比較高,但是我不知道是否由于自己訓練失敗的原因,總之沒有看到任何訓練、測試結果準確度和速度的參數。

二、跑自己數據集

這兩天淺淺標注了150張圖片的自己的數據集,準備看一下初步效果順便熟悉一下流程。

1、準備好數據集后的第一件事是要裁剪使其大小合適,(當然去掉無關背景后也方便自己選擇圖片),裁剪尺寸自己按需來定。裁剪代碼如下:

import numpy as np import cv2 import osdef update(input_img_path, output_img_path):image = cv2.imread(input_img_path)print(image.shape)cropped = image[800:1170, 780:1180] # 裁剪坐標為[y0:y1, x0:x1]cv2.imwrite(output_img_path, cropped)dataset_dir = r'D:\nagetive-33' output_dir = r'D:\nagetive-44' #改成自己的路徑# 獲得需要轉化的圖片路徑并生成目標路徑 image_filenames = [(os.path.join(dataset_dir, x), os.path.join(output_dir, x))for x in os.listdir(dataset_dir)] # 轉化所有圖片 for path in image_filenames:update(path[0], path[1])

2、裁剪后需要將選好的數據集中的圖片重命名,方便查找。(起始序號可更改)排序代碼如下:

import os import os.path import numpy as np rootdir = r"F:\DataSet_damo\JPEGImages/" #末尾斜杠不要丟,你的文件存放位置 files = os.listdir(rootdir) b=1 #可更改起始序號 for name in files:a=os.path.splitext(name)print(a[0])newname = str(b)+'.jpg'b = b + 1os.rename(rootdir+name,rootdir+newname)

3、 由于我使用的是faster rcnn的改進版算法,其使用的數據集標簽格式為VOC格式,不像使用yolo系列還需要做標簽的xml——>txt格式轉換,因此目前需要做的只有將打完標簽的xml格式的數據集分別劃分為訓練集、驗證集和測試集。劃分代碼如下:

import os import randompath='D:/VOCtrainval_06-Nov-2007/yoloV3conf\keras-yolo3-master/VOCdevkit/VOC2007/'trainval_percent = 0.66 train_percent = 0.5xmlfilepath = path+'Annotations' txtsavepath = path+'ImageSets/Main' total_xml = os.listdir(xmlfilepath)num=len(total_xml) list=range(num) tv=int(num*trainval_percent) tr=int(tv*train_percent) trainval= random.sample(list,tv) train=random.sample(trainval,tr)ftrainval = open(path+'ImageSets/Main/trainval.txt', 'w') ftest = open(path+'ImageSets/Main/test.txt', 'w') ftrain = open(path+'ImageSets/Main/train.txt', 'w') fval = open(path+'ImageSets/Main/val.txt', 'w')for i in list:name=total_xml[i][:-4]+'\n'if i in trainval:ftrainval.write(name)if i in train:ftrain.write(name)else:fval.write(name)else:ftest.write(name)ftrainval.close() ftrain.close() fval.close() ftest .close()

總結

以上是生活随笔為你收集整理的目标检测simple Faster R-CNN训练自己的数据集的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。