行为识别模型action-recognition-master解读

1.dataset.py

用于下载需要使用的数据集hmdb51:

import requests
import os
import glob

def download_file(URL, destination):
    session = requests.Session()
    response = session.get(URL, stream = True)

    save_response_content(response, destination)    


def save_response_content(response, destination):
    CHUNK_SIZE = 32768

    with open(destination, "wb") as f:
        for chunk in response.iter_content(CHUNK_SIZE):
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)


print('Downloading dataset...')
if not os.path.isfile('data/hmdb51_org.rar'):
    download_file('http://serre-lab.clps.brown.edu/wp-content/uploads/2013/10/hmdb51_org.rar', 'data/hmdb51_org.rar')

if not os.path.isdir('data/video'):
    os.makedirs('data/video')
    
os.system('unrar e data/hmdb51_org.rar data/video')

filenames = glob.glob('data/video/*.rar')
for file_name in filenames:
    os.system('unrar x %s data/video' %file_name)

2.model.py

        self.hidden_size = hidden_size
        self.num_classes = num_classes
        self.fc_size = fc_size

-------》初始化参数

选择模型:

        if arch.startswith('alexnet'):
            self.features = original_model.features---》赋值self.features
            for i, param in enumerate(self.features.parameters()):
                param.requires_grad = False---》不做梯度计算
            self.fc_pre = nn.Sequential(nn.Linear(9216, fc_size), nn.Dropout())
            self.rnn = nn.LSTM(input_size = fc_size,---》输入特征维数,即每一行输入元素的个数。
                        hidden_size = hidden_size,----》隐藏层状态的维数,即隐藏层节点的个数,这个和单层感知器的结构是类似的。
                        num_layers = lstm_layers,----》LSTM 堆叠的层数,默认值是1层,如果设置为2,第二个LSTM接收第一个LSTM的计算结果。
                        batch_first = True)
            self.fc = nn.Linear(hidden_size, num_classes)---》全连接层
            self.modelName = 'alexnet_lstm'---》模型名

 

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页