소스 검색

1.2 committed in Nov 20

master
Ellis Huntingmoon 5 년 전
부모
커밋
fcd67cb992
98개의 변경된 파일460개의 추가작업 그리고 101개의 파일을 삭제
  1. 1
    1
      .vscode/settings.json
  2. 0
    0
      acc_save/sample_shape_mobilenetv2_201118.txt
  3. 2
    0
      cfgs/README.txt
  4. 1
    0
      cfgs/middle_MobileNetV2_201118.lcfg
  5. 50
    0
      datasetmaker.py
  6. 0
    2
      learning_cofigurations/sample_shape_mobilenetv2_201118.lcfg
  7. 32
    0
      namechanger_for_middle.py
  8. 0
    5
      recorder.py
  9. BIN
      requirements_1118.txt
  10. 1
    0
      tmp_lcfg/box_moblienetv2_10_201120.lcfg
  11. 1
    0
      tmp_lcfg/box_moblienetv2_11_201120.lcfg
  12. 1
    0
      tmp_lcfg/box_moblienetv2_12_201120.lcfg
  13. 1
    0
      tmp_lcfg/box_moblienetv2_7_201120.lcfg
  14. 1
    0
      tmp_lcfg/box_moblienetv2_8_201120.lcfg
  15. 1
    0
      tmp_lcfg/box_moblienetv2_9_201120.lcfg
  16. 1
    0
      tmp_lcfg/box_resnet50_49_201120.lcfg
  17. 1
    0
      tmp_lcfg/box_resnet50_50_201120.lcfg
  18. 1
    0
      tmp_lcfg/box_resnet50_51_201120.lcfg
  19. 1
    0
      tmp_lcfg/box_resnet50_52_201120.lcfg
  20. 1
    0
      tmp_lcfg/box_resnet50_53_201120.lcfg
  21. 1
    0
      tmp_lcfg/box_resnet50_54_201120.lcfg
  22. 1
    0
      tmp_lcfg/capitallima_moblienetv2_13_201120.lcfg
  23. 1
    0
      tmp_lcfg/capitallima_moblienetv2_14_201120.lcfg
  24. 1
    0
      tmp_lcfg/capitallima_moblienetv2_15_201120.lcfg
  25. 1
    0
      tmp_lcfg/capitallima_moblienetv2_16_201120.lcfg
  26. 1
    0
      tmp_lcfg/capitallima_moblienetv2_17_201120.lcfg
  27. 1
    0
      tmp_lcfg/capitallima_moblienetv2_18_201120.lcfg
  28. 1
    0
      tmp_lcfg/capitallima_resnet50_55_201120.lcfg
  29. 1
    0
      tmp_lcfg/capitallima_resnet50_56_201120.lcfg
  30. 1
    0
      tmp_lcfg/capitallima_resnet50_57_201120.lcfg
  31. 1
    0
      tmp_lcfg/capitallima_resnet50_58_201120.lcfg
  32. 1
    0
      tmp_lcfg/capitallima_resnet50_59_201120.lcfg
  33. 1
    0
      tmp_lcfg/capitallima_resnet50_60_201120.lcfg
  34. 1
    0
      tmp_lcfg/carexterior_moblienetv2_19_201120.lcfg
  35. 1
    0
      tmp_lcfg/carexterior_moblienetv2_20_201120.lcfg
  36. 1
    0
      tmp_lcfg/carexterior_moblienetv2_21_201120.lcfg
  37. 1
    0
      tmp_lcfg/carexterior_moblienetv2_22_201120.lcfg
  38. 1
    0
      tmp_lcfg/carexterior_moblienetv2_23_201120.lcfg
  39. 1
    0
      tmp_lcfg/carexterior_moblienetv2_24_201120.lcfg
  40. 1
    0
      tmp_lcfg/carexterior_resnet50_61_201120.lcfg
  41. 1
    0
      tmp_lcfg/carexterior_resnet50_62_201120.lcfg
  42. 1
    0
      tmp_lcfg/carexterior_resnet50_63_201120.lcfg
  43. 1
    0
      tmp_lcfg/carexterior_resnet50_64_201120.lcfg
  44. 1
    0
      tmp_lcfg/carexterior_resnet50_65_201120.lcfg
  45. 1
    0
      tmp_lcfg/carexterior_resnet50_66_201120.lcfg
  46. 1
    0
      tmp_lcfg/carlamp_moblienetv2_25_201120.lcfg
  47. 1
    0
      tmp_lcfg/carlamp_moblienetv2_26_201120.lcfg
  48. 1
    0
      tmp_lcfg/carlamp_moblienetv2_27_201120.lcfg
  49. 1
    0
      tmp_lcfg/carlamp_moblienetv2_28_201120.lcfg
  50. 1
    0
      tmp_lcfg/carlamp_moblienetv2_29_201120.lcfg
  51. 1
    0
      tmp_lcfg/carlamp_moblienetv2_30_201120.lcfg
  52. 1
    0
      tmp_lcfg/carlamp_resnet50_67_201120.lcfg
  53. 1
    0
      tmp_lcfg/carlamp_resnet50_68_201120.lcfg
  54. 1
    0
      tmp_lcfg/carlamp_resnet50_69_201120.lcfg
  55. 1
    0
      tmp_lcfg/carlamp_resnet50_70_201120.lcfg
  56. 1
    0
      tmp_lcfg/carlamp_resnet50_71_201120.lcfg
  57. 1
    0
      tmp_lcfg/carlamp_resnet50_72_201120.lcfg
  58. 1
    0
      tmp_lcfg/cosmeticbottle_moblienetv2_31_201120.lcfg
  59. 1
    0
      tmp_lcfg/cosmeticbottle_moblienetv2_32_201120.lcfg
  60. 1
    0
      tmp_lcfg/cosmeticbottle_moblienetv2_33_201120.lcfg
  61. 1
    0
      tmp_lcfg/cosmeticbottle_moblienetv2_34_201120.lcfg
  62. 1
    0
      tmp_lcfg/cosmeticbottle_moblienetv2_35_201120.lcfg
  63. 1
    0
      tmp_lcfg/cosmeticbottle_moblienetv2_36_201120.lcfg
  64. 1
    0
      tmp_lcfg/cosmeticbottle_resnet50_73_201120.lcfg
  65. 1
    0
      tmp_lcfg/cosmeticbottle_resnet50_74_201120.lcfg
  66. 1
    0
      tmp_lcfg/cosmeticbottle_resnet50_75_201120.lcfg
  67. 1
    0
      tmp_lcfg/cosmeticbottle_resnet50_76_201120.lcfg
  68. 1
    0
      tmp_lcfg/cosmeticbottle_resnet50_77_201120.lcfg
  69. 1
    0
      tmp_lcfg/cosmeticbottle_resnet50_78_201120.lcfg
  70. 33
    0
      tmp_lcfg/lcfgmaker.py
  71. 1
    0
      tmp_lcfg/middle_moblienetv2_1_201120.lcfg
  72. 1
    0
      tmp_lcfg/middle_moblienetv2_2_201120.lcfg
  73. 1
    0
      tmp_lcfg/middle_moblienetv2_3_201120.lcfg
  74. 1
    0
      tmp_lcfg/middle_moblienetv2_4_201120.lcfg
  75. 1
    0
      tmp_lcfg/middle_moblienetv2_5_201120.lcfg
  76. 1
    0
      tmp_lcfg/middle_moblienetv2_6_201120.lcfg
  77. 1
    0
      tmp_lcfg/middle_resnet50_43_201120.lcfg
  78. 1
    0
      tmp_lcfg/middle_resnet50_44_201120.lcfg
  79. 1
    0
      tmp_lcfg/middle_resnet50_45_201120.lcfg
  80. 1
    0
      tmp_lcfg/middle_resnet50_46_201120.lcfg
  81. 1
    0
      tmp_lcfg/middle_resnet50_47_201120.lcfg
  82. 1
    0
      tmp_lcfg/middle_resnet50_48_201120.lcfg
  83. 1
    0
      tmp_lcfg/slotted_moblienetv2_37_201120.lcfg
  84. 1
    0
      tmp_lcfg/slotted_moblienetv2_38_201120.lcfg
  85. 1
    0
      tmp_lcfg/slotted_moblienetv2_39_201120.lcfg
  86. 1
    0
      tmp_lcfg/slotted_moblienetv2_40_201120.lcfg
  87. 1
    0
      tmp_lcfg/slotted_moblienetv2_41_201120.lcfg
  88. 1
    0
      tmp_lcfg/slotted_moblienetv2_42_201120.lcfg
  89. 1
    0
      tmp_lcfg/slotted_resnet50_79_201120.lcfg
  90. 1
    0
      tmp_lcfg/slotted_resnet50_80_201120.lcfg
  91. 1
    0
      tmp_lcfg/slotted_resnet50_81_201120.lcfg
  92. 1
    0
      tmp_lcfg/slotted_resnet50_82_201120.lcfg
  93. 1
    0
      tmp_lcfg/slotted_resnet50_83_201120.lcfg
  94. 1
    0
      tmp_lcfg/slotted_resnet50_84_201120.lcfg
  95. 0
    91
      train_model_1.0.py
  96. 257
    0
      train_model_1.2.py
  97. 0
    1
      weights_backup/sample_shape_mobilenetv2_201118/100_sample_shape_mobilenetv2_201118.rtf
  98. 0
    1
      weights_backup/sample_shape_mobilenetv2_201118/200_sample_shape_mobilenetv2_201118 - Copy.rtf

