어제의 삽질을 뒤로 하고, 오늘은 그래도 유의미한 결과를 가져왔다.
내가 생각했던것처럼, output의 정보를 가지고 있고, 이전 layer에 대한 정보를 가지고 있다면!
잘 작동하는것을 발견했다.
result = np.expand_dims(test_images[0],0)
result = result.astype(np.float32)
for layer in model.layers:
if predecessorInfo[layer.name]:
if len(predecessorInfo[layer.name]) == 1:
result = OutputSaver[predecessorInfo[layer.name][0]]
result = layer.call(result)
OutputSaver[layer.name] = result
else:
result=[]
for predecessor in predecessorInfo[layer.name]:
result.append(OutputSaver[predecessor])
result = layer.call(result)
OutputSaver[layer.name] = result
else:
result = layer.call(result)
OutputSaver[layer.name] = result
for idx, rlt in enumerate(result):
print(test_labels[idx])
print(tf.argmax(rlt,0))
'''
result:
7
tf.Tensor(7, shape=(), dtype=int64)
'''
다음 단계로는 Yolo v4에 대해서 테스트해보는 단계가 남았다.
위와 비슷하게 Output을 저장하는 Output Saver와 이전 레이어의 정보를 포함하는 predecessorInfo를 이용해서 제작을 해보았다.
pred_bbox = batch_data
print(len(infer.layers))
for layer in infer.layers:
print(layer.name)
if predecessorInfo[layer.name]:
if len(predecessorInfo[layer.name]) == 1:
pred_bbox = OutputSaver[predecessorInfo[layer.name][0]]
pred_bbox = layer.call(pred_bbox)
OutputSaver[layer.name] = pred_bbox
else:
pred_bbox=[]
for predecessor in predecessorInfo[layer.name]:
pred_bbox.append(OutputSaver[predecessor])
pred_bbox = layer.call(pred_bbox)
OutputSaver[layer.name] = pred_bbox
else:
pred_bbox = layer.call(pred_bbox)
OutputSaver[layer.name] = pred_bbox
기존에 infer(batch_data) 부분을 다음과 같이 수정했지만, 오류를 피할수는 없었다.
raise e.ag_error_metadata.to_exception(e)
AssertionError: in user code:
AssertionError:
[ WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (674) SourceReaderCB::~SourceReaderCB terminating async callback
대충...다음과 같은 에러인데... 일단은 이걸 해결하는데 힘을 써야 할것같다.
오류가 난 위치는 저 파란색 박스부분에서 오류가 발생했다.
layer의 이름은 tf_op_layer_Sigmoid 레이어로, 해결 방안을 찾아야 할것같다.
yolo v4추론까지는 거의다 왔기 때문에, 이 부분만 잘 진행한다면 거뜬히 해낼 수 있다고 생각된다.
'끄적끄적' 카테고리의 다른 글
layer merge하는 경우 수행 시간에 대한 고찰 (0) | 2023.02.17 |
---|---|
TensorFlow관련 주저리... (0) | 2023.02.06 |
Non-Sequential Model 묶기 (0) | 2023.02.02 |
Yolo 개척기 (2) | 2023.01.31 |
(TensorFlow) 첫번째 추론 시간, First inference time (0) | 2023.01.30 |