[Week7] Day31 CV


📒 Image Classification


パソコンのビジュアルを学ぶ前に、以前習ったCNNを復習しました.
授業が始まりました.月曜日はますます疲れてきました.
私は週末にもっと休むべきだったが、そうできなかったことを後悔した.
最後に,CNNアーキテクチャの歴史を重複として省略する.

📝 Computer Vision


撮影された実際のシーンのビデオをアルゴリズムでGPU演算し,シーンの解析を人間が理解できる形式に出力する.

最終的に、ComputerVisionはコンピュータグラフィックスの作業を逆にします.

MLでは,専門家が特徴抽出法を設計したが,深い学習では,終始End to Endで便利で性能の良い分類問題を解決した.

📝 Image Classification


Classifierはビデオを入力として受信し,ビデオ中の物体を分類出力する.

単点全音声層では,すべての重みが内部的であり,Activation Functionにより分類される.

しかし、上のモデルは1層しかないので、平均画像以外は表現できません.また、Test Timeでは、入力したデータがテンプレートと一致しない場合、異なる結果が生じる可能性があります.
従って、全ての画素のFC層とは異なり、ローカルに接続されたネットワークでは、画像の特性を考慮した局所領域のみが存在する.そのため、体重が大幅に減った.


📒 Annotation data efficient learning


実務に役立つ内容でいっぱいです.
これはすぐにプロジェクトを行うのに役立つと思います.

📝 Data augmentation


私たちが実際に取得できるデータは実際のデータの一部にすぎません.したがって,いくつかのデータが与えられた場合,これらのデータをより豊かに表すために多様な方法が用いられている.
# numpy를 이용한 밝기 변경
def brightness_augmentation(img):
    img[:,:,0] = min(img[:,:,0] + 100, 255)
    img[:,:,1] = min(img[:,:,1] + 100, 255)
    img[:,:,2] = min(img[:,:,2] + 100, 255)
    return img
    
# OpenCV를 이용한 rotate, flip 변경
img_roatated = cv2.rotate(image, cv2.ROITATE_90_CLOCKWISE)
img_flipped = cv2.rotate(image, cv2.ROTATE_180)

# numpy를 이용한 Crop
y_start = 500
crop_y_size = 400
x_start = 300
crop_x_size = 800
img_cropped = image[t_start : y_start + crop_y_size, x_start : x_start + crop_x_size, :]

# OpenCV를 이용한 Affine Transformation
rows, cols, ch = image.shape
pts1 = np.float32([[50,50], [200,50], [50,200]])
pts2 = np.float32([[10,100], [200,50], [100,250]])
M = cv2.getAffineTransform(pts1, pts2)
shear_img = cv2.warpAffine(image, M, (cols,rows))
RandeAugmentを使用すると、より効果的にAugmentを使用することができます.

📝 Leveraging pre-trained information


移行学習では、既存の学習の事前知識を活用して、関連する新しいタスクを少ないワークロードで完了し、パフォーマンスを向上させることができます.

Knowledge精留は学習した教師ネットワークの知識をより小さなモデルStudent Modelに伝達するために用いられる.モデル圧縮に使用します.最近ではTeacherの出力をダミーラベル自動生成機構として用いており,より大きなStudioモデルでも生成可能である.