+ 1
- 1
.vscode/settings.json 파일 보기

@@ -1,3 +1,3 @@
1 1
 {
2
-    "python.pythonPath": "C:\\Users\\atari\\Miniconda3\\envs\\chouse\\python.exe"
2
+    "python.pythonPath": "C:\\Users\\atari\\miniconda3\\envs\\chouse\\python.exe"
3 3
 }

+ 0
- 0
acc_save/sample_shape_mobilenetv2_201118.txt 파일 보기


+ 2
- 0
cfgs/README.txt 파일 보기

@@ -0,0 +1,2 @@
1
+This file descripts how to make .lcfg file(learning configuration).
2
+.lcfg file has 10 pramas: {role} {bbname} {dsversion} {dsname} {epoch} {batchsize} {optmizer} {learningloss} {lossfunction} {saveperiod}

+ 1
- 0
cfgs/middle_MobileNetV2_201118.lcfg 파일 보기

@@ -0,0 +1 @@
1
+middle_201118 MobileNetV2 201120 box 1000 64 RMSprop 0.001 CrossEntropy 100

+ 50
- 0
datasetmaker.py 파일 보기

@@ -0,0 +1,50 @@
1
+from torch.utils.data import Dataset, DataLoader
2
+from torchvision import transforms, datasets
3
+import os
4
+import sys
5
+
6
+class TrainDataClass(Dataset):
7
+    def __init__(self, image_path, transform=None):
8
+        super(TrainDataClass, self).__init__()
9
+        self.data = datasets.ImageFolder(os.path.join(image_path,'train'), transform)
10
+    
11
+    def __getitem__(self,idx):
12
+        x,y = self.data[idx]
13
+        return x,y
14
+    def __len__(self):
15
+        return len(self.data)
16
+
17
+class TestDataClass(Dataset):
18
+    def __init__(self, image_path, transform=None):
19
+        super(TestDataClass, self).__init__()
20
+        self.data = datasets.ImageFolder(os.path.join(image_path,'test'), transform)
21
+    
22
+    def __getitem__(self,idx):
23
+        x,y = self.data[idx]
24
+        return x,y
25
+    def __len__(self):
26
+        return len(self.data)
27
+
28
+
29
+
30
+
31
+#if __name__ == "__main__":
32
+    #NOTE: we don't have to transform because we already shrink raw images as same as MoblieNetV2's input size
33
+    #TODO: PLEASE ERASE WHEN YOU REFRACORING!!
34
+    #dataset_root = 'C:\\Users\\atari\\workspace\\chouse_train\\datasets\\201118\\middle'
35
+    #classes = tuple(os.listdir(os.path.join(dataset_root,'train')))
36
+#
37
+    #tsfm=transforms.Compose([
38
+    #    transforms.ToTensor()
39
+    #])
40
+#
41
+    #train = TrainDataClass(dataset_root, tsfm)
42
+    #trainloader = DataLoader(train, batch_size=512, shuffle=True)
43
+#
44
+    #test = TestDataClass(dataset_root, tsfm)
45
+    #testloader = DataLoader(test, batch_size=512, shuffle=True)
46
+#
47
+#
48
+    #dataiter = iter(trainloader)
49
+    #images,labels = dataiter.next()
50
+    #print('GroundTruth: ', ' '.join('%5s' % classes[labels[j]] for j in range(512)))

