車線データセットCULane処理
車線データセットCULane処理トリミング
0.はじめに
現在使用されている車線データセットは2つあり、tusimpleとculane、tusimpleデータセットの画像の元の解像度は720 Pであるが、culaneデータセットの元の解像度は1640 x 590である.さらに288 x 800解像度は分割ベースの方法で演算量が多く、ボードカードでの動作が遅すぎたため、関連試験も行いbackboneと解像度を変更し、UFLDでmbv 2と256 x 512の解像度トレーニングを用い、モデルはresnet 18、F 1より約3ポイント低下したが、ボードカード速度は20 ms(288 x 800 rensnet 18は70以上)と大きく向上したため、画像解像度については、元の画像の上の空の部分を取り除くことができて、元の図の上で画像の解像度を下げて、記録してスクリプトを生成します
1.実現
下CULane全体のデータセット上の車線点の最小縦座標は250で、個人はデータセットの高さを360に切り取ったので、原図590で230を減算する必要がある.
0.はじめに
現在使用されている車線データセットは2つあり、tusimpleとculane、tusimpleデータセットの画像の元の解像度は720 Pであるが、culaneデータセットの元の解像度は1640 x 590である.さらに288 x 800解像度は分割ベースの方法で演算量が多く、ボードカードでの動作が遅すぎたため、関連試験も行いbackboneと解像度を変更し、UFLDでmbv 2と256 x 512の解像度トレーニングを用い、モデルはresnet 18、F 1より約3ポイント低下したが、ボードカード速度は20 ms(288 x 800 rensnet 18は70以上)と大きく向上したため、画像解像度については、元の画像の上の空の部分を取り除くことができて、元の図の上で画像の解像度を下げて、記録してスクリプトを生成します
1.実現
下CULane全体のデータセット上の車線点の最小縦座標は250で、個人はデータセットの高さを360に切り取ったので、原図590で230を減算する必要がある.
import os
import cv2
import glob
import numpy as np
# culane datasets ymain = 250
data_dir = ['driver_100_30frame', 'driver_161_90frame', 'driver_182_30frame', 'driver_193_90frame', 'driver_23_30frame', 'driver_37_30frame']
ymin = 590
count = 0
img_num = 0
txt_num = 0
for s in data_dir:
img_dir = glob.glob(os.path.join(s,'*/*.jpg'))
txt_dir = glob.glob(os.path.join(s,'*/*.txt'))
print('{}: img num {} txt num {} total num: {}'.format(s,len(img_dir), len(txt_dir),len(img_dir) + len(txt_dir)))
for img_path in img_dir:
img = cv2.imread(img_path)
img = img[230:,:,:]
clip_path = os.path.join('/opt/sda5/BL01_Data/Lane_Data/CULane_Clip', img_path)
if not os.path.exists(os.path.split(clip_path)[0]):
os.makedirs(os.path.split(clip_path)[0])
cv2.imwrite(clip_path, img)
img_num += 1
txt_path = img_path.replace('.jpg', '.lines.txt')
if not os.path.exists(txt_path):
continue
with open(txt_path, 'r') as f:
lines = f.readlines()
#if len(lines) == 0:
# print(txt_path)
lab_path = clip_path.replace('.jpg', '.lines.txt')
with open(lab_path, 'w') as ff:
for line in lines:
points = []
for index, p in enumerate(line.strip().split(' ')):
if index % 2 != 0:
p = str(float(p) - 230) + ' '
else:
p = p + ' '
points.append(str(p))
points.append('
')
#points = np.array([int(float(x)) for x in points]).reshape(-1,2)
#for x_y in points:
# cv2.circle(img, tuple(x_y), 2, (255,0,0), -1)
ff.writelines(points)
txt_num += 1
print('{}: img num {} txt num {} total num: {}'.format(s, img_num, txt_num, img_num + txt_num))