defforward_once(self, x, profile=False):
y, dt =[],[]# outputsfor m in self.model:if m.f !=-1:# if not from previous layer
x = y[m.f]ifisinstance(m.f,int)else[x if j ==-1else y[j]for j in m.f]# from earlier layersifnothasattr(self,'traced'):
self.traced=Falseif self.traced:ifisinstance(m, Detect)orisinstance(m, IDetect)orisinstance(m, IAuxDetect)orisinstance(m, IKeypoint):breakif profile:
c =isinstance(m,(Detect, IDetect, IAuxDetect, IBin))
o = thop.profile(m, inputs=(x.copy()if c else x,), verbose=False)[0]/1E9*2if thop else0# FLOPSfor _ inrange(10):
m(x.copy()if c else x)
t = time_synchronized()for _ inrange(10):
m(x.copy()if c else x)
dt.append((time_synchronized()- t)*100)print('%10.1f%10.0f%10.1fms %-40s'%(o, m.np, dt[-1], m.type))
x = m(x)# run