관리 메뉴

HAMA 블로그

ilsvrc_2012_mean.npy 관련 정보 본문

통계 & 머신러닝 & 딥러닝

ilsvrc_2012_mean.npy 관련 정보

[하마] 이승현 (wowlsh93@gmail.com) 2016. 3. 10. 14:09

시나리오 1 

질문 : 이게 머하는건지 문서를 봐도 찾지를 못하겠어. 좀 알려주라 ㅠㅠ

나는 지금 이전에 나의 이미지데이터를 학습시킨 모델을 예측을 위해  사용하려고 하고 있어. 모델을 만들때 ImageNet 코드을 템플릿으로 차용했었고''' 내가 말할수 있는건 , 예측을 하기 위한  유일한 방법은 wraper.py 를 사용하는것인데, 그건 ilsvrc_2012_mean.npy 파일을 참조한다는거지. 알다시피 이건 명백히 imagenet mean 을 포함한 numpy 파일이란건데 , 생각컨데 이미지넷 데이터셋을 위해 미리 계산시켜 놓은 파일일 꺼잖아. 근데 내 데이터를 위해 내가 가지고있는 유일한 mean 파일은 imagenet_mean.binaryproto 야. 

make_imagenet_mean.sh 를 통해서 만들어진거지.

이거 내 경우에도 정확한 (사용해도 되는 ) 데이터일까? 만약 그렇지 않다면  equivalent of ilsvrc_2012_mean.npy 과 동등한 내 데이터를 위한 것은 어떻게 만드는거야 ㅜㅜ 


시나리오 2

이미지넷을 위한 mean 파일인 ilsvrc_2012_mean.npy 를 어떻게 만드는지 알아야, 우리의 데이터도 mean 으로 만들수 있다.  

/examples/imagenet/make_imagenet_mean.sh 파일의 내부는 아래와 같은데 

$TOOLS/compute_image_mean $EXAMPLE/ilsvrc12_train_lmdb \  $DATA/imagenet_mean.binaryproto

compute_image_mean 을 통해 만드는것을 알 수 있으며 ,  source 로는 ilsvrc12_train_lmdb 를 사용하는것을 보아, 우리의 데이터를 lmdb 로 만든후에, compute_image_mean 에게 넘겨주면 알아서 mean 파일을 만들어 준다는것을 알 수 있다.


시나리오 3

이렇게 만들어진 mean.binaryproto 를 npy 로 변경을 해주어야하는데 어떻게 할까? 팁하나는 convert.py 는 더이상 존재하지않고, blobproto_to_array 함수는 caffe.io 로 이동했다는거지. 이건  caffe\python\caffe\io.py 에서 찾을 수 있다


시나리오 4


 classifier = caffe.Classifier(args.model_def, args.pretrained_model,

            image_dims=image_dims, mean=mean,

            input_scale=args.input_scale, raw_scale=args.raw_scale,

            channel_swap=channel_swap)


최종적으로 이렇게 분류를 하는데 여기에 mean 에 시나리오 3에서 만든 npy 가 들어간다.

Comments