+ 0
- 2
learning_cofigurations/sample_shape_mobilenetv2_201118.lcfg 파일 보기

@@ -1,2 +0,0 @@
1
-{ModelName} {Epoch} {batch_size} {Optmizer} {Loss_rate} {} {} {save_period}
2
-MobileNetV2 5000 100 

+ 32
- 0
namechanger_for_middle.py 파일 보기

@@ -0,0 +1,32 @@
1
+import torch
2
+import torchvision.models
3
+import sys
4
+import pandas as pd
5
+import os
6
+
7
+
8
+abs_path = os.path.dirname(os.path.abspath(__file__))
9
+
10
+#증식 하기 전의 데이터셋의 폴더 경로(상대경로)를 적어주세요
11
+ds_root = 'raw_ds_201118_1.0'
12
+
13
+
14
+
15
+print(abs_path)
16
+for root, dirs, files in os.walk(ds_root, topdown = True):
17
+    if '_a' in root:
18
+        if 'train' in root:
19
+            pass
20
+        elif 'validation' in root:
21
+            pass
22
+        else:            
23
+            prefix_id = root[-2:]            
24
+            #print(prefix_id)
25
+        for file_name in files:
26
+            path = os.path.join(abs_path,root)
27
+            print(path, file_name)
28
+            new_file_name = prefix_id + '_' + file_name
29
+            if prefix_id in file_name:
30
+                pass
31
+            else:
32
+                os.rename(os.path.join(path+'\\'+file_name),os.path.join(path+'\\'+new_file_name))

+ 0
- 5
recorder.py 파일 보기

@@ -1,5 +0,0 @@
1
-import os
2
-import sys
3
-import pandas
4
-import torch
5
-import torchvision

BIN
requirements_1118.txt 파일 보기


