根據經驗,順序可以更改的原因取決於您用於加載圖像的框架。OpenCV 特別以 BGR 格式對通道進行排序,因為一些內部優化以這種方式利用格式。可以使用 scikit-image、matplotlib 和 Pillow 查看常規 RGB 格式的圖像。
實際上,如果您查看該load_video
函數,它會使用 OpenCV 打開視頻,因此輸入的幀是 BGR 格式。因此,必須交換通道才能將其轉換為 RGB 格式:
def load_video(path, max_frames=0):
cap = cv2.VideoCapture(path)
frames = []
try:
while True:
ret, frame = cap.read()
if not ret:
break
frame = crop_center(frame)
frame = frame[:, :, [2, 1, 0]]
frames.append(frame)
if len(frames) == max_frames:
break
finally:
cap.release()
return np.array(frames)
您當然不需要反轉通道,因為神經網絡會根據它提供的輸入數據進行學習,但人們傾向於這樣做,以便輕鬆調試圖像,而不必擔心不斷反轉通道展示。具體來說,如果神經網絡是按 BGR 排序訓練的,如果您以 RGB 格式加載圖像,則需要完成通道的反轉,因為這就是訓練中圖像通道的表示方式。總而言之,這取決於框架,但在訓練後使用神經網絡時需要牢記這一點。如果數據以 BGR 格式訓練,如果您的圖像以 RGB 格式讀取,則需要在推理之前反轉通道。
事實上,這是使用網絡時的常見錯誤!非常勤奮,並在使用之前了解圖像數據是如何為網絡進行預處理的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句