개고양이 전이학습중
MLP 다층모델은 0,1 분류라서 학습결과가 안좋음

MLP (다층 퍼셉트론, Multi-Layer Perceptron) 모델이 이미지 분류, 특히 개와 고양이 같은 복잡한 이미지 분류 작업에서 성능이 좋지 않을 수 있습니다. 그 이유는 몇 가지가 있습니다:
이미지 데이터의 복잡성: MLP는 기본적으로 완전 연결층을 사용하며, 이미지 데이터를 1차원 배열로 변환해서 처리합니다. 이 방식은 이미지의 공간적 구조(예: 픽셀 간의 관계)를 무시하므로, 개와 고양이 같은 복잡한 이미지 분류에서는 정보를 제대로 학습하지 못할 가능성이 높습니다.
컨볼루션 레이어의 부재: 이미지 처리에 주로 사용되는 CNN(합성곱 신경망, Convolutional Neural Networks)은 이미지에서 패턴이나 특징을 추출하는 데 특화되어 있습니다. CNN은 이미지의 2D 구조를 유지하면서 특징을 추출하는 반면, MLP는 그 역할을 하지 못하기 때문에 이미지 분류 성능이 낮을 수 있습니다.
전이 학습의 비효율성: 전이 학습에서 일반적으로 사전 훈련된 CNN 모델을 사용하여 학습된 특성들을 활용합니다. MLP는 이러한 사전 학습된 모델들의 성능을 제대로 살리지 못할 수 있습니다.
따라서, 개와 고양이 이미지 분류 같은 작업에서는 CNN 기반의 모델(예: VGG, ResNet, EfficientNet 등)을 사용한 전이 학습이 훨씬 더 좋은 성능을 발휘할 것입니다. MLP는 0과 1로 구분되는 간단한 이진 분류 작업에서는 유용할 수 있지만, 복잡한 이미지 분류 작업에는 적합하지 않습니다.




시간이 오래걸림




마지막 층만 재학습 (부분적인 미세조정)
python
코드 복사
for layer in vgg16_model.layers[:-1]: # VGG16 모델의 모든 층을 반복적으로 탐색
if layer.name == 'block5_conv3': # 마지막 층이라면?
layer.trainable = True # 재학습
else:
layer.trainable = False # 동결
이 코드는 VGG16 모델의 마지막 층만 학습하도록 설정하는 방식입니다. VGG16의 초기 층들은 저수준의 특징(엣지, 모서리 등)을 추출하는 역할을 하고, 이는 일반적으로 모든 이미지에서 공통적으로 유용합니다. 반면, 마지막 층들은 데이터셋에 특화된 고수준 특징을 학습하기 때문에, 새로운 데이터셋(개와 고양이)에서는 마지막 층을 재학습하는 것이 더 효과적일 수 있습니다.
이 방식에서는 기존 모델의 저수준 특징 추출 능력은 유지하면서, 고수준 특징을 새로운 데이터에 맞게 미세 조정(fine-tuning)할 수 있습니다.
언제 사용?:
새로운 데이터셋이 기존 데이터셋과 유사하지만, 더 구체적인 특징을 학습해야 할 때
기존의 가중치는 유지하면서, 마지막 층을 학습시키고 싶을 때
결론: 동결을 사용할지 여부
완전히 동결하는 방법은 작은 데이터셋을 사용하거나, 사전 학습된 모델이 이미 매우 우수한 성능을 가지고 있다고 가정할 때 유용합니다.
부분 미세조정을 통해 마지막 층만 재학습하는 방법은, 새로운 데이터셋에 맞게 특정 고수준 특징을 조정하는 데 유리합니다.
즉, 두 번째 방법(마지막 층만 재학습)이 개-고양이 분류 문제와 같은 경우에 더 효과적일 가능성이 큽니다. 첫 번째 동결 방법은 사전 학습된 모델이 개와 고양이 분류에 이미 매우 적합하다고 판단될 때 사용하면 좋습니다.

분류기는 빼고
특성추출부만 가져옵니다.