+ 1
- 0
tmp_lcfg/box_moblienetv2_10_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+box_moblienetv2_10_201120 moblienetv2 201120 box 100 32 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/box_moblienetv2_11_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+box_moblienetv2_11_201120 moblienetv2 201120 box 100 32 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/box_moblienetv2_12_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+box_moblienetv2_12_201120 moblienetv2 201120 box 100 32 Adam 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/box_moblienetv2_7_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+box_moblienetv2_7_201120 moblienetv2 201120 box 100 32 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/box_moblienetv2_8_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+box_moblienetv2_8_201120 moblienetv2 201120 box 100 32 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/box_moblienetv2_9_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+box_moblienetv2_9_201120 moblienetv2 201120 box 100 32 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/box_resnet50_49_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+box_resnet50_49_201120 resnet50 201120 box 100 32 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/box_resnet50_50_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+box_resnet50_50_201120 resnet50 201120 box 100 32 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/box_resnet50_51_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+box_resnet50_51_201120 resnet50 201120 box 100 32 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/box_resnet50_52_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+box_resnet50_52_201120 resnet50 201120 box 100 32 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/box_resnet50_53_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+box_resnet50_53_201120 resnet50 201120 box 100 32 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/box_resnet50_54_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+box_resnet50_54_201120 resnet50 201120 box 100 32 Adam 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/capitallima_moblienetv2_13_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+capitallima_moblienetv2_13_201120 moblienetv2 201120 capitallima 100 32 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/capitallima_moblienetv2_14_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+capitallima_moblienetv2_14_201120 moblienetv2 201120 capitallima 100 32 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/capitallima_moblienetv2_15_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+capitallima_moblienetv2_15_201120 moblienetv2 201120 capitallima 100 32 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/capitallima_moblienetv2_16_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+capitallima_moblienetv2_16_201120 moblienetv2 201120 capitallima 100 32 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/capitallima_moblienetv2_17_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+capitallima_moblienetv2_17_201120 moblienetv2 201120 capitallima 100 32 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/capitallima_moblienetv2_18_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+capitallima_moblienetv2_18_201120 moblienetv2 201120 capitallima 100 32 Adam 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/capitallima_resnet50_55_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+capitallima_resnet50_55_201120 resnet50 201120 capitallima 100 32 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/capitallima_resnet50_56_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+capitallima_resnet50_56_201120 resnet50 201120 capitallima 100 32 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/capitallima_resnet50_57_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+capitallima_resnet50_57_201120 resnet50 201120 capitallima 100 32 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/capitallima_resnet50_58_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+capitallima_resnet50_58_201120 resnet50 201120 capitallima 100 32 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/capitallima_resnet50_59_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+capitallima_resnet50_59_201120 resnet50 201120 capitallima 100 32 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/capitallima_resnet50_60_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+capitallima_resnet50_60_201120 resnet50 201120 capitallima 100 32 Adam 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/carexterior_moblienetv2_19_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carexterior_moblienetv2_19_201120 moblienetv2 201120 carexterior 100 32 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/carexterior_moblienetv2_20_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carexterior_moblienetv2_20_201120 moblienetv2 201120 carexterior 100 32 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/carexterior_moblienetv2_21_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carexterior_moblienetv2_21_201120 moblienetv2 201120 carexterior 100 32 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/carexterior_moblienetv2_22_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carexterior_moblienetv2_22_201120 moblienetv2 201120 carexterior 100 32 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/carexterior_moblienetv2_23_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carexterior_moblienetv2_23_201120 moblienetv2 201120 carexterior 100 32 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/carexterior_moblienetv2_24_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carexterior_moblienetv2_24_201120 moblienetv2 201120 carexterior 100 32 Adam 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/carexterior_resnet50_61_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carexterior_resnet50_61_201120 resnet50 201120 carexterior 100 32 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/carexterior_resnet50_62_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carexterior_resnet50_62_201120 resnet50 201120 carexterior 100 32 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/carexterior_resnet50_63_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carexterior_resnet50_63_201120 resnet50 201120 carexterior 100 32 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/carexterior_resnet50_64_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carexterior_resnet50_64_201120 resnet50 201120 carexterior 100 32 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/carexterior_resnet50_65_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carexterior_resnet50_65_201120 resnet50 201120 carexterior 100 32 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/carexterior_resnet50_66_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carexterior_resnet50_66_201120 resnet50 201120 carexterior 100 32 Adam 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/carlamp_moblienetv2_25_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carlamp_moblienetv2_25_201120 moblienetv2 201120 carlamp 100 32 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/carlamp_moblienetv2_26_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carlamp_moblienetv2_26_201120 moblienetv2 201120 carlamp 100 32 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/carlamp_moblienetv2_27_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carlamp_moblienetv2_27_201120 moblienetv2 201120 carlamp 100 32 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/carlamp_moblienetv2_28_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carlamp_moblienetv2_28_201120 moblienetv2 201120 carlamp 100 32 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/carlamp_moblienetv2_29_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carlamp_moblienetv2_29_201120 moblienetv2 201120 carlamp 100 32 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/carlamp_moblienetv2_30_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carlamp_moblienetv2_30_201120 moblienetv2 201120 carlamp 100 32 Adam 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/carlamp_resnet50_67_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carlamp_resnet50_67_201120 resnet50 201120 carlamp 100 32 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/carlamp_resnet50_68_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carlamp_resnet50_68_201120 resnet50 201120 carlamp 100 32 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/carlamp_resnet50_69_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carlamp_resnet50_69_201120 resnet50 201120 carlamp 100 32 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/carlamp_resnet50_70_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carlamp_resnet50_70_201120 resnet50 201120 carlamp 100 32 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/carlamp_resnet50_71_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carlamp_resnet50_71_201120 resnet50 201120 carlamp 100 32 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/carlamp_resnet50_72_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+carlamp_resnet50_72_201120 resnet50 201120 carlamp 100 32 Adam 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/cosmeticbottle_moblienetv2_31_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+cosmeticbottle_moblienetv2_31_201120 moblienetv2 201120 cosmeticbottle 100 32 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/cosmeticbottle_moblienetv2_32_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+cosmeticbottle_moblienetv2_32_201120 moblienetv2 201120 cosmeticbottle 100 32 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/cosmeticbottle_moblienetv2_33_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+cosmeticbottle_moblienetv2_33_201120 moblienetv2 201120 cosmeticbottle 100 32 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/cosmeticbottle_moblienetv2_34_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+cosmeticbottle_moblienetv2_34_201120 moblienetv2 201120 cosmeticbottle 100 32 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/cosmeticbottle_moblienetv2_35_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+cosmeticbottle_moblienetv2_35_201120 moblienetv2 201120 cosmeticbottle 100 32 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/cosmeticbottle_moblienetv2_36_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+cosmeticbottle_moblienetv2_36_201120 moblienetv2 201120 cosmeticbottle 100 32 Adam 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/cosmeticbottle_resnet50_73_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+cosmeticbottle_resnet50_73_201120 resnet50 201120 cosmeticbottle 100 32 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/cosmeticbottle_resnet50_74_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+cosmeticbottle_resnet50_74_201120 resnet50 201120 cosmeticbottle 100 32 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/cosmeticbottle_resnet50_75_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+cosmeticbottle_resnet50_75_201120 resnet50 201120 cosmeticbottle 100 32 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/cosmeticbottle_resnet50_76_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+cosmeticbottle_resnet50_76_201120 resnet50 201120 cosmeticbottle 100 32 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/cosmeticbottle_resnet50_77_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+cosmeticbottle_resnet50_77_201120 resnet50 201120 cosmeticbottle 100 32 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/cosmeticbottle_resnet50_78_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+cosmeticbottle_resnet50_78_201120 resnet50 201120 cosmeticbottle 100 32 Adam 0.001 MultiLabelMarginLoss 1

