Я делаю некоторую работу для дипломной работы и должен попробовать некоторые фильтры на различных изображениях и посмотреть, обнаружен ли объект.Все работает само по себе, но я намеревался постепенно применять 100 различных степеней каждого из 4 фильтров (контрастность, размытость и т. Д.) К кадру и видеть, где он перестает правильно распознаваться.
Я бы скомбинировал их, например, сначала импортируется какое-то изображение в кадр, затем я пытаюсь определить его, добавив контраст «0%», «0%» размытие, «0%», изменение размера, «0%»."шум, следующий раунд 1% контраста, другие все 0%, затем 2% контраста, другие 0% и так далее до 100% контраста.Следующий цикл должен сделать то же самое, но с размытием 1%, изменением размера 0%, шумом 0%.Затем 2% размытия, 0%, 0% и т. Д. - все виды комбинаций.
Но это означает, что необходимо выполнить 100 ^ 4 итерации (100 миллионов, если я хочу 100 градусов и 4 фильтра).А моя текущая реализация YOLOv3-320 с OpenCV выполняет обнаружение со скоростью около 0,5 секунды.Это означает, что для завершения одного снимка потребуется около 580 дней.
def tester(depth, correct_answer):
container_a = []
for a in range(depth):
print((a*(100/depth)))
frame1 = apply_sepia(frame, int((a*(100/depth))))
container_b = []
for b in range(depth):
frame2 = apply_blur(frame1, int((b*(100/depth))))
container_c = []
for c in range(depth):
frame3 = sp_noise(frame2, int((c*(100/depth))))
container_d = []
for d in range(depth):
frame4 = image_resize(frame3, int((d*(100/depth))))
try:
net.setInput(cv.dnn.blobFromImage(frame4, 1/255, (vers, vers), [0,0,0], 1, crop=False))
result = postprocess(net.forward(getOutputsNames(net)))
if result == correct_answer:
container_d.append(1)
else:
container_d.append(0)
except Exception as e:
container_d.append(0)
container_c.append(container_d)
container_b.append(container_c)
container_a.append(container_b)
return container_a
Как я могу ускорить это?