Chainer에서 C3D를 구현해 보았습니다.
5618 단어 CNNChainer딥러닝DeepLearning
이것의 Tensorflow 버전 , Keras 버전 , PyTorch 버전 그리고 오리지널의 Caffe 버전 했다.
※ 일단 움직이고 있습니다만, 원래의 것과 같은 정밀도가 나와 있는지는 확인하고 있지 않습니다.
Chainer용으로 변환한 학습 완료 모델도 여기에서 배포하고 있습니다.
Pretrained 모델을 사용해보기
희귀 D 째. MD 과 같이, 모델을 다운로드해, 필요한 것을 인스톨 하면 다음과 같이 실행할 수 있습니다.
아래는 htps //w w. 요츠베. 이 m/와 tch? v = dM06 A MFLsrc 농구 동영상을 예측합니다.
$ python predict.py -a c3d --model caffe_model/conv3d_deepnetA_sport1m_iter_1900000_chainer.model --mean caffe_model/train01_16_128_171_mean.npy --video dM06AMFLsrc.mp4 --labels caffe_model/labels.txt
Loaded 487 labels.
Loaded caffe_model/conv3d_deepnetA_sport1m_iter_1900000_chainer.model.
/home/ikeyasu/anaconda3/envs/chainer3/lib/python3.6/site-packages/chainer/utils/experimental.py:104: FutureWarning: chainer.functions.pooling.MaxPoolingND is experimental. The interface can change in the future.
FutureWarning)
Position of maximum probability: 367
Maximum probability: 10.43649
Corresponding label: basketball
Top 5 probabilities and labels:
10.43649 basketball
8.61597 volleyball
8.46861 streetball
7.04241 roller derby
6.63952 freestyle wrestling
변환
본래 Chainer라면 CaffeFunction
를 사용하여 Caffe 모델을 가져올 수 있습니다. 하지만 C3D는 Caffe 자체를 개조하여 만들어져 있기 때문에 가져올 수 없습니다.
그 때문에 가중치의 복사를 실시했습니다. 이것은 C3D Model for Keras 를 참고로 하고 있습니다.
을 보면 알 수 있지만 각 레이어의 가중치를 복사하고 있습니다.
스크래치 부터 Training
또, 원논문은, Sports-1M 를 사용하고 있습니다만, 스크래치로부터 학습을 시험하기에는 규모가 컸기 때문에, UCF-11 라고 하는 작은 데이터 세트를 사용하고 있습니다. (개인적으로는 Video classification의 CIFAR-10의 위치로 인식하고 있습니다)
이것으로 학습하면, 아래와 같이, 8할 정도의 결과가 나왔습니다. 학습 시간은 GTX 1080 탑재 수중 PC 이며 3시간 정도입니다.
실행 방법은 여기 희귀 D 째. MD
데이터 준비
시행착오 시간을 가속화하기 위해 ffmpeg에서 정지영상으로 확장하여 동영상으로 가져오기 위한 Dataset 클래스를 만들었습니다. htps : // 기주 b. 이 m / 이케 야스 / c3d 짱 r / b ぉ b / 마s r / 치고 ts / u CF11. py
또한 처음에는 CIFAR-10과 함께 32px 크기로 시도했습니다. 하지만, 이마이치 결과가 나오지 않고. 이것은, 인간의 눈으로 봐도, 해상도가 너무 낮아서 뭔가 모르기 때문에, 어쩔 수 없을까라고 생각합니다.
Data augmentation
그 외 파라미터를 논문에 맞추어 실행하면, 곧 main/accuracy 가 1이 되어, validation/accuracy 가 좋아지지 않고, 그리고 학습이 진행되면 validation/loss가 늘어나는, 과학습 상태가 되었습니다. 당초는, 거슬러 올라가서 Data augumentation 를 하지 않았기 때문에, 그것이 나빴던 것일 것이라는 것으로, 이하 3개의 Augumentation을 해 보았습니다.
$ python predict.py -a c3d --model caffe_model/conv3d_deepnetA_sport1m_iter_1900000_chainer.model --mean caffe_model/train01_16_128_171_mean.npy --video dM06AMFLsrc.mp4 --labels caffe_model/labels.txt
Loaded 487 labels.
Loaded caffe_model/conv3d_deepnetA_sport1m_iter_1900000_chainer.model.
/home/ikeyasu/anaconda3/envs/chainer3/lib/python3.6/site-packages/chainer/utils/experimental.py:104: FutureWarning: chainer.functions.pooling.MaxPoolingND is experimental. The interface can change in the future.
FutureWarning)
Position of maximum probability: 367
Maximum probability: 10.43649
Corresponding label: basketball
Top 5 probabilities and labels:
10.43649 basketball
8.61597 volleyball
8.46861 streetball
7.04241 roller derby
6.63952 freestyle wrestling
또, 원논문은, Sports-1M 를 사용하고 있습니다만, 스크래치로부터 학습을 시험하기에는 규모가 컸기 때문에, UCF-11 라고 하는 작은 데이터 세트를 사용하고 있습니다. (개인적으로는 Video classification의 CIFAR-10의 위치로 인식하고 있습니다)
이것으로 학습하면, 아래와 같이, 8할 정도의 결과가 나왔습니다. 학습 시간은 GTX 1080 탑재 수중 PC 이며 3시간 정도입니다.
실행 방법은 여기 희귀 D 째. MD
데이터 준비
시행착오 시간을 가속화하기 위해 ffmpeg에서 정지영상으로 확장하여 동영상으로 가져오기 위한 Dataset 클래스를 만들었습니다. htps : // 기주 b. 이 m / 이케 야스 / c3d 짱 r / b ぉ b / 마s r / 치고 ts / u CF11. py
또한 처음에는 CIFAR-10과 함께 32px 크기로 시도했습니다. 하지만, 이마이치 결과가 나오지 않고. 이것은, 인간의 눈으로 봐도, 해상도가 너무 낮아서 뭔가 모르기 때문에, 어쩔 수 없을까라고 생각합니다.
Data augmentation
그 외 파라미터를 논문에 맞추어 실행하면, 곧 main/accuracy 가 1이 되어, validation/accuracy 가 좋아지지 않고, 그리고 학습이 진행되면 validation/loss가 늘어나는, 과학습 상태가 되었습니다. 당초는, 거슬러 올라가서 Data augumentation 를 하지 않았기 때문에, 그것이 나빴던 것일 것이라는 것으로, 이하 3개의 Augumentation을 해 보았습니다.
그 외 파라미터를 논문에 맞추어 실행하면, 곧 main/accuracy 가 1이 되어, validation/accuracy 가 좋아지지 않고, 그리고 학습이 진행되면 validation/loss가 늘어나는, 과학습 상태가 되었습니다. 당초는, 거슬러 올라가서 Data augumentation 를 하지 않았기 때문에, 그것이 나빴던 것일 것이라는 것으로, 이하 3개의 Augumentation을 해 보았습니다.
비교를 위해 모든 Data augmentation을 Off로 한 그래프를 아래에 게재합니다.
과학 학습 그래프(Data augmentation 없음):
방금 전의 그래프와 비교해, 완전하게 과학습하고 있어, 정밀도가 오르지 않은 것을 알 수 있습니다. 무엇보다 단순히 accuracy(Classification이므로 softmax_cross_entropy)를 비교해도 Data augmentation을 하지 않을 때와 그렇게 변하지 않는 것 같습니다. 다만, Loss 쪽은, 향상하고 있어 과학습이 어느 정도 해소하고 있는 것은 봐 잡을 수 있습니다.
Reference
이 문제에 관하여(Chainer에서 C3D를 구현해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ikeyasu/items/79f88afffaaa0da19ea9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)