+ 33
- 0
tmp_lcfg/lcfgmaker.py 파일 보기

@@ -0,0 +1,33 @@
1
+
2
+import os
3
+
4
+bbnames = ['moblienetv2','resnet50']
5
+dsversion = 201120
6
+dsnames = ['middle', 'box', 'capitallima', 'carexterior', 'carlamp', 'cosmeticbottle', 'slotted']
7
+epoch = 100
8
+saveperiod = 1
9
+lossfunctions = ['CrossEntropyLoss', 'MultiLabelMarginLoss']
10
+batchsizes = ['32','64']
11
+optimizers = ['SGD', 'RMSprop', 'Adam']
12
+learningloss = 0.001
13
+
14
+
15
+count = 1
16
+
17
+for bbname in bbnames:
18
+    for dsname in dsnames:
19
+        for lossfunction in lossfunctions:
20
+            for optimizer in optimizers:
21
+                role = dsname+"_"+ bbname + "_" + str(count) +'_'+ str(dsversion)
22
+                current_dir = os.path.join(os.getcwd(),role)
23
+                f  = open(current_dir + '.lcfg','w')
24
+                if dsname == 'middle':
25
+                    f.write(role +' ' +bbname +' '+ str(dsversion) +' '+ str(dsname) +' '+ str(epoch) +' '+ str(batchsizes[1]) +' '+ optimizer +' '+ str(learningloss) +' '+ lossfunction +' '+ str(saveperiod))
26
+                    f.close()
27
+                else:
28
+                    f.write(role +' ' +bbname +' '+ str(dsversion) +' '+ str(dsname) +' '+ str(epoch) +' '+ str(batchsizes[0]) +' '+ optimizer +' '+ str(learningloss) +' '+ lossfunction +' '+ str(saveperiod))
29
+                    f.close()
30
+
31
+                print(current_dir)
32
+                count += 1
33
+    

+ 1
- 0
tmp_lcfg/middle_moblienetv2_1_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+middle_moblienetv2_1_201120 moblienetv2 201120 middle 100 64 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/middle_moblienetv2_2_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+middle_moblienetv2_2_201120 moblienetv2 201120 middle 100 64 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/middle_moblienetv2_3_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+middle_moblienetv2_3_201120 moblienetv2 201120 middle 100 64 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/middle_moblienetv2_4_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+middle_moblienetv2_4_201120 moblienetv2 201120 middle 100 64 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/middle_moblienetv2_5_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+middle_moblienetv2_5_201120 moblienetv2 201120 middle 100 64 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/middle_moblienetv2_6_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+middle_moblienetv2_6_201120 moblienetv2 201120 middle 100 64 Adam 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/middle_resnet50_43_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+middle_resnet50_43_201120 resnet50 201120 middle 100 64 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/middle_resnet50_44_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+middle_resnet50_44_201120 resnet50 201120 middle 100 64 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/middle_resnet50_45_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+middle_resnet50_45_201120 resnet50 201120 middle 100 64 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/middle_resnet50_46_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+middle_resnet50_46_201120 resnet50 201120 middle 100 64 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/middle_resnet50_47_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+middle_resnet50_47_201120 resnet50 201120 middle 100 64 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/middle_resnet50_48_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+middle_resnet50_48_201120 resnet50 201120 middle 100 64 Adam 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/slotted_moblienetv2_37_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+slotted_moblienetv2_37_201120 moblienetv2 201120 slotted 100 32 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/slotted_moblienetv2_38_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+slotted_moblienetv2_38_201120 moblienetv2 201120 slotted 100 32 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/slotted_moblienetv2_39_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+slotted_moblienetv2_39_201120 moblienetv2 201120 slotted 100 32 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/slotted_moblienetv2_40_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+slotted_moblienetv2_40_201120 moblienetv2 201120 slotted 100 32 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/slotted_moblienetv2_41_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+slotted_moblienetv2_41_201120 moblienetv2 201120 slotted 100 32 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/slotted_moblienetv2_42_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+slotted_moblienetv2_42_201120 moblienetv2 201120 slotted 100 32 Adam 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/slotted_resnet50_79_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+slotted_resnet50_79_201120 resnet50 201120 slotted 100 32 SGD 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/slotted_resnet50_80_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+slotted_resnet50_80_201120 resnet50 201120 slotted 100 32 RMSprop 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/slotted_resnet50_81_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+slotted_resnet50_81_201120 resnet50 201120 slotted 100 32 Adam 0.001 CrossEntropyLoss 1

