ailia-models icon indicating copy to clipboard operation
ailia-models copied to clipboard

Implement Deepsort vehicle

Open ooe1123 opened this issue 4 years ago • 6 comments

https://github.com/axinc-ai/ailia-models/issues/534

ooe1123 avatar Sep 06 '21 14:09 ooe1123

DETRACデータセットでのいくつかの評価 image

ooe1123 avatar Sep 06 '21 14:09 ooe1123

こちらの動画を処理してみようとしたのですが、featuresが0に落ちるのか、下記のエラーが発生しました。-e 0でCPUモードモードでも同様です。 https://pixabay.com/ja/videos/%E3%82%A2%E3%82%B8%E3%82%A2-%E3%82%BF%E3%82%A4-%E3%83%90%E3%83%B3%E3%82%B3%E3%82%AF-%E4%BA%A4%E9%80%9A-23712/

 INFO deepsort_vehicle.py (137) : Start Inference...
print(features)
[[ 0.05745667 -0.12649673 -0.0398131  ... -0.10394365 -0.06650859
   0.0497472 ]
 [ 0.         -0.         -0.         ... -0.         -0.
   0.        ]
 [ 0.         -0.         -0.         ... -0.         -0.
   0.        ]
 ...
 [ 0.         -0.         -0.         ... -0.         -0.
   0.        ]
 [ 0.         -0.         -0.         ... -0.         -0.
   0.        ]
 [ 0.         -0.         -0.         ... -0.         -0.
   0.        ]]
[[ 0. -0. -0. ... -0. -0.  0.]
 [ 0. -0. -0. ... -0. -0.  0.]
 [ 0. -0. -0. ... -0. -0.  0.]
 ...
 [ 0. -0. -0. ... -0. -0.  0.]
 [ 0. -0. -0. ... -0. -0.  0.]
 [ 0. -0. -0. ... -0. -0.  0.]]
[[ 0. -0. -0. ... -0. -0.  0.]
 [ 0. -0. -0. ... -0. -0.  0.]
 [ 0. -0. -0. ... -0. -0.  0.]
 ...
 [ 0. -0. -0. ... -0. -0.  0.]
 [ 0. -0. -0. ... -0. -0.  0.]
 [ 0. -0. -0. ... -0. -0.  0.]]
[[ 0. -0. -0. ... -0. -0.  0.]
 [ 0. -0. -0. ... -0. -0.  0.]
 [ 0. -0. -0. ... -0. -0.  0.]
 ...
 [ 0. -0. -0. ... -0. -0.  0.]
 [ 0. -0. -0. ... -0. -0.  0.]
 [ 0. -0. -0. ... -0. -0.  0.]]
Traceback (most recent call last):
  File "deepsort_vehicle.py", line 367, in <module>
    main()
  File "deepsort_vehicle.py", line 363, in main
    recognize_from_video(detector, extractor)
  File "deepsort_vehicle.py", line 203, in recognize_from_video
    tracker.update(detections)
  File "../deepsort/sort/tracker.py", line 67, in update
    self._match(detections)
  File "../deepsort/sort/tracker.py", line 113, in _match
    self.tracks, detections, confirmed_tracks)
  File "../deepsort/sort/linear_assignment.py", line 138, in matching_cascade
    track_indices_l, unmatched_detections)
  File "../deepsort/sort/linear_assignment.py", line 58, in min_cost_matching
    row_indices, col_indices = linear_assignment(cost_matrix)
  File "/usr/local/lib/python3.7/site-packages/scipy/optimize/_lsap.py", line 93, in linear_sum_assignment
    raise ValueError("matrix contains invalid numeric entries")
ValueError: matrix contains invalid numeric entries

kyakuno avatar Sep 09 '21 12:09 kyakuno

自分のローカル環境(Windows)とgtune-titanマシン(192.168.51.142)にて実行しましたが、再現できませんでした。 (ailia v1.2.8)

scipy内部でのエラーのようですが、scipyをバージョンアップして解決しないでしょうか? (scipy 1.2.0 とscipy 1.4.1 で動作を確認)

SORTの処理内でのエラーで、ちょっと手におえそうにありません。

ooe1123 avatar Sep 11 '21 06:09 ooe1123

sort/liner_assignment.py https://github.com/axinc-ai/ailia-models/blob/master/object_tracking/deepsort/sort/linear_assignment.py#L54-L58

    cost_matrix = distance_metric(
        tracks, detections, track_indices, detection_indices)
    cost_matrix[cost_matrix > max_distance] = max_distance + 1e-5

    row_indices, col_indices = linear_assignment(cost_matrix)

で計算しているcost_matrixが np.any(np.isneginf(cost_matrix) | np.isnan(cost_matrix)) の条件に引っかかってエラーとなっているようですが、そのような問題が起こりえる箇所を特定できませんでした。

distance_metric() はsort/tracker.pyの gated_metric() が適用されています。 https://github.com/axinc-ai/ailia-models/blob/master/object_tracking/deepsort/sort/tracker.py#L93-L101

gated_metric() から呼び出しているself.metric.distance() は、 sort/nn_matching.pyの distance() となっていて、 https://github.com/axinc-ai/ailia-models/blob/master/object_tracking/deepsort/sort/nn_matching.py#L171-L174

こちらの self._metric() は、_nn_euclidean_distance() となっています。 https://github.com/axinc-ai/ailia-models/blob/master/object_tracking/deepsort/sort/nn_matching.py#L56-L74

gated_metric() から呼び出しているgate_cost_matrix() は、 https://github.com/axinc-ai/ailia-models/blob/master/object_tracking/deepsort/sort/linear_assignment.py#L181-L190 です。

計算過程で値がinfになったり、nanになったりするような箇所は見つかりませんでした。

ooe1123 avatar Sep 11 '21 06:09 ooe1123

print(features)をすると、features extractorの出力がNaNになっていることがエラーの原因のようです。-e 0を指定すると発生しないため、macOSのMPSのFP16の演算精度が不足していそうな印象です。

[array([ 0., -0., -0., -0.,  0., -0.,  0., -0.,  0., -0.,  0.,  0., -0.,
        0.,  0., -0., -0., -0.,  0.,  0., -0.,  0., -0., -0., -0., -0.,
       -0., -0.,  0., -0., -0.,  0., -0., -0.,  0.,  0., -0., -0.,  0.,
       -0., -0.,  0.,  0.,  0., -0.,  0., -0.,  0., -0.,  0., -0.,  0.,
       -0.,  0.,  0., -0.,  0., -0., -0., -0., -0.,  0.,  0.,  0.,  0.,
       -0., -0., -0.,  0., -0., -0., -0., -0., -0.,  0., -0., nan, -0.,
       -0., -0.,  0., -0., -0., -0., -0., -0., -0., -0.,  0.,  0., -0.,
        0., -0.,  0., -0.,  0.,  0., -0., -0.,  0.,  0.,  0., -0.,  0.,
        0., -0., -0., -0., -0., -0.,  0., -0., -0.,  0., -0., -0.,  0.,
        0., -0.,  0.,  0., -0., -0.,  0.,  0., -0., -0.,  0.],

kyakuno avatar Dec 30 '21 12:12 kyakuno

CUDAでも-eでFP16のbackendを指定すると発生するかもしれません。

kyakuno avatar Dec 30 '21 12:12 kyakuno

ailia SDK 1.3.0でもFP16だと問題が発生する。 FP32が必要なモデルの模様。

kyakuno avatar Mar 04 '24 09:03 kyakuno