├── Models ├── README.md └── logs.json ├── .gitignore ├── requirements.txt ├── config.py ├── Training ├── README.md └── Train.ipynb ├── Dataset └── README.md ├── api_server.py ├── infer.py ├── README.md ├── Model.py └── Infer.ipynb /Models/README.md: -------------------------------------------------------------------------------- 1 | Pretrained weights can be downloaded from [here](----) -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.pt 2 | .idea 3 | __pycache__ 4 | .ipynb_checkpoints 5 | Sample/ 6 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | torchvision==0.6.0 2 | torch==1.5.0 3 | Flask==1.1.2 4 | Pillow==8.2.0 5 | -------------------------------------------------------------------------------- /config.py: -------------------------------------------------------------------------------- 1 | # Full path to the model weights on your machine 2 | MODEL_PATH = '/home/jeetu/Project/VehicleColorA/Exp1/model_3.pt' -------------------------------------------------------------------------------- /Training/README.md: -------------------------------------------------------------------------------- 1 | Run this notebook to train your VehicleColorRecognition Model. 2 | 3 | Note : For training, set the following paths according to your own machine 4 | 5 | - Dataset Directory 6 | - Path for saving the trained model -------------------------------------------------------------------------------- /Dataset/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | Download and extract dataset in this directory. 4 | 5 | - Dataset -[Link](https://drive.google.com/file/d/1n8Ja6g5eO82mbRlsTXkdVXNMPpApLd5K/view?usp=sharing) 6 | 7 | 8 | 9 | Link to Original Project - [Link](http://cloud.eic.hust.edu.cn:8071/~pchen/project.html) 10 | 11 | Original Paper 12 | 13 | P. Chen, X. Bai and W. Liu, "Vehicle Color Recognition on Urban Road by Feature Context," in IEEE Transactions on Intelligent Transportation Systems, vol. 15, no. 5, pp. 2340-2346, Oct. 2014, doi: 10.1109/TITS.2014.2308897. -------------------------------------------------------------------------------- /api_server.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import io 3 | 4 | from flask import Flask, jsonify, request 5 | from PIL import Image 6 | 7 | from infer import infer 8 | 9 | app = Flask(__name__) 10 | 11 | @app.route('/', methods=['POST']) 12 | def image_handler(): 13 | bio = io.BytesIO() 14 | request.files['image'].save(bio) 15 | image = Image.open(bio) 16 | # img = np.frombuffer(bio.getvalue(), dtype='uint8') 17 | result = infer(image) 18 | return jsonify({'result': result}) 19 | 20 | def main(): 21 | parser = argparse.ArgumentParser() 22 | parser.add_argument('--port', default = 8769 , type = int) 23 | args = parser.parse_args() 24 | app.debug = True 25 | app.run('0.0.0.0', args.port) 26 | 27 | 28 | 29 | if __name__ == "__main__": 30 | main() 31 | -------------------------------------------------------------------------------- /infer.py: -------------------------------------------------------------------------------- 1 | 2 | import torch 3 | import torch.nn as nn 4 | from PIL import Image 5 | from torchvision.transforms import CenterCrop, Compose, Resize, ToTensor 6 | 7 | from config import MODEL_PATH 8 | from Model import VehicleColorModel 9 | 10 | # Setting Up the Labels 11 | labels = ['black', 'blue' , 'cyan' , 'gray' , 'green' , 'red' , 'white' , 'yellow'] 12 | def decode_label(index): 13 | return labels[index] 14 | 15 | def encode_label_from_path(path): 16 | for index,value in enumerate(labels): 17 | if value in path: 18 | return index 19 | 20 | model = VehicleColorModel() 21 | model.load_state_dict(torch.load(MODEL_PATH , map_location=torch.device("cpu"))) 22 | transforms = Compose([Resize(224), CenterCrop(224), ToTensor()]) 23 | 24 | def infer(image): 25 | image = transforms(image) 26 | image = image.unsqueeze(0) 27 | pred = model.forward(image).argmax(dim = 1) 28 | class_label = decode_label(pred) 29 | return class_label 30 | 31 | 32 | if __name__ == "__main__": 33 | image = Image.open('/path/to/an/image').convert('RGB') 34 | print(infer(image)) 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vehicle Color Recognition using CNN 2 | Vehicle information recognition is a key component of Intelligent Transportation Systems. Color plays an important role in vehicle identification. As a vehicle has its inner structure, the main challenge of vehicle color recognition is to select the region of interest (ROI) for recognizing its dominant color. 3 | 4 | ## Training 5 | > Note : For inference tasks only, the weights can be [downloaded](https://drive.google.com/drive/folders/1iBAn9IwWXY8Ur4JA89ZkIOP4MSjtDea0?usp=sharing) and training is not required. 6 | 7 | In case you want to train the model (preferably, with addition data), edit the `Train.ipynb` notebook in `Training` directory. 8 | 9 | ## Running 10 | Download weights from [here](https://drive.google.com/drive/folders/1iBAn9IwWXY8Ur4JA89ZkIOP4MSjtDea0?usp=sharing) 11 | Edit `config.py` file and modify `MODEL_PATH` variable to the full path of the downloaded weights. 12 | 13 | Run the server using `python3 api_server.py --port 1234`. 14 | 15 | > Note : The server assumes that the images will be sent as a multipart file using 'image' as the `key`. 16 | 17 | ## References 18 | 19 | Link to Original Project - [Link](http://cloud.eic.hust.edu.cn:8071/~pchen/project.html) 20 | 21 | References 22 | P. Chen, X. Bai and W. Liu, "Vehicle Color Recognition on Urban Road by Feature Context," in IEEE Transactions on Intelligent Transportation Systems, vol. 15, no. 5, pp. 2340-2346, Oct. 2014, doi: 10.1109/TITS.2014.2308897. 23 | 24 | "Vehicle Color Recognition using Convolutional Neural Network",
25 | Reza Fuad Rachmadi and I Ketut Eddy Purnama
26 | https://arxiv.org/abs/1510.07391 27 | -------------------------------------------------------------------------------- /Model.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | 4 | 5 | class VehicleColorModel(nn.Module): 6 | def __init__(self): 7 | super(VehicleColorModel, self).__init__() 8 | 9 | self.top_conv1 = nn.Sequential( 10 | nn.Conv2d(3,48, kernel_size=(11,11) , stride=(4,4)), 11 | nn.ReLU(), 12 | nn.BatchNorm2d(48), 13 | nn.MaxPool2d(kernel_size=3 , stride=2) 14 | ) 15 | 16 | # first top convolution layer after split 17 | self.top_top_conv2 = nn.Sequential( 18 | 19 | # 1-1 conv layer 20 | nn.Conv2d(24, 64, kernel_size=(3,3), stride=(1,1),padding=1), 21 | nn.ReLU(), 22 | nn.BatchNorm2d(64), 23 | nn.MaxPool2d(kernel_size=3, stride=2) 24 | ) 25 | 26 | self.top_bot_conv2 = nn.Sequential( 27 | 28 | # 1-1 conv layer 29 | nn.Conv2d(24, 64, kernel_size=(3,3), stride=(1,1),padding=1), 30 | nn.ReLU(), 31 | nn.BatchNorm2d(64), 32 | nn.MaxPool2d(kernel_size=3, stride=2) 33 | ) 34 | 35 | 36 | # need a concat 37 | 38 | # after concat 39 | self.top_conv3 = nn.Sequential( 40 | # 1-1 conv layer 41 | nn.Conv2d(128, 192, kernel_size=(3,3), stride=(1,1),padding=1), 42 | nn.ReLU() 43 | ) 44 | 45 | # fourth top convolution layer 46 | # split feature map by half 47 | self.top_top_conv4 = nn.Sequential( 48 | # 1-1 conv layer 49 | nn.Conv2d(96, 96, kernel_size=(3,3), stride=(1,1),padding=1), 50 | nn.ReLU() 51 | ) 52 | 53 | self.top_bot_conv4 = nn.Sequential( 54 | # 1-1 conv layer 55 | nn.Conv2d(96, 96, kernel_size=(3,3), stride=(1,1),padding=1), 56 | nn.ReLU() 57 | ) 58 | 59 | 60 | # fifth top convolution layer 61 | self.top_top_conv5 = nn.Sequential( 62 | # 1-1 conv layer 63 | nn.Conv2d(96, 64, kernel_size=(3,3), stride=(1,1),padding=1), 64 | nn.ReLU(), 65 | nn.MaxPool2d(kernel_size=3, stride=2) 66 | ) 67 | self.top_bot_conv5 = nn.Sequential( 68 | # 1-1 conv layer 69 | nn.Conv2d(96, 64, kernel_size=(3,3), stride=(1,1),padding=1), 70 | nn.ReLU(), 71 | nn.MaxPool2d(kernel_size=3, stride=2) 72 | ) 73 | 74 | # # =============================== bottom ================================ 75 | 76 | 77 | # # first bottom convolution layer 78 | self.bottom_conv1 = nn.Sequential( 79 | 80 | # 1-1 conv layer 81 | nn.Conv2d(3, 48, kernel_size=(11,11), stride=(4,4)), 82 | nn.ReLU(), 83 | nn.BatchNorm2d(48), 84 | nn.MaxPool2d(kernel_size=3, stride=2) 85 | ) 86 | 87 | 88 | # first top convolution layer after split 89 | self.bottom_top_conv2 = nn.Sequential( 90 | 91 | # 1-1 conv layer 92 | nn.Conv2d(24, 64, kernel_size=(3,3), stride=(1,1),padding=1), 93 | nn.ReLU(), 94 | nn.BatchNorm2d(64), 95 | nn.MaxPool2d(kernel_size=3, stride=2) 96 | ) 97 | 98 | self.bottom_bot_conv2 = nn.Sequential( 99 | 100 | # 1-1 conv layer 101 | nn.Conv2d(24, 64, kernel_size=(3,3), stride=(1,1),padding=1), 102 | nn.ReLU(), 103 | nn.BatchNorm2d(64), 104 | nn.MaxPool2d(kernel_size=3, stride=2) 105 | ) 106 | 107 | 108 | # need a concat 109 | 110 | # after concat 111 | self.bottom_conv3 = nn.Sequential( 112 | # 1-1 conv layer 113 | nn.Conv2d(128, 192, kernel_size=(3,3), stride=(1,1),padding=1), 114 | nn.ReLU() 115 | ) 116 | 117 | # fourth top convolution layer 118 | # split feature map by half 119 | self.bottom_top_conv4 = nn.Sequential( 120 | # 1-1 conv layer 121 | nn.Conv2d(96, 96, kernel_size=(3,3), stride=(1,1),padding=1), 122 | nn.ReLU() 123 | ) 124 | 125 | self.bottom_bot_conv4 = nn.Sequential( 126 | # 1-1 conv layer 127 | nn.Conv2d(96, 96, kernel_size=(3,3), stride=(1,1),padding=1), 128 | nn.ReLU() 129 | ) 130 | 131 | 132 | # fifth top convolution layer 133 | self.bottom_top_conv5 = nn.Sequential( 134 | # 1-1 conv layer 135 | nn.Conv2d(96, 64, kernel_size=(3,3), stride=(1,1),padding=1), 136 | nn.ReLU(), 137 | nn.MaxPool2d(kernel_size=3, stride=2) 138 | ) 139 | self.bottom_bot_conv5 = nn.Sequential( 140 | # 1-1 conv layer 141 | nn.Conv2d(96, 64, kernel_size=(3,3), stride=(1,1),padding=1), 142 | nn.ReLU(), 143 | nn.MaxPool2d(kernel_size=3, stride=2) 144 | ) 145 | 146 | # Fully-connected layer 147 | self.classifier = nn.Sequential( 148 | nn.Linear(5*5*64*4, 4096), 149 | nn.ReLU(), 150 | nn.Dropout(0.7), 151 | nn.Linear(4096, 4096), 152 | nn.ReLU(), 153 | nn.Dropout(0.6), 154 | nn.Linear(4096, 8) 155 | ) 156 | 157 | def forward(self,x): 158 | # print(x.shape) 159 | x_top = self.top_conv1(x) 160 | # print(x_top.shape) 161 | 162 | x_top_conv = torch.split(x_top, 24, 1) 163 | 164 | x_top_top_conv2 = self.top_top_conv2(x_top_conv[0]) 165 | x_top_bot_conv2 = self.top_bot_conv2(x_top_conv[1]) 166 | 167 | x_top_cat1 = torch.cat([x_top_top_conv2,x_top_bot_conv2],1) 168 | 169 | x_top_conv3 = self.top_conv3(x_top_cat1) 170 | 171 | x_top_conv3 = torch.split(x_top_conv3, 96, 1) 172 | 173 | x_top_top_conv4 = self.top_top_conv4(x_top_conv3[0]) 174 | x_top_bot_conv4 = self.top_bot_conv4(x_top_conv3[1]) 175 | 176 | x_top_top_conv5 = self.top_top_conv5(x_top_top_conv4) 177 | x_top_bot_conv5 = self.top_bot_conv5(x_top_bot_conv4) 178 | 179 | x_bottom = self.bottom_conv1(x) 180 | 181 | x_bottom_conv = torch.split(x_bottom, 24, 1) 182 | 183 | x_bottom_top_conv2 = self.bottom_top_conv2(x_bottom_conv[0]) 184 | x_bottom_bot_conv2 = self.bottom_bot_conv2(x_bottom_conv[1]) 185 | 186 | x_bottom_cat1 = torch.cat([x_bottom_top_conv2,x_bottom_bot_conv2],1) 187 | 188 | x_bottom_conv3 = self.bottom_conv3(x_bottom_cat1) 189 | 190 | x_bottom_conv3 = torch.split(x_bottom_conv3, 96, 1) 191 | 192 | x_bottom_top_conv4 = self.bottom_top_conv4(x_bottom_conv3[0]) 193 | x_bottom_bot_conv4 = self.bottom_bot_conv4(x_bottom_conv3[1]) 194 | 195 | x_bottom_top_conv5 = self.bottom_top_conv5(x_bottom_top_conv4) 196 | x_bottom_bot_conv5 = self.bottom_bot_conv5(x_bottom_bot_conv4) 197 | 198 | x_cat = torch.cat([x_top_top_conv5,x_top_bot_conv5,x_bottom_top_conv5,x_bottom_bot_conv5],1) 199 | 200 | 201 | flatten = x_cat.view(x_cat.size(0), -1) 202 | 203 | output = self.classifier(flatten) 204 | 205 | #output = F.softmax(output) 206 | 207 | 208 | return output -------------------------------------------------------------------------------- /Models/logs.json: -------------------------------------------------------------------------------- 1 | { 2 | "epoch": 79, 3 | "test_acc": [ 4 | 0.3860613810741688, 5 | 0.47340153452685424, 6 | 0.568542199488491, 7 | 0.6520460358056266, 8 | 0.7159846547314578, 9 | 0.7734015345268542, 10 | 0.7612531969309463, 11 | 0.7856777493606139, 12 | 0.7774936061381074, 13 | 0.8067774936061382, 14 | 0.7260869565217392, 15 | 0.7838874680306905, 16 | 0.8227621483375959, 17 | 0.8222506393861893, 18 | 0.8136828644501278, 19 | 0.8089514066496164, 20 | 0.8297953964194373, 21 | 0.8634271099744245, 22 | 0.8707161125319693, 23 | 0.8822250639386189, 24 | 0.8638107416879796, 25 | 0.8398976982097187, 26 | 0.8755754475703325, 27 | 0.8806905370843989, 28 | 0.8781329923273657, 29 | 0.891687979539642, 30 | 0.8703324808184143, 31 | 0.8594629156010231, 32 | 0.881074168797954, 33 | 0.8951406649616368, 34 | 0.8856777493606138, 35 | 0.8997442455242967, 36 | 0.8852941176470588, 37 | 0.8823529411764706, 38 | 0.8950127877237851, 39 | 0.8664961636828644, 40 | 0.8863171355498721, 41 | 0.8658567774936061, 42 | 0.8920716112531969, 43 | 0.889769820971867, 44 | 0.8447570332480818, 45 | 0.8838874680306905, 46 | 0.8955242966751918, 47 | 0.8859335038363171, 48 | 0.8927109974424552, 49 | 0.8622762148337596, 50 | 0.8786445012787724, 51 | 0.8870843989769821, 52 | 0.8831202046035805, 53 | 0.8914322250639386, 54 | 0.8453964194373401, 55 | 0.8762148337595907, 56 | 0.8979539641943735, 57 | 0.9002557544757033, 58 | 0.9074168797953964, 59 | 0.8732736572890025, 60 | 0.9028132992327366, 61 | 0.8855498721227621, 62 | 0.9016624040920717, 63 | 0.8997442455242967, 64 | 0.9026854219948849, 65 | 0.8984654731457801, 66 | 0.9014066496163683, 67 | 0.9020460358056266, 68 | 0.9076726342710998, 69 | 0.8842710997442456, 70 | 0.9043478260869565, 71 | 0.889002557544757, 72 | 0.8998721227621483, 73 | 0.8566496163682864, 74 | 0.8945012787723785, 75 | 0.897314578005115, 76 | 0.9069053708439898, 77 | 0.8956521739130435, 78 | 0.8927109974424552, 79 | 0.8780051150895141, 80 | 0.869693094629156, 81 | 0.8717391304347826, 82 | 0.8643222506393862, 83 | 0.8991048593350384 84 | ], 85 | "test_loss": [ 86 | 1.6941967010498047, 87 | 1.413282746777815, 88 | 1.2300743241520489, 89 | 1.0186388185795616, 90 | 0.8052589972229565, 91 | 0.6959069020607892, 92 | 0.6545220179592862, 93 | 0.5863275900483131, 94 | 0.5774378241861567, 95 | 0.5302328051013105, 96 | 0.8679919847670723, 97 | 0.6133233887307784, 98 | 0.5330383909099242, 99 | 0.5709917242912685, 100 | 0.5444423876264516, 101 | 0.5323077063350117, 102 | 0.4967346903594101, 103 | 0.4001205657773158, 104 | 0.3681556407143088, 105 | 0.3345503132132923, 106 | 0.42683300638900085, 107 | 0.4592500037568457, 108 | 0.35102029122850475, 109 | 0.34043378623969417, 110 | 0.35698582341565804, 111 | 0.3133265166817343, 112 | 0.36764419714317603, 113 | 0.4082748420974788, 114 | 0.3464647836106665, 115 | 0.3021334641996552, 116 | 0.34193275901762876, 117 | 0.2912965695209363, 118 | 0.3407611415228423, 119 | 0.34141917526721954, 120 | 0.31408849818741574, 121 | 0.4057917531360598, 122 | 0.36029354088446675, 123 | 0.41712552550084453, 124 | 0.33051284545046444, 125 | 0.334898144883268, 126 | 0.4874957107445773, 127 | 0.3422568205963163, 128 | 0.32231982074239673, 129 | 0.32411665162619424, 130 | 0.33481639316853357, 131 | 0.43111707752241807, 132 | 0.3802726919598439, 133 | 0.3482595243874718, 134 | 0.3684794045984745, 135 | 0.3503421111141934, 136 | 0.47689756904454794, 137 | 0.43856004187289405, 138 | 0.3392842488692087, 139 | 0.37621956844540205, 140 | 0.3219831580405726, 141 | 0.4732762347249424, 142 | 0.32707333236056213, 143 | 0.3794022645143902, 144 | 0.35445414867032976, 145 | 0.3346128492232631, 146 | 0.34618619588368077, 147 | 0.3812798371209818, 148 | 0.35725006658364744, 149 | 0.40792761217145357, 150 | 0.36428572500453277, 151 | 0.46748057424145584, 152 | 0.36997203978107257, 153 | 0.4077695794403553, 154 | 0.4040851356352077, 155 | 0.5517700842636473, 156 | 0.46853991028140574, 157 | 0.3906759590129642, 158 | 0.38165930340833526, 159 | 0.4145576044478837, 160 | 0.4339598141172353, 161 | 0.5431482366779271, 162 | 0.6054621858193594, 163 | 0.6075730393914616, 164 | 0.5816612491274581, 165 | 0.40753378346562386 166 | ], 167 | "train_loss": [ 168 | 1.826199992614634, 169 | 1.5579509384491865, 170 | 1.3277928057838888, 171 | 1.1492610468583948, 172 | 0.9276555724003736, 173 | 0.7631941420190475, 174 | 0.6498804372899672, 175 | 0.587474809411694, 176 | 0.544483536744819, 177 | 0.5106695272466716, 178 | 0.48976775521741195, 179 | 0.4548078871825162, 180 | 0.44559210275902467, 181 | 0.4194487832924899, 182 | 0.40714043466483846, 183 | 0.3901485848952742, 184 | 0.3770808058188242, 185 | 0.3520677920211764, 186 | 0.3344503982978709, 187 | 0.31735584534266414, 188 | 0.30753152795574246, 189 | 0.30266259281950836, 190 | 0.2929159453248276, 191 | 0.28656001695815253, 192 | 0.2640054938109482, 193 | 0.2598270363010028, 194 | 0.2505674537490396, 195 | 0.24568976878243334, 196 | 0.2431361524059492, 197 | 0.23904529104337974, 198 | 0.2260390775387778, 199 | 0.2175775353303727, 200 | 0.20651827884071014, 201 | 0.2069938584943028, 202 | 0.1934815933380057, 203 | 0.19195803868419983, 204 | 0.18418305575409355, 205 | 0.18580856086576686, 206 | 0.17852679629097967, 207 | 0.18493566804510705, 208 | 0.18375280652852619, 209 | 0.17664210388765617, 210 | 0.17616673153551185, 211 | 0.16857664396657662, 212 | 0.16199297490803635, 213 | 0.1510674771578873, 214 | 0.16028491374762618, 215 | 0.15404618339722648, 216 | 0.13661601821727612, 217 | 0.13583267967709722, 218 | 0.13400652182891087, 219 | 0.12695811935426557, 220 | 0.12378869633025982, 221 | 0.12411187857608585, 222 | 0.12153887951417881, 223 | 0.11661709390361519, 224 | 0.10970952706959318, 225 | 0.10776158225010424, 226 | 0.10281199540066369, 227 | 0.1005824633380946, 228 | 0.09917867298731033, 229 | 0.09451699684209683, 230 | 0.09425465154516346, 231 | 0.09052921834347002, 232 | 0.08508123591651812, 233 | 0.08681707933325977, 234 | 0.08809264727375087, 235 | 0.07728377096902798, 236 | 0.08336889094618313, 237 | 0.08333722477340523, 238 | 0.08863679344272789, 239 | 0.09242369724875864, 240 | 0.07940908880246912, 241 | 0.07954263366649256, 242 | 0.07616484332281877, 243 | 0.07269402531742611, 244 | 0.07131834188476205, 245 | 0.07526747205787722, 246 | 0.07800157392835792, 247 | 0.07384552036905113 248 | ] 249 | } -------------------------------------------------------------------------------- /Training/Train.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "\n", 12 | "import torch\n", 13 | "import torch.nn as nn\n", 14 | "import os\n", 15 | "import numpy as np\n", 16 | "import pandas as pd\n", 17 | "from torch.utils.data import Dataset, DataLoader\n", 18 | "from PIL import Image\n", 19 | "from torchvision.transforms import ToTensor, Compose, Resize, CenterCrop\n", 20 | "import glob" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": 2, 26 | "outputs": [], 27 | "source": [ 28 | "labels = ['black', 'blue' , 'cyan' , 'gray' , 'green' , 'red' , 'white' , 'yellow']\n", 29 | "def decode_label(index):\n", 30 | " return labels[index]\n", 31 | "\n", 32 | "def encode_label_from_path(path):\n", 33 | " for index,value in enumerate(labels):\n", 34 | " if value in path:\n", 35 | " return index" 36 | ], 37 | "metadata": { 38 | "collapsed": false, 39 | "pycharm": { 40 | "name": "#%%\n" 41 | } 42 | } 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 3, 47 | "outputs": [], 48 | "source": [ 49 | "from sklearn.model_selection import train_test_split\n", 50 | "\n", 51 | "path = '/home/jeetu/Project/VehicleColor/Dataset/'\n", 52 | "image_list = glob.glob(path + '**/*')\n", 53 | "class_list = [encode_label_from_path(item) for item in image_list]\n", 54 | "x_train, x_test , y_train , y_test = train_test_split(image_list, class_list, train_size= 0.5 , stratify=class_list , shuffle=True, random_state=42)" 55 | ], 56 | "metadata": { 57 | "collapsed": false, 58 | "pycharm": { 59 | "name": "#%%\n" 60 | } 61 | } 62 | }, 63 | { 64 | "cell_type": "code", 65 | "execution_count": 11, 66 | "outputs": [], 67 | "source": [ 68 | "class VehicleColorDataset(Dataset):\n", 69 | " def __init__(self, image_list, class_list, transforms = None):\n", 70 | " self.transform = transforms\n", 71 | " self.image_list = image_list\n", 72 | " self.class_list = class_list\n", 73 | " self.data_len = len(self.image_list)\n", 74 | "\n", 75 | " def __len__(self):\n", 76 | " return self.data_len\n", 77 | "\n", 78 | " def __getitem__(self, index):\n", 79 | " image_path = self.image_list[index]\n", 80 | " image = Image.open(image_path).convert('RGB')\n", 81 | " if self.transform:\n", 82 | " image = self.transform(image)\n", 83 | " return image, self.class_list[index]\n", 84 | "\n", 85 | "transforms=Compose([Resize(224), CenterCrop(224) , ToTensor()])\n", 86 | "train_dataset = VehicleColorDataset( x_train , y_train , transforms)\n", 87 | "train_data_loader = DataLoader(train_dataset,batch_size=115 )\n", 88 | "test_dataset = VehicleColorDataset(x_test, y_test,transforms)\n", 89 | "test_data_loader = DataLoader(test_dataset, batch_size=115)\n" 90 | ], 91 | "metadata": { 92 | "collapsed": false, 93 | "pycharm": { 94 | "name": "#%%\n" 95 | } 96 | } 97 | }, 98 | { 99 | "cell_type": "code", 100 | "execution_count": 5, 101 | "outputs": [ 102 | { 103 | "name": "stdout", 104 | "output_type": "stream", 105 | "text": [ 106 | "Using cuda device\n" 107 | ] 108 | } 109 | ], 110 | "source": [ 111 | "device = 'cuda' if torch.cuda.is_available() else 'cpu'\n", 112 | "print('Using {} device'.format(device))" 113 | ], 114 | "metadata": { 115 | "collapsed": false, 116 | "pycharm": { 117 | "name": "#%%\n" 118 | } 119 | } 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": 6, 124 | "outputs": [], 125 | "source": [ 126 | "#Define Model\n", 127 | "class VehicleColorModel(nn.Module):\n", 128 | " def __init__(self):\n", 129 | " super(VehicleColorModel, self).__init__()\n", 130 | "\n", 131 | " self.top_conv1 = nn.Sequential(\n", 132 | " nn.Conv2d(3,48, kernel_size=(11,11) , stride=(4,4)),\n", 133 | " nn.ReLU(),\n", 134 | " nn.BatchNorm2d(48),\n", 135 | " nn.MaxPool2d(kernel_size=3 , stride=2)\n", 136 | " )\n", 137 | "\n", 138 | " # first top convolution layer after split\n", 139 | " self.top_top_conv2 = nn.Sequential(\n", 140 | "\n", 141 | " # 1-1 conv layer\n", 142 | " nn.Conv2d(24, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 143 | " nn.ReLU(),\n", 144 | " nn.BatchNorm2d(64),\n", 145 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 146 | " )\n", 147 | "\n", 148 | " self.top_bot_conv2 = nn.Sequential(\n", 149 | "\n", 150 | " # 1-1 conv layer\n", 151 | " nn.Conv2d(24, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 152 | " nn.ReLU(),\n", 153 | " nn.BatchNorm2d(64),\n", 154 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 155 | " )\n", 156 | "\n", 157 | "\n", 158 | " # need a concat\n", 159 | "\n", 160 | " # after concat\n", 161 | " self.top_conv3 = nn.Sequential(\n", 162 | " # 1-1 conv layer\n", 163 | " nn.Conv2d(128, 192, kernel_size=(3,3), stride=(1,1),padding=1),\n", 164 | " nn.ReLU()\n", 165 | " )\n", 166 | "\n", 167 | " # fourth top convolution layer\n", 168 | " # split feature map by half\n", 169 | " self.top_top_conv4 = nn.Sequential(\n", 170 | " # 1-1 conv layer\n", 171 | " nn.Conv2d(96, 96, kernel_size=(3,3), stride=(1,1),padding=1),\n", 172 | " nn.ReLU()\n", 173 | " )\n", 174 | "\n", 175 | " self.top_bot_conv4 = nn.Sequential(\n", 176 | " # 1-1 conv layer\n", 177 | " nn.Conv2d(96, 96, kernel_size=(3,3), stride=(1,1),padding=1),\n", 178 | " nn.ReLU()\n", 179 | " )\n", 180 | "\n", 181 | "\n", 182 | " # fifth top convolution layer\n", 183 | " self.top_top_conv5 = nn.Sequential(\n", 184 | " # 1-1 conv layer\n", 185 | " nn.Conv2d(96, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 186 | " nn.ReLU(),\n", 187 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 188 | " )\n", 189 | " self.top_bot_conv5 = nn.Sequential(\n", 190 | " # 1-1 conv layer\n", 191 | " nn.Conv2d(96, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 192 | " nn.ReLU(),\n", 193 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 194 | " )\n", 195 | "\n", 196 | "# # =============================== bottom ================================\n", 197 | "\n", 198 | "\n", 199 | "# # first bottom convolution layer\n", 200 | " self.bottom_conv1 = nn.Sequential(\n", 201 | "\n", 202 | " # 1-1 conv layer\n", 203 | " nn.Conv2d(3, 48, kernel_size=(11,11), stride=(4,4)),\n", 204 | " nn.ReLU(),\n", 205 | " nn.BatchNorm2d(48),\n", 206 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 207 | " )\n", 208 | "\n", 209 | "\n", 210 | " # first top convolution layer after split\n", 211 | " self.bottom_top_conv2 = nn.Sequential(\n", 212 | "\n", 213 | " # 1-1 conv layer\n", 214 | " nn.Conv2d(24, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 215 | " nn.ReLU(),\n", 216 | " nn.BatchNorm2d(64),\n", 217 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 218 | " )\n", 219 | "\n", 220 | " self.bottom_bot_conv2 = nn.Sequential(\n", 221 | "\n", 222 | " # 1-1 conv layer\n", 223 | " nn.Conv2d(24, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 224 | " nn.ReLU(),\n", 225 | " nn.BatchNorm2d(64),\n", 226 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 227 | " )\n", 228 | "\n", 229 | "\n", 230 | " # need a concat\n", 231 | "\n", 232 | " # after concat\n", 233 | " self.bottom_conv3 = nn.Sequential(\n", 234 | " # 1-1 conv layer\n", 235 | " nn.Conv2d(128, 192, kernel_size=(3,3), stride=(1,1),padding=1),\n", 236 | " nn.ReLU()\n", 237 | " )\n", 238 | "\n", 239 | " # fourth top convolution layer\n", 240 | " # split feature map by half\n", 241 | " self.bottom_top_conv4 = nn.Sequential(\n", 242 | " # 1-1 conv layer\n", 243 | " nn.Conv2d(96, 96, kernel_size=(3,3), stride=(1,1),padding=1),\n", 244 | " nn.ReLU()\n", 245 | " )\n", 246 | "\n", 247 | " self.bottom_bot_conv4 = nn.Sequential(\n", 248 | " # 1-1 conv layer\n", 249 | " nn.Conv2d(96, 96, kernel_size=(3,3), stride=(1,1),padding=1),\n", 250 | " nn.ReLU()\n", 251 | " )\n", 252 | "\n", 253 | "\n", 254 | " # fifth top convolution layer\n", 255 | " self.bottom_top_conv5 = nn.Sequential(\n", 256 | " # 1-1 conv layer\n", 257 | " nn.Conv2d(96, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 258 | " nn.ReLU(),\n", 259 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 260 | " )\n", 261 | " self.bottom_bot_conv5 = nn.Sequential(\n", 262 | " # 1-1 conv layer\n", 263 | " nn.Conv2d(96, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 264 | " nn.ReLU(),\n", 265 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 266 | " )\n", 267 | "\n", 268 | " # Fully-connected layer\n", 269 | " self.classifier = nn.Sequential(\n", 270 | " nn.Linear(5*5*64*4, 4096),\n", 271 | " nn.ReLU(),\n", 272 | " nn.Dropout(0.7),\n", 273 | " nn.Linear(4096, 4096),\n", 274 | " nn.ReLU(),\n", 275 | " nn.Dropout(0.6),\n", 276 | " nn.Linear(4096, 8)\n", 277 | " )\n", 278 | "\n", 279 | " def forward(self,x):\n", 280 | " # print(x.shape)\n", 281 | " x_top = self.top_conv1(x)\n", 282 | " # print(x_top.shape)\n", 283 | "\n", 284 | " x_top_conv = torch.split(x_top, 24, 1)\n", 285 | "\n", 286 | " x_top_top_conv2 = self.top_top_conv2(x_top_conv[0])\n", 287 | " x_top_bot_conv2 = self.top_bot_conv2(x_top_conv[1])\n", 288 | "\n", 289 | " x_top_cat1 = torch.cat([x_top_top_conv2,x_top_bot_conv2],1)\n", 290 | "\n", 291 | " x_top_conv3 = self.top_conv3(x_top_cat1)\n", 292 | "\n", 293 | " x_top_conv3 = torch.split(x_top_conv3, 96, 1)\n", 294 | "\n", 295 | " x_top_top_conv4 = self.top_top_conv4(x_top_conv3[0])\n", 296 | " x_top_bot_conv4 = self.top_bot_conv4(x_top_conv3[1])\n", 297 | "\n", 298 | " x_top_top_conv5 = self.top_top_conv5(x_top_top_conv4)\n", 299 | " x_top_bot_conv5 = self.top_bot_conv5(x_top_bot_conv4)\n", 300 | "\n", 301 | " x_bottom = self.bottom_conv1(x)\n", 302 | "\n", 303 | " x_bottom_conv = torch.split(x_bottom, 24, 1)\n", 304 | "\n", 305 | " x_bottom_top_conv2 = self.bottom_top_conv2(x_bottom_conv[0])\n", 306 | " x_bottom_bot_conv2 = self.bottom_bot_conv2(x_bottom_conv[1])\n", 307 | "\n", 308 | " x_bottom_cat1 = torch.cat([x_bottom_top_conv2,x_bottom_bot_conv2],1)\n", 309 | "\n", 310 | " x_bottom_conv3 = self.bottom_conv3(x_bottom_cat1)\n", 311 | "\n", 312 | " x_bottom_conv3 = torch.split(x_bottom_conv3, 96, 1)\n", 313 | "\n", 314 | " x_bottom_top_conv4 = self.bottom_top_conv4(x_bottom_conv3[0])\n", 315 | " x_bottom_bot_conv4 = self.bottom_bot_conv4(x_bottom_conv3[1])\n", 316 | "\n", 317 | " x_bottom_top_conv5 = self.bottom_top_conv5(x_bottom_top_conv4)\n", 318 | " x_bottom_bot_conv5 = self.bottom_bot_conv5(x_bottom_bot_conv4)\n", 319 | "\n", 320 | " x_cat = torch.cat([x_top_top_conv5,x_top_bot_conv5,x_bottom_top_conv5,x_bottom_bot_conv5],1)\n", 321 | "\n", 322 | "\n", 323 | " flatten = x_cat.view(x_cat.size(0), -1)\n", 324 | "\n", 325 | " output = self.classifier(flatten)\n", 326 | "\n", 327 | " #output = F.softmax(output)\n", 328 | "\n", 329 | "\n", 330 | " return output\n", 331 | "\n" 332 | ], 333 | "metadata": { 334 | "collapsed": false, 335 | "pycharm": { 336 | "name": "#%%\n" 337 | } 338 | } 339 | }, 340 | { 341 | "cell_type": "code", 342 | "execution_count": 43, 343 | "outputs": [], 344 | "source": [ 345 | "# Save Model\n", 346 | "Model_Path = '/home/jeetu/Project/VehicleColorA'\n", 347 | "logger = Logger(Model_Path, \"Exp1\", 1)" 348 | ], 349 | "metadata": { 350 | "collapsed": false, 351 | "pycharm": { 352 | "name": "#%%\n" 353 | } 354 | } 355 | }, 356 | { 357 | "cell_type": "code", 358 | "source": [ 359 | "model = VehicleColorModel()\n", 360 | "model.cuda()\n", 361 | "opt = torch.optim.SGD(model.parameters(), momentum=0.9, lr = 0.001 )\n", 362 | "lr_scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(opt, patience=20,min_lr=1e-08,factor=0.1,verbose=True)\n", 363 | "loss_fn = nn.CrossEntropyLoss()" 364 | ], 365 | "metadata": { 366 | "collapsed": false, 367 | "pycharm": { 368 | "name": "#%%\n" 369 | } 370 | }, 371 | "execution_count": 7, 372 | "outputs": [] 373 | }, 374 | { 375 | "cell_type": "code", 376 | "execution_count": 44, 377 | "outputs": [ 378 | { 379 | "name": "stderr", 380 | "output_type": "stream", 381 | "text": [ 382 | "Train | Epoch 0: 100%|██████████| 68/68 [01:11<00:00, 1.05batch/s, loss=0.384]\n", 383 | "Test | Epoch 0: 100%|██████████| 68/68 [00:59<00:00, 1.17batch/s, accuracy=84.7, loss=0.413]\n", 384 | "Train | Epoch 1: 100%|██████████| 68/68 [01:11<00:00, 1.05batch/s, loss=0.368]\n", 385 | "Test | Epoch 1: 100%|██████████| 68/68 [00:59<00:00, 1.22batch/s, accuracy=85.6, loss=0.396]\n", 386 | "Train | Epoch 2: 100%|██████████| 68/68 [01:11<00:00, 1.01s/batch, loss=0.355]\n", 387 | "Test | Epoch 2: 100%|██████████| 68/68 [00:59<00:00, 1.20batch/s, accuracy=85.2, loss=0.398]\n", 388 | "Train | Epoch 3: 44%|████▍ | 30/68 [00:33<00:42, 1.12s/batch, loss=0.358]\n" 389 | ] 390 | }, 391 | { 392 | "name": "stdout", 393 | "output_type": "stream", 394 | "text": [ 395 | "Saving Model...\n", 396 | "Saving Model...\n", 397 | "Saving Model...\n" 398 | ] 399 | }, 400 | { 401 | "ename": "KeyboardInterrupt", 402 | "evalue": "", 403 | "output_type": "error", 404 | "traceback": [ 405 | "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", 406 | "\u001B[0;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)", 407 | "\u001B[0;32m\u001B[0m in \u001B[0;36m\u001B[0;34m\u001B[0m\n\u001B[1;32m 6\u001B[0m \u001B[0mrunning_loss\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;36m0\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 7\u001B[0m \u001B[0mbatch_\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;36m0\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m----> 8\u001B[0;31m \u001B[0;32mfor\u001B[0m \u001B[0mX\u001B[0m\u001B[0;34m,\u001B[0m\u001B[0my\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mtepoch\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 9\u001B[0m \u001B[0mtepoch\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mset_description\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34mf\"Train | Epoch {epoch}\"\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 10\u001B[0m \u001B[0mX\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mX\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mto\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m'cuda'\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", 408 | "\u001B[0;32m~/.local/lib/python3.6/site-packages/tqdm/_tqdm.py\u001B[0m in \u001B[0;36m__iter__\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 1020\u001B[0m \"\"\"), fp_write=getattr(self.fp, 'write', sys.stderr.write))\n\u001B[1;32m 1021\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m-> 1022\u001B[0;31m \u001B[0;32mfor\u001B[0m \u001B[0mobj\u001B[0m \u001B[0;32min\u001B[0m \u001B[0miterable\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 1023\u001B[0m \u001B[0;32myield\u001B[0m \u001B[0mobj\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 1024\u001B[0m \u001B[0;31m# Update and possibly print the progressbar.\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", 409 | "\u001B[0;32m~/.local/lib/python3.6/site-packages/torch/utils/data/dataloader.py\u001B[0m in \u001B[0;36m__next__\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 343\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 344\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0m__next__\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 345\u001B[0;31m \u001B[0mdata\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_next_data\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 346\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_num_yielded\u001B[0m \u001B[0;34m+=\u001B[0m \u001B[0;36m1\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 347\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_dataset_kind\u001B[0m \u001B[0;34m==\u001B[0m \u001B[0m_DatasetKind\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mIterable\u001B[0m \u001B[0;32mand\u001B[0m\u001B[0;31m \u001B[0m\u001B[0;31m\\\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", 410 | "\u001B[0;32m~/.local/lib/python3.6/site-packages/torch/utils/data/dataloader.py\u001B[0m in \u001B[0;36m_next_data\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 383\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0m_next_data\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 384\u001B[0m \u001B[0mindex\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_next_index\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;31m# may raise StopIteration\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 385\u001B[0;31m \u001B[0mdata\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_dataset_fetcher\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mfetch\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mindex\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;31m# may raise StopIteration\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 386\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0m_pin_memory\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 387\u001B[0m \u001B[0mdata\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0m_utils\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mpin_memory\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mpin_memory\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mdata\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", 411 | "\u001B[0;32m~/.local/lib/python3.6/site-packages/torch/utils/data/_utils/fetch.py\u001B[0m in \u001B[0;36mfetch\u001B[0;34m(self, possibly_batched_index)\u001B[0m\n\u001B[1;32m 42\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mfetch\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mpossibly_batched_index\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 43\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mauto_collation\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 44\u001B[0;31m \u001B[0mdata\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m[\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdataset\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0midx\u001B[0m\u001B[0;34m]\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0midx\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mpossibly_batched_index\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 45\u001B[0m \u001B[0;32melse\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 46\u001B[0m \u001B[0mdata\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdataset\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mpossibly_batched_index\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", 412 | "\u001B[0;32m~/.local/lib/python3.6/site-packages/torch/utils/data/_utils/fetch.py\u001B[0m in \u001B[0;36m\u001B[0;34m(.0)\u001B[0m\n\u001B[1;32m 42\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0mfetch\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mpossibly_batched_index\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 43\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mauto_collation\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 44\u001B[0;31m \u001B[0mdata\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m[\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdataset\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0midx\u001B[0m\u001B[0;34m]\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0midx\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mpossibly_batched_index\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 45\u001B[0m \u001B[0;32melse\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 46\u001B[0m \u001B[0mdata\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdataset\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mpossibly_batched_index\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", 413 | "\u001B[0;32m\u001B[0m in \u001B[0;36m__getitem__\u001B[0;34m(self, index)\u001B[0m\n\u001B[1;32m 12\u001B[0m \u001B[0;32mdef\u001B[0m \u001B[0m__getitem__\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mindex\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 13\u001B[0m \u001B[0mimage_path\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mimage_list\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mindex\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m---> 14\u001B[0;31m \u001B[0mimage\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mImage\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mopen\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mimage_path\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mconvert\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m'RGB'\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 15\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mtransform\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 16\u001B[0m \u001B[0mimage\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mtransform\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mimage\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", 414 | "\u001B[0;32m~/.local/lib/python3.6/site-packages/PIL/Image.py\u001B[0m in \u001B[0;36mconvert\u001B[0;34m(self, mode, matrix, dither, palette, colors)\u001B[0m\n\u001B[1;32m 932\u001B[0m \"\"\"\n\u001B[1;32m 933\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 934\u001B[0;31m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mload\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 935\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 936\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0;32mnot\u001B[0m \u001B[0mmode\u001B[0m \u001B[0;32mand\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mmode\u001B[0m \u001B[0;34m==\u001B[0m \u001B[0;34m\"P\"\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", 415 | "\u001B[0;32m~/.local/lib/python3.6/site-packages/PIL/ImageFile.py\u001B[0m in \u001B[0;36mload\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 251\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 252\u001B[0m \u001B[0mb\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mb\u001B[0m \u001B[0;34m+\u001B[0m \u001B[0ms\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 253\u001B[0;31m \u001B[0mn\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0merr_code\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mdecoder\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mdecode\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mb\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 254\u001B[0m \u001B[0;32mif\u001B[0m \u001B[0mn\u001B[0m \u001B[0;34m<\u001B[0m \u001B[0;36m0\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 255\u001B[0m \u001B[0;32mbreak\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", 416 | "\u001B[0;31mKeyboardInterrupt\u001B[0m: " 417 | ] 418 | } 419 | ], 420 | "source": [ 421 | "epochs = 5\n", 422 | "from tqdm import tqdm\n", 423 | "from sklearn.metrics import accuracy_score\n", 424 | "for epoch in range(epochs):\n", 425 | " with tqdm(train_data_loader, unit=\"batch\") as tepoch:\n", 426 | " model.train()\n", 427 | " running_loss = 0\n", 428 | " batch_ = 0\n", 429 | " for X,y in tepoch:\n", 430 | " tepoch.set_description(f\"Train | Epoch {epoch}\")\n", 431 | " X = X.to('cuda')\n", 432 | " y = y.to('cuda')\n", 433 | " pred = model.forward(X)\n", 434 | " loss_value = loss_fn(pred, y)\n", 435 | " loss_value.backward()\n", 436 | " opt.step()\n", 437 | " opt.zero_grad()\n", 438 | " batch_ +=1\n", 439 | " running_loss += loss_value.item()\n", 440 | " tepoch.set_postfix(loss = running_loss/batch_)\n", 441 | " logger.log('train_loss', running_loss/batch_)\n", 442 | " with torch.no_grad():\n", 443 | " model.eval()\n", 444 | " with tqdm(test_data_loader, unit=\"batch\") as tepoch:\n", 445 | " tepoch.set_description(f\"Test | Epoch {epoch}\")\n", 446 | " correct = 0\n", 447 | " n_batch = 0\n", 448 | " running_loss = 0\n", 449 | " for X,y in tepoch:\n", 450 | " X, y = X.to('cuda') , y.to('cuda')\n", 451 | " pred = model.forward(X)\n", 452 | " pred_class = pred.argmax(dim = 1)\n", 453 | " loss_value = loss_fn(pred,y)\n", 454 | " running_loss += loss_value.item()\n", 455 | " curr_correct = (pred_class == y).float().sum().item()\n", 456 | " correct += curr_correct\n", 457 | " n_batch +=1\n", 458 | " tepoch.set_postfix(loss = running_loss/n_batch , accuracy = correct / (n_batch*115) *100)\n", 459 | " logger.log('test_loss', running_loss/n_batch)\n", 460 | " logger.log('test_acc', correct/(n_batch*115))\n", 461 | " logger.checkpoint(model)" 462 | ], 463 | "metadata": { 464 | "collapsed": false, 465 | "pycharm": { 466 | "name": "#%%\n" 467 | } 468 | } 469 | }, 470 | { 471 | "cell_type": "code", 472 | "execution_count": 42, 473 | "outputs": [], 474 | "source": [ 475 | "from collections import defaultdict\n", 476 | "import json\n", 477 | "class Logger(object):\n", 478 | " def __init__(self, log_dir, name, chkpt_interval):\n", 479 | " super(Logger,self).__init__()\n", 480 | " self.chkpt_interval = chkpt_interval\n", 481 | " self.log_dir = log_dir\n", 482 | " self.name = name\n", 483 | " os.makedirs(os.path.join(log_dir, name), exist_ok= True)\n", 484 | " self.log_path = os.path.join(log_dir, name, 'logs.json')\n", 485 | " self.model_path = os.path.join(log_dir, name, 'model.pt')\n", 486 | " self.logs = defaultdict(list)\n", 487 | " self.logs['epoch'] = 0\n", 488 | "\n", 489 | " def log(self, key, value ):\n", 490 | " if isinstance(value, dict):\n", 491 | " for k,v in value.items():\n", 492 | " self.log(f'{key}.{k}',v)\n", 493 | " else:\n", 494 | " self.logs[key].append(value)\n", 495 | "\n", 496 | " def checkpoint(self, model):\n", 497 | " if (self.logs['epoch'] + 1 ) % self.chkpt_interval == 0:\n", 498 | " self.save(model)\n", 499 | " self.logs['epoch'] +=1\n", 500 | "\n", 501 | " def save(self, model):\n", 502 | " print(\"Saving Model...\")\n", 503 | " with open(self.log_path, 'w') as f:\n", 504 | " json.dump(self.logs, f, sort_keys=True, indent=4)\n", 505 | " epch = self.logs['epoch'] + 1\n", 506 | " torch.save(model.state_dict(), os.path.join(self.log_dir, self.name, f'model_{epch}.pt'))\n", 507 | "\n" 508 | ], 509 | "metadata": { 510 | "collapsed": false, 511 | "pycharm": { 512 | "name": "#%%\n" 513 | } 514 | } 515 | } 516 | ], 517 | "metadata": { 518 | "kernelspec": { 519 | "name": "pycharm-72b5a700", 520 | "language": "python", 521 | "display_name": "PyCharm (pythonProject)" 522 | }, 523 | "language_info": { 524 | "codemirror_mode": { 525 | "name": "ipython", 526 | "version": 2 527 | }, 528 | "file_extension": ".py", 529 | "mimetype": "text/x-python", 530 | "name": "python", 531 | "nbconvert_exporter": "python", 532 | "pygments_lexer": "ipython2", 533 | "version": "2.7.6" 534 | } 535 | }, 536 | "nbformat": 4, 537 | "nbformat_minor": 0 538 | } -------------------------------------------------------------------------------- /Infer.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 37, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import numpy as np\n", 12 | "import torch\n", 13 | "from PIL import Image\n", 14 | "from torchvision.transforms import ToTensor, Resize, CenterCrop, Compose\n", 15 | "import torch.nn as nn\n", 16 | "import matplotlib.pyplot as plt\n", 17 | "import numpy as np" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 2, 23 | "metadata": { 24 | "pycharm": { 25 | "name": "#%%\n" 26 | } 27 | }, 28 | "outputs": [], 29 | "source": [ 30 | "labels = ['black', 'blue' , 'cyan' , 'gray' , 'green' , 'red' , 'white' , 'yellow']\n", 31 | "def decode_label(index):\n", 32 | " return labels[index]\n", 33 | "\n", 34 | "def encode_label_from_path(path):\n", 35 | " for index,value in enumerate(labels):\n", 36 | " if value in path:\n", 37 | " return index" 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 35, 43 | "metadata": { 44 | "pycharm": { 45 | "name": "#%%\n" 46 | } 47 | }, 48 | "outputs": [ 49 | { 50 | "ename": "ValueError", 51 | "evalue": "px.imshow only accepts 2D single-channel, RGB or RGBA images. An image of shape (3, 224, 224) was provided.Alternatively, 3- or 4-D single or multichannel datasets can bevisualized using the `facet_col` or/and `animation_frame` arguments.", 52 | "output_type": "error", 53 | "traceback": [ 54 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 55 | "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", 56 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;31m# from skimage import io\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;31m# img = io.imread('https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Crab_Nebula.jpg/240px-Crab_Nebula.jpg')\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mimshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqueeze_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0mfig\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 57 | "\u001b[0;32m~/.local/lib/python3.6/site-packages/plotly/express/_imshow.py\u001b[0m in \u001b[0;36mimshow\u001b[0;34m(img, zmin, zmax, origin, labels, x, y, animation_frame, facet_col, facet_col_wrap, facet_col_spacing, facet_row_spacing, color_continuous_scale, color_continuous_midpoint, range_color, title, template, width, height, aspect, contrast_rescaling, binary_string, binary_backend, binary_compression_level, binary_format)\u001b[0m\n\u001b[1;32m 514\u001b[0m \u001b[0;34m\"Alternatively, 3- or 4-D single or multichannel datasets can be\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 515\u001b[0m \u001b[0;34m\"visualized using the `facet_col` or/and `animation_frame` arguments.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 516\u001b[0;31m \u001b[0;34m%\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 517\u001b[0m )\n\u001b[1;32m 518\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", 58 | "\u001b[0;31mValueError\u001b[0m: px.imshow only accepts 2D single-channel, RGB or RGBA images. An image of shape (3, 224, 224) was provided.Alternatively, 3- or 4-D single or multichannel datasets can bevisualized using the `facet_col` or/and `animation_frame` arguments." 59 | ] 60 | } 61 | ], 62 | "source": [ 63 | "# import plotly.express as px\n", 64 | "# from skimage import io\n", 65 | "# img = io.imread('https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Crab_Nebula.jpg/240px-Crab_Nebula.jpg')\n", 66 | "# fig = px.imshow(image.squeeze_())\n", 67 | "# fig.show()" 68 | ] 69 | }, 70 | { 71 | "cell_type": "code", 72 | "execution_count": 54, 73 | "metadata": { 74 | "pycharm": { 75 | "name": "#%%\n" 76 | } 77 | }, 78 | "outputs": [ 79 | { 80 | "name": "stdout", 81 | "output_type": "stream", 82 | "text": [ 83 | "(3, 224, 224)\n", 84 | "torch.Size([3, 224, 224])\n", 85 | "blue\n" 86 | ] 87 | }, 88 | { 89 | "data": { 90 | "image/png": "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\n", 91 | "text/plain": [ 92 | "
" 93 | ] 94 | }, 95 | "metadata": { 96 | "needs_background": "light" 97 | }, 98 | "output_type": "display_data" 99 | } 100 | ], 101 | "source": [ 102 | "# imgae_path = '/home/jeetu/Desktop/red.jpg'\n", 103 | "# imgae_path = '/home/jeetu/Desktop/blue.png'\n", 104 | "imgae_path = '/home/jeetu/Desktop/b2.png'\n", 105 | "# imgae_path = '/home/jeetu/Desktop/AA.jpg'\n", 106 | "model_path = '/home/jeetu/Project/VehicleColorA/Exp1/model_3.pt'\n", 107 | "image = Image.open(imgae_path).convert('RGB')\n", 108 | "\n", 109 | "transforms = Compose([Resize(224), CenterCrop(224) , ToTensor()])\n", 110 | "image = transforms(image)\n", 111 | "model = VehicleColorModel()\n", 112 | "model.load_state_dict(torch.load(model_path))\n", 113 | "# t_img = image.numpy()\n", 114 | "print(t_img.shape)\n", 115 | "plt.imshow(image.permute(1,2,0))\n", 116 | "print(image.shape)\n", 117 | "image = image.unsqueeze(0)\n", 118 | "pred = model.forward(image).argmax(dim = 1)\n", 119 | "class_label = decode_label(pred)\n", 120 | "print(class_label)" 121 | ] 122 | }, 123 | { 124 | "cell_type": "code", 125 | "execution_count": 7, 126 | "metadata": { 127 | "pycharm": { 128 | "name": "#%%\n" 129 | } 130 | }, 131 | "outputs": [], 132 | "source": [ 133 | "class VehicleColorModel(nn.Module):\n", 134 | " def __init__(self):\n", 135 | " super(VehicleColorModel, self).__init__()\n", 136 | "\n", 137 | " self.top_conv1 = nn.Sequential(\n", 138 | " nn.Conv2d(3,48, kernel_size=(11,11) , stride=(4,4)),\n", 139 | " nn.ReLU(),\n", 140 | " nn.BatchNorm2d(48),\n", 141 | " nn.MaxPool2d(kernel_size=3 , stride=2)\n", 142 | " )\n", 143 | "\n", 144 | " # first top convolution layer after split\n", 145 | " self.top_top_conv2 = nn.Sequential(\n", 146 | "\n", 147 | " # 1-1 conv layer\n", 148 | " nn.Conv2d(24, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 149 | " nn.ReLU(),\n", 150 | " nn.BatchNorm2d(64),\n", 151 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 152 | " )\n", 153 | "\n", 154 | " self.top_bot_conv2 = nn.Sequential(\n", 155 | "\n", 156 | " # 1-1 conv layer\n", 157 | " nn.Conv2d(24, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 158 | " nn.ReLU(),\n", 159 | " nn.BatchNorm2d(64),\n", 160 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 161 | " )\n", 162 | "\n", 163 | "\n", 164 | " # need a concat\n", 165 | "\n", 166 | " # after concat\n", 167 | " self.top_conv3 = nn.Sequential(\n", 168 | " # 1-1 conv layer\n", 169 | " nn.Conv2d(128, 192, kernel_size=(3,3), stride=(1,1),padding=1),\n", 170 | " nn.ReLU()\n", 171 | " )\n", 172 | "\n", 173 | " # fourth top convolution layer\n", 174 | " # split feature map by half\n", 175 | " self.top_top_conv4 = nn.Sequential(\n", 176 | " # 1-1 conv layer\n", 177 | " nn.Conv2d(96, 96, kernel_size=(3,3), stride=(1,1),padding=1),\n", 178 | " nn.ReLU()\n", 179 | " )\n", 180 | "\n", 181 | " self.top_bot_conv4 = nn.Sequential(\n", 182 | " # 1-1 conv layer\n", 183 | " nn.Conv2d(96, 96, kernel_size=(3,3), stride=(1,1),padding=1),\n", 184 | " nn.ReLU()\n", 185 | " )\n", 186 | "\n", 187 | "\n", 188 | " # fifth top convolution layer\n", 189 | " self.top_top_conv5 = nn.Sequential(\n", 190 | " # 1-1 conv layer\n", 191 | " nn.Conv2d(96, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 192 | " nn.ReLU(),\n", 193 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 194 | " )\n", 195 | " self.top_bot_conv5 = nn.Sequential(\n", 196 | " # 1-1 conv layer\n", 197 | " nn.Conv2d(96, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 198 | " nn.ReLU(),\n", 199 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 200 | " )\n", 201 | "\n", 202 | "# # =============================== bottom ================================\n", 203 | "\n", 204 | "\n", 205 | "# # first bottom convolution layer\n", 206 | " self.bottom_conv1 = nn.Sequential(\n", 207 | "\n", 208 | " # 1-1 conv layer\n", 209 | " nn.Conv2d(3, 48, kernel_size=(11,11), stride=(4,4)),\n", 210 | " nn.ReLU(),\n", 211 | " nn.BatchNorm2d(48),\n", 212 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 213 | " )\n", 214 | "\n", 215 | "\n", 216 | " # first top convolution layer after split\n", 217 | " self.bottom_top_conv2 = nn.Sequential(\n", 218 | "\n", 219 | " # 1-1 conv layer\n", 220 | " nn.Conv2d(24, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 221 | " nn.ReLU(),\n", 222 | " nn.BatchNorm2d(64),\n", 223 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 224 | " )\n", 225 | "\n", 226 | " self.bottom_bot_conv2 = nn.Sequential(\n", 227 | "\n", 228 | " # 1-1 conv layer\n", 229 | " nn.Conv2d(24, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 230 | " nn.ReLU(),\n", 231 | " nn.BatchNorm2d(64),\n", 232 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 233 | " )\n", 234 | "\n", 235 | "\n", 236 | " # need a concat\n", 237 | "\n", 238 | " # after concat\n", 239 | " self.bottom_conv3 = nn.Sequential(\n", 240 | " # 1-1 conv layer\n", 241 | " nn.Conv2d(128, 192, kernel_size=(3,3), stride=(1,1),padding=1),\n", 242 | " nn.ReLU()\n", 243 | " )\n", 244 | "\n", 245 | " # fourth top convolution layer\n", 246 | " # split feature map by half\n", 247 | " self.bottom_top_conv4 = nn.Sequential(\n", 248 | " # 1-1 conv layer\n", 249 | " nn.Conv2d(96, 96, kernel_size=(3,3), stride=(1,1),padding=1),\n", 250 | " nn.ReLU()\n", 251 | " )\n", 252 | "\n", 253 | " self.bottom_bot_conv4 = nn.Sequential(\n", 254 | " # 1-1 conv layer\n", 255 | " nn.Conv2d(96, 96, kernel_size=(3,3), stride=(1,1),padding=1),\n", 256 | " nn.ReLU()\n", 257 | " )\n", 258 | "\n", 259 | "\n", 260 | " # fifth top convolution layer\n", 261 | " self.bottom_top_conv5 = nn.Sequential(\n", 262 | " # 1-1 conv layer\n", 263 | " nn.Conv2d(96, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 264 | " nn.ReLU(),\n", 265 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 266 | " )\n", 267 | " self.bottom_bot_conv5 = nn.Sequential(\n", 268 | " # 1-1 conv layer\n", 269 | " nn.Conv2d(96, 64, kernel_size=(3,3), stride=(1,1),padding=1),\n", 270 | " nn.ReLU(),\n", 271 | " nn.MaxPool2d(kernel_size=3, stride=2)\n", 272 | " )\n", 273 | "\n", 274 | " # Fully-connected layer\n", 275 | " self.classifier = nn.Sequential(\n", 276 | " nn.Linear(5*5*64*4, 4096),\n", 277 | " nn.ReLU(),\n", 278 | " nn.Dropout(0.7),\n", 279 | " nn.Linear(4096, 4096),\n", 280 | " nn.ReLU(),\n", 281 | " nn.Dropout(0.6),\n", 282 | " nn.Linear(4096, 8)\n", 283 | " )\n", 284 | "\n", 285 | " def forward(self,x):\n", 286 | " # print(x.shape)\n", 287 | " x_top = self.top_conv1(x)\n", 288 | " # print(x_top.shape)\n", 289 | "\n", 290 | " x_top_conv = torch.split(x_top, 24, 1)\n", 291 | "\n", 292 | " x_top_top_conv2 = self.top_top_conv2(x_top_conv[0])\n", 293 | " x_top_bot_conv2 = self.top_bot_conv2(x_top_conv[1])\n", 294 | "\n", 295 | " x_top_cat1 = torch.cat([x_top_top_conv2,x_top_bot_conv2],1)\n", 296 | "\n", 297 | " x_top_conv3 = self.top_conv3(x_top_cat1)\n", 298 | "\n", 299 | " x_top_conv3 = torch.split(x_top_conv3, 96, 1)\n", 300 | "\n", 301 | " x_top_top_conv4 = self.top_top_conv4(x_top_conv3[0])\n", 302 | " x_top_bot_conv4 = self.top_bot_conv4(x_top_conv3[1])\n", 303 | "\n", 304 | " x_top_top_conv5 = self.top_top_conv5(x_top_top_conv4)\n", 305 | " x_top_bot_conv5 = self.top_bot_conv5(x_top_bot_conv4)\n", 306 | "\n", 307 | " x_bottom = self.bottom_conv1(x)\n", 308 | "\n", 309 | " x_bottom_conv = torch.split(x_bottom, 24, 1)\n", 310 | "\n", 311 | " x_bottom_top_conv2 = self.bottom_top_conv2(x_bottom_conv[0])\n", 312 | " x_bottom_bot_conv2 = self.bottom_bot_conv2(x_bottom_conv[1])\n", 313 | "\n", 314 | " x_bottom_cat1 = torch.cat([x_bottom_top_conv2,x_bottom_bot_conv2],1)\n", 315 | "\n", 316 | " x_bottom_conv3 = self.bottom_conv3(x_bottom_cat1)\n", 317 | "\n", 318 | " x_bottom_conv3 = torch.split(x_bottom_conv3, 96, 1)\n", 319 | "\n", 320 | " x_bottom_top_conv4 = self.bottom_top_conv4(x_bottom_conv3[0])\n", 321 | " x_bottom_bot_conv4 = self.bottom_bot_conv4(x_bottom_conv3[1])\n", 322 | "\n", 323 | " x_bottom_top_conv5 = self.bottom_top_conv5(x_bottom_top_conv4)\n", 324 | " x_bottom_bot_conv5 = self.bottom_bot_conv5(x_bottom_bot_conv4)\n", 325 | "\n", 326 | " x_cat = torch.cat([x_top_top_conv5,x_top_bot_conv5,x_bottom_top_conv5,x_bottom_bot_conv5],1)\n", 327 | "\n", 328 | "\n", 329 | " flatten = x_cat.view(x_cat.size(0), -1)\n", 330 | "\n", 331 | " output = self.classifier(flatten)\n", 332 | "\n", 333 | " #output = F.softmax(output)\n", 334 | "\n", 335 | "\n", 336 | " return output\n" 337 | ] 338 | } 339 | ], 340 | "metadata": { 341 | "kernelspec": { 342 | "display_name": "PyCharm (pythonProject)", 343 | "language": "python", 344 | "name": "pycharm-72b5a700" 345 | }, 346 | "language_info": { 347 | "codemirror_mode": { 348 | "name": "ipython", 349 | "version": 3 350 | }, 351 | "file_extension": ".py", 352 | "mimetype": "text/x-python", 353 | "name": "python", 354 | "nbconvert_exporter": "python", 355 | "pygments_lexer": "ipython3", 356 | "version": "3.6.9" 357 | } 358 | }, 359 | "nbformat": 4, 360 | "nbformat_minor": 1 361 | } 362 | --------------------------------------------------------------------------------