+ 1
- 0
tmp_lcfg/slotted_resnet50_82_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+slotted_resnet50_82_201120 resnet50 201120 slotted 100 32 SGD 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/slotted_resnet50_83_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+slotted_resnet50_83_201120 resnet50 201120 slotted 100 32 RMSprop 0.001 MultiLabelMarginLoss 1

+ 1
- 0
tmp_lcfg/slotted_resnet50_84_201120.lcfg 파일 보기

@@ -0,0 +1 @@
1
+slotted_resnet50_84_201120 resnet50 201120 slotted 100 32 Adam 0.001 MultiLabelMarginLoss 1

+ 0
- 91
train_model_1.0.py 파일 보기

@@ -1,91 +0,0 @@
1
-import argparse
2
-import torch
3
-import torchvision.models
4
-import sys
5
-import pandas
6
-
7
-
8
-
9
-'''
10
-filename:train_model_1.0.py
11
-create date: 11/17/2020 Tue
12
-Author: Jeong Geol Kim
13
-Contact: atarib4816@gmail.com
14
-Description: This .py file will train, save weight and save Results with parameters. parameters will input by .txt file.
15
-eg) train_model_1.0.py -r train_parameter.lcfg
16
-guidelines for train_parameter.txt
17
-filename format: partofarchitecture_backbone_yymmdd.lcfg
18
-eg) shapesort_mobilenetv2_201118.txt
19
-'''
20
-
21
-
22
-def Params_Set():
23
-    '''
24
-    Description: read options from .lcfg and initialize learning options.
25
-    You should write 
26
-    '''
27
-    HELP_TEXT = "how to use .py" #TODO: write description more precisely
28
-    N_OF_PARAMS = 3 #from now on, .txt file has 3 pramas(backbone Name, iterations, save period)
29
-
30
-    parser = argparse.ArgumentParser(description = HELP_TEXT)
31
-    parser.add_argument("-r", required = True, help = '.lcfg file contains with learning configures')
32
-    args = parser.parse_args()
33
-
34
-    f = open(args.r, 'r')    
35
-    p_string = f.readline()
36
-    f.close()
37
-    params = p_string.split()
38
-
39
-    if str(args.r[-4:]) != 'lcfg':
40
-        print ("Error: {} is wrong filename extension. Learning configures must written in .lcfg file")
41
-        return 
42
-    elif len(params) != N_OF_PARAMS: 
43
-        print("Error: {} is broken. please check learning configures.".format(args.r))
44
-        return
45
-    else:
46
-        print("---Learning Options---")
47
-        print("Backbone Name: {}".format(params[0]))
48
-        print("Number of iterations: {}".format(params[1]))
49
-        print("Period of saving weight: {}".format(params[2]))
50
-        return params, args.r
51
-
52
-
53
-def Preprocess():
54
-    pass
55
-
56
-
57
-
58
-def Model_Construct():
59
-    pass
60
-
61
-def Train():
62
-    pass
63
-
64
-def Save_Weight():
65
-    pass
66
-
67
-
68
-def Result():
69
-    pass
70
-
71
-
72
-
73
-
74
-if __name__ == "__main__":
75
-    #get all params from option files
76
-    params, name_of_lcfg = Params_Set()
77
-
78
-    Preprocess()
79
-
80
-    Model_Construct()
81
-
82
-    Train()   
83
-
84
-    Save_Weight()
85
-
86
-    Result()
87
-
88
-
89
-
90
-
91
-

+ 257
- 0
train_model_1.2.py 파일 보기

