In [1]:
!git clone https://github.com/derInformatiker/AIcrowd-AIBlitz7-Solution.git
!pip install -r AIcrowd-AIBlitz7-Solution/challenge2/requirements.txt
!pip install aicrowd-cli==0.1
RESTART RUNTIME TO USE NEW PACKAGES¶
In [1]:
API_KEY = "" # Please enter your API Key from [https://www.aicrowd.com/participants/me]
!aicrowd login --api-key $API_KEY
In [2]:
!aicrowd dataset download --challenge debris-detection
!rm -rf data
!mkdir data
!unzip -q train.zip -d data/train
!unzip -q val.zip -d data/val
!unzip -q test.zip -d data/test
!mv train.csv data/train.csv
!mv val.csv data/val.csv
!mv sample_submission.csv data/sample_submission.csv
In [3]:
import pandas as pd
import ast
import numpy as np
from detecto import core, utils, visualize
from matplotlib import pyplot as plt
from tqdm import tqdm
import cv2
In [4]:
data = pd.read_csv('data/train.csv')
fn, w, h, cl, boxes, imgid = [], [], [], [], [], []
counter = 0
for i in range(300):
idx = int(data['ImageID'].iloc[i])
bbox = ast.literal_eval(data['bboxes'].iloc[i])
for box in bbox:
fn.append(f'{idx}.jpg')
w.append(512)
h.append(512)
cl.append('debris')
boxes.append(box)
imgid.append(counter)
counter += 1
boxes = np.array(boxes).T
pd.DataFrame(
{'filename':fn,
'width' : w,
'height' : h,
'class' : cl,
'xmin' : boxes[0],
'ymin' : boxes[2],
'xmax' : boxes[1],
'ymax':boxes[3],
'image_id':imgid
}
).to_csv('data/labels.csv',index = False)
In [6]:
dataset = core.Dataset('data/labels.csv','data/train')
model = core.Model(['debris'],pretrained = False)
m = model.fit(dataset,epochs=10, learning_rate=0.001, lr_step_size=5,verbose = True)
In [ ]:
out = []
for i in tqdm(range(5000)):
image = utils.read_image(f'data/test/{i}.jpg')
labels, boxes, scores = model.predict(image)
bb = []
for u,box in enumerate(boxes):
box = box.cpu().tolist()
bb.append([box[0],box[2],box[1],box[3],float(scores[u]+0.2 if scores[u]+0.2 <= 1 else 1)])
out.append(bb)
In [ ]:
def draw_bboxes(img, bboxes, train,color=(255, 0, 0), thickness=1):
for u, bbox in enumerate(bboxes):
# if [x1, y1, x2, y2]
img = cv2.rectangle(img, (int(bbox[0]),int(bbox[2])), (int(bbox[1]),int(bbox[3])), color, thickness)
return img
In [ ]:
num = 5
i = utils.read_image(f'data/test/{num}.jpg')
#i = cv2.flip(i,0)
image = draw_bboxes(i,out[num],True)
#image = draw_bboxes(image,t[num],False,(0,255,0))
plt.clf()
plt.figure(figsize=(10,10))
plt.imshow(image)
In [ ]:
df = pd.read_csv('data/sample_submission.csv')
df.bboxes = out
df.to_csv('submission.csv',index = False)
In [ ]:
↕️ Read More
Comments
You must login before you can post a comment.