@@ -0,0 +1,257 @@
1
+import torch
2
+import torchvision.models
3
+import sys
4
+import pandas as pd
5
+import os
6
+from datasetmaker import TrainDataClass, TestDataClass
7
+from torch.utils.data import Dataset, DataLoader
8
+from torchvision import transforms, datasets
9
+from torch import optim
10
+import torch.nn as nn
11
+import torch.nn.functional as F
12
+
13
+weight_dir_root = 'weights_backup'
14
+acc_dir_root = 'accs'
15
+
16
+
17
+'''
18
+filename:train_model_1.0.py
19
+create date: 11/17/2020 Tue
20
+Author: Jeong Geol Kim
21
+Contact: atarib4816@gmail.com
22
+Description: This .py file will train, save weight and save Results with parameters. parameters will input by .txt file.
23
+filename format: partofarchitecture_backbone_yymmdd.lcfg
24
+eg) shapesort_mobilenetv2_201118.txt
25
+'''
26
+
27
+
28
+def Read_Config(lcfg_name):
29
+    '''
30
+    Description: read options from .lcfg and initialize learning options.
31
+    .lcfg file has 10 pramas: {role} {bbname} {dsversion} {dsname} {epoch} {batchsize} {optmizer} {learningloss} {lossfunction} {saveperiod}
32
+    '''       
33
+    N_OF_PARAMS = 10
34
+    dict_key = ['role', 'bbname', 'dsversion', 'dsname', 'epoch', 'batchsize', 'optimizer', 'learningloss', 'lossfunction', 'saveperiod']
35
+
36
+    f = open(lcfg_name, 'r')
37
+    p_string = f.readline()
38
+    f.close()
39
+    params = p_string.split()
40
+
41
+    if len(params) != N_OF_PARAMS: 
42
+        print("Error: {} is broken. please check learning configures. Or you have to change constant N_OF_PARMAS.".format(lcfg_name))
43
+        return
44
+    else:
45
+        print("----Learning Options----")
46
+        print("Role of Classifier: {}".format(params[0]))
47
+        print("Backbone Name: {}".format(params[1]))
48
+        print("Dataset version: {}".format(params[2]))
49
+        print("Dataset target: {}".format(params[3]))
50
+        print("Number of iterations: {}".format(params[4]))
51
+        print("Images per Batch: {}".format(params[5]))
52
+        print("Optimizer Name: {}".format(params[6]))
53
+        print("learning loss: {}".format(params[7]))
54
+        print("Loss function Name: {}".format(params[8]))
55
+        print("Period of saving weight: {}".format(params[9]))
56
+        parmas_dictionary = dict(zip(dict_key, params))
57
+        
58
+        return parmas_dictionary
59
+
60
+
61
+def Preprocess(params, lcfg_name):
62
+    dataset_root = os.path.join(os.getcwd(),'datasets',params['dsversion'],params['dsname'])
63
+    classes = tuple(os.listdir(os.path.join(dataset_root,'train')))
64
+
65
+    #NOTE: we don't have to transform because we already shrink raw images as same as MoblieNetV2's input size
66
+    tsfm=transforms.Compose([
67
+        transforms.ToTensor()
68
+    ])
69
+
70
+    train = TrainDataClass(dataset_root, tsfm)
71
+    trainloader = DataLoader(train, batch_size=int(params['batchsize']), shuffle=True)
72
+
73
+    test = TestDataClass(dataset_root, tsfm)
74
+    testloader = DataLoader(test, batch_size=int(params['batchsize']), shuffle=True)
75
+
76
+    return classes, trainloader, testloader
77
+
78
+
79
+
80
+
81
+def Model_Construct(params, lcfg_name):
82
+    if params['bbname'] == 'moblienetv2':
83
+        model = torch.hub.load('pytorch/vision', 'mobilenet_v2', pretrained=True)
84
+        return model
85
+    if params['bbname'] == 'resnet50':
86
+        model = torch.hub.load('pytorch/vision', 'resnet50', pretrained=True)
87
+        return model
88
+    
89
+
90
+def Train(params, lcfg_name, model, trainLoader, testLoader, criterion, optimizer):
91
+    params = params
92
+    lcfg_name = lcfg_name
93
+    model = model
94
+    trainLoader = trainLoader
95
+    criterion = criterion
96
+    optimizer = optimizer
97
+    weight_dir_root = 'weights_backup'
98
+    acc_dir_root = 'accs'
99
+
100
+    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
101
+    #print(torch.cuda.device_count())
102
+    print(device)
103
+    model = model.to(device)
104
+                
105
+    for epoch in range(int(params['epoch'])):    
106
+        running_loss = 0.0
107
+        for i, data in enumerate(trainLoader, 0):
108
+            # [inputs, labels]의 목록인 data로부터 입력을 받은 후;
109
+            inputs, labels = data[0].to(device), data[1].to(device)
110
+
111
+            # 변화도(Gradient) 매개변수를 0으로 만들고
112
+            optimizer.zero_grad()
113
+
114
+            # 순전파 + 역전파 + 최적화를 한 후
115
+            outputs = model(inputs).to(device)
116
+            loss = criterion(outputs, labels)
117
+            loss.backward()
118
+            optimizer.step()
119
+
120
+            # 통계를 출력합니다.
121
+            running_loss += loss.item()
122
+            #print(i)
123
+            if i % 50 == 49:    # print every 50 mini-batches
124
+                print('[%d, %5d] loss: %.3f' %
125
+                      (epoch + 1, i + 1, running_loss / 2000))                
126
+                running_loss = 0.0
127
+        correct = 0
128
+        total = 0
129
+        with torch.no_grad():
130
+            for data in testLoader:
131
+                inputs, labels = data[0].to(device), data[1].to(device)
132
+                outputs = model(inputs).to(device)
133
+                _, predicted = torch.max(outputs.data, 1)
134
+                total += labels.size(0)
135
+                correct += (predicted == labels).sum().item()
136
+        accuracy = (100 * correct / total)
137
+        print('Accuracy: {0}'.format(accuracy))
138
+
139
+        acc_name = os.path.join(os.getcwd(),acc_dir_root,lcfg_name + '.csv')
140
+        weight_name = os.path.join(os.getcwd(), weight_dir_root,lcfg_name,params['role']+'_'+str(epoch+1)+'.pth')
141
+
142
+        if epoch % int(params['saveperiod']) == (int(params['saveperiod']) - 1):
143
+            params['savedat'] = epoch + 1
144
+            params['accuracy'] = accuracy
145
+            cols = params.keys()
146
+            #NOTE: dictionary needs extend
147
+            if not os.path.isfile(acc_name):                
148
+                df = pd.DataFrame(index = range(0), columns = cols)
149
+                row = list(params.values())
150
+                
151
+                df = df.append(pd.Series(row, index=cols), ignore_index= True)
152
+                df.to_csv(acc_name)
153
+            else:
154
+                df = pd.read_csv(acc_name, index_col = 0)                
155
+                row = list(params.values())                
156
+                df = df.append(pd.Series(row, index=cols), ignore_index= True)
157
+                df.to_csv(acc_name)
158
+
159
+            if not os.path.isfile(weight_name):
160
+                torch.save(model.state_dict(),weight_name)
161
+        
162
+
163
+
164
+        #if epoch % int(params['saveperiod']) == (int(params['saveperiod']) - 1):            
165
+        #    torch.save(model.state_dict(), os.path.join(os.getcwd(), weight_dir_root,lcfg_name))
166
+
167
+    print('Finished Training')
168
+    return model
169
+
170
+
171
+'''
172
+def Test(model, testLoader):
173
+    correct = 0
174
+    total = 0
175
+    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
176
+
177
+    with torch.no_grad():
178
+        for data in testLoader:
179
+            inputs, labels = data[0].to(device), data[1].to(device)
180
+            outputs = model(inputs).to(device)
181
+            _, predicted = torch.max(outputs.data, 1)
182
+            total += labels.size(0)
183
+            correct += (predicted == labels).sum().item()
184
+    accuracy = (100 * correct / total)
185
+    print('Accuracy: {}'.format(accuracy))
186
+    return accuracy
187
+'''
188
+
189
+
190
+
191
+def Save_Weight(params, lcfg_name):
192
+    DEFAULT_DIR = 'weights_backup'
193
+    pass
194
+
195
+
196
+def Save_Result(params, lcfg_name):
197
+    DEFAULT_DIR = 'acc_save'
198
+    result_file = os.path.join(os.getcwd(),DEFAULT_DIR,lcfg_name) + '.csv'
199
+    
200
+    if os.path.isfile(result_file):
201
+        df = pd.read_csv(result_file)
202
+    else:
203
+        cols = ['backbone', 'dataset', 'epoch', 'batchsize', 'optimizer', 'learningloss', 'lossfunction', 'saveat', 'accuracy', 'precision', 'recall']
204
+        #row = []
205
+        df = pd.DataFrame(params, columns = cols)
206
+        print(df)
207
+        df.to_csv(result_file)
208
+
209
+    pass
210
+
211
+def Set_Optimizer(params, model):    
212
+    if params['optimizer'] == 'RMSprop':
213
+        optimizer = optim.RMSprop(model.parameters(), lr = float(params['learningloss']), momentum=0.9)
214
+        return optimizer
215
+    elif params['optimizer'] == 'SGD':
216
+        optimizer = optim.SGD(model.parameters(), lr = float(params['learningloss']), momentum=0.9)
217
+        return optimizer
218
+    elif params['optimizer'] == 'Adam':
219
+        optimizer = optim.Adam(model.parameters(), lr = float(params['learningloss']))
220
+        return optimizer
221
+        
222
+        
223
+    
224
+
225
+
226
+
227
+
228
+if __name__ == "__main__":    
229
+    for root, dirs, files in os.walk('.', topdown = True):
230
+        for filename in files:
231
+            if filename.endswith(('lcfg')):                                
232
+                lcfg_path = os.path.join(root, filename)
233
+                lcfg_name = os.path.splitext(filename)[0]
234
+                
235
+                params = Read_Config(lcfg_path)
236
+                #print(params)
237
+                if not os.path.exists(os.path.join(os.getcwd(),weight_dir_root,lcfg_name)):
238
+                    os.makedirs(os.path.join(os.getcwd(),weight_dir_root,lcfg_name), exist_ok=True)
239
+                else:
240
+                    pass
241
+
242
+                classes, trainLoader, testLoader = Preprocess(params, lcfg_name)
243
+                #print(classes)
244
+
245
+                model = Model_Construct(params, lcfg_name)
246
+
247
+                #print(model.eval())
248
+                if params['lossfunction'] == 'CrossEntropyLoss':
249
+                    criterion = nn.CrossEntropyLoss()
250
+                else:
251
+                    criterion = nn.MultiLabelMarginLoss()
252
+
253
+                optimizer = Set_Optimizer(params, model)
254
+                
255
+                model = Train(params, lcfg_name, model, trainLoader, testLoader, criterion, optimizer)               
256
+            else:
257
+                pass

+ 0
- 1
weights_backup/sample_shape_mobilenetv2_201118/100_sample_shape_mobilenetv2_201118.rtf 파일 보기

@@ -1 +0,0 @@
1
-{\rtf1}

+ 0
- 1
weights_backup/sample_shape_mobilenetv2_201118/200_sample_shape_mobilenetv2_201118 - Copy.rtf 파일 보기

@@ -1 +0,0 @@
1
-{\rtf1}

Loading…
취소
저장