diff --git a/README.md b/README.md index 61db709..b81d5a2 100644 --- a/README.md +++ b/README.md @@ -1 +1,114 @@ -# FIAT-Release \ No newline at end of file + + +FIAT 0.6 (Fast Image Annotation Tool) +======================= + +FIAT is a free image labeling tool developed in C# WPF based on Visual Studio 2022
+The current version supports labeling classification datasets and provides a PyTorch dataset loader. + +Development Environment +======================= + - **Visual Studio 2022** + - **Microsoft .NET 6** + + +Download +======================= + +- FIAT 0.6 download +- .NET6 framework + +Reference +======================= +- FIAT dataset example +- PyTorch training loop example (classification) + +DEMO +======================= +- Classification +
+ +
+ +Menu +======================= +
+ +
+ +Shortcut Key +======================= +* F1~F12 : Label the image with the target label at that index +* Ctrl + S : Save all label information +* Ctrl + O : Open image folder +* Up : Previous image +* Down : Next image + +PyTorch training loop example +======================= +``` python +import torch +import torch.nn as nn + +from torch.utils.data import DataLoader + +from util.FIATClassificationDataset import FIATClassificationDataset + + +batch_size = 1 +training_epochs = 1 + +datasets = FIATClassificationDataset('C://Github//FIAT//example_dataset//food//', #FIAT dataset path + label_height=224, #image height + label_width=224, #image width + isColor=True, #color load flag + isNorm=False) #0~1 normalization flag + +data_loader = DataLoader(datasets, batch_size=batch_size, shuffle=True) + +for epoch in range(training_epochs): + avg_cost = 0 + avg_acc = 0 + total_batch = len(data_loader) + + for x_input, y_input in data_loader: + print('x_input shape = ', x_input.shape) + print('y_input shape = ', y_input.shape) + +print('Training loop finished') + +``` +``` console +C:\Python\python.exe C:/Github/FIAT/python/torch_classification_FIATC_test.py +{'Color': '#FFFF0000', 'Name': 'Bread'} +{'Color': '#FF008000', 'Name': 'Pizza'} +{'Color': '#FFFFFFFF', 'Name': 'Hamburger'} +{'Color': '#FFF79646', 'Name': 'Chicken'} +x_input shape = torch.Size([1, 3, 224, 224]) +y_input shape = torch.Size([1, 4]) +x_input shape = torch.Size([1, 3, 224, 224]) +y_input shape = torch.Size([1, 4]) +``` + + +Strcture +======================= +### Classification + + +- __target_info.json + - File containing representative label information + - + +- (each file).json + - A file containing user-labeled information about an image. + - + + + + +
+ +[TOP](#vision-studio) + +
diff --git a/example_dataset/food/1_1_bread.jpg b/example_dataset/food/1_1_bread.jpg new file mode 100644 index 0000000..d382f9f Binary files /dev/null and b/example_dataset/food/1_1_bread.jpg differ diff --git a/example_dataset/food/1_1_bread.json b/example_dataset/food/1_1_bread.json new file mode 100644 index 0000000..67c0ed0 --- /dev/null +++ b/example_dataset/food/1_1_bread.json @@ -0,0 +1 @@ +{"FileName":"1_1_bread.jpg","FilePath":"C:\\Users\\wantr\\Desktop\\food\\1_1_bread.jpg","ClassCollection":[{"Color":"#FFFF0000","Name":"Bread"}]} \ No newline at end of file diff --git a/example_dataset/food/1_1_friedchicken.jpg b/example_dataset/food/1_1_friedchicken.jpg new file mode 100644 index 0000000..cc06eed Binary files /dev/null and b/example_dataset/food/1_1_friedchicken.jpg differ diff --git a/example_dataset/food/1_1_friedchicken.json b/example_dataset/food/1_1_friedchicken.json new file mode 100644 index 0000000..a4f992f --- /dev/null +++ b/example_dataset/food/1_1_friedchicken.json @@ -0,0 +1 @@ +{"FileName":"1_1_friedchicken.jpg","FilePath":"C:\\Users\\wantr\\Desktop\\food\\1_1_friedchicken.jpg","ClassCollection":[]} \ No newline at end of file diff --git a/example_dataset/food/1_1_hamburger.jpg b/example_dataset/food/1_1_hamburger.jpg new file mode 100644 index 0000000..eb0a025 Binary files /dev/null and b/example_dataset/food/1_1_hamburger.jpg differ diff --git a/example_dataset/food/1_1_hamburger.json b/example_dataset/food/1_1_hamburger.json new file mode 100644 index 0000000..1f56e16 --- /dev/null +++ b/example_dataset/food/1_1_hamburger.json @@ -0,0 +1 @@ +{"FileName":"1_1_hamburger.jpg","FilePath":"C:\\Users\\wantr\\Desktop\\food\\1_1_hamburger.jpg","ClassCollection":[]} \ No newline at end of file diff --git a/example_dataset/food/1_1_pizza.jpg b/example_dataset/food/1_1_pizza.jpg new file mode 100644 index 0000000..c9d6223 Binary files /dev/null and b/example_dataset/food/1_1_pizza.jpg differ diff --git a/example_dataset/food/1_1_pizza.json b/example_dataset/food/1_1_pizza.json new file mode 100644 index 0000000..1e50c11 --- /dev/null +++ b/example_dataset/food/1_1_pizza.json @@ -0,0 +1 @@ +{"FileName":"1_1_pizza.jpg","FilePath":"C:\\Users\\wantr\\Desktop\\food\\1_1_pizza.jpg","ClassCollection":[{"Color":"#FF008000","Name":"Pizza"}]} \ No newline at end of file diff --git a/example_dataset/food/2_1_bread.jpg b/example_dataset/food/2_1_bread.jpg new file mode 100644 index 0000000..974fe6e Binary files /dev/null and b/example_dataset/food/2_1_bread.jpg differ diff --git a/example_dataset/food/2_1_bread.json b/example_dataset/food/2_1_bread.json new file mode 100644 index 0000000..0edb46c --- /dev/null +++ b/example_dataset/food/2_1_bread.json @@ -0,0 +1 @@ +{"FileName":"2_1_bread.jpg","FilePath":"C:\\Users\\wantr\\Desktop\\food\\2_1_bread.jpg","ClassCollection":[{"Color":"#FFFF0000","Name":"Bread"}]} \ No newline at end of file diff --git a/example_dataset/food/2_1_friedchicken.jpg b/example_dataset/food/2_1_friedchicken.jpg new file mode 100644 index 0000000..afcf14b Binary files /dev/null and b/example_dataset/food/2_1_friedchicken.jpg differ diff --git a/example_dataset/food/2_1_friedchicken.json b/example_dataset/food/2_1_friedchicken.json new file mode 100644 index 0000000..8fd074f --- /dev/null +++ b/example_dataset/food/2_1_friedchicken.json @@ -0,0 +1 @@ +{"FileName":"2_1_friedchicken.jpg","FilePath":"C:\\Users\\wantr\\Desktop\\food\\2_1_friedchicken.jpg","ClassCollection":[{"Color":"#FFF79646","Name":"Chicken"}]} \ No newline at end of file diff --git a/example_dataset/food/2_1_hamburger.jpg b/example_dataset/food/2_1_hamburger.jpg new file mode 100644 index 0000000..5633be5 Binary files /dev/null and b/example_dataset/food/2_1_hamburger.jpg differ diff --git a/example_dataset/food/2_1_hamburger.json b/example_dataset/food/2_1_hamburger.json new file mode 100644 index 0000000..60bddba --- /dev/null +++ b/example_dataset/food/2_1_hamburger.json @@ -0,0 +1 @@ +{"FileName":"2_1_hamburger.jpg","FilePath":"C:\\Users\\wantr\\Desktop\\food\\2_1_hamburger.jpg","ClassCollection":[{"Color":"#FFFFFFFF","Name":"Hamburger"}]} \ No newline at end of file diff --git a/example_dataset/food/2_1_pizza.jpg b/example_dataset/food/2_1_pizza.jpg new file mode 100644 index 0000000..f3509e0 Binary files /dev/null and b/example_dataset/food/2_1_pizza.jpg differ diff --git a/example_dataset/food/2_1_pizza.json b/example_dataset/food/2_1_pizza.json new file mode 100644 index 0000000..f572846 --- /dev/null +++ b/example_dataset/food/2_1_pizza.json @@ -0,0 +1 @@ +{"FileName":"2_1_pizza.jpg","FilePath":"C:\\Users\\wantr\\Desktop\\food\\2_1_pizza.jpg","ClassCollection":[{"Color":"#FF008000","Name":"Pizza"}]} \ No newline at end of file diff --git a/example_dataset/food/3_1_bread.jpg b/example_dataset/food/3_1_bread.jpg new file mode 100644 index 0000000..f785ad1 Binary files /dev/null and b/example_dataset/food/3_1_bread.jpg differ diff --git a/example_dataset/food/3_1_bread.json b/example_dataset/food/3_1_bread.json new file mode 100644 index 0000000..bcd0a50 --- /dev/null +++ b/example_dataset/food/3_1_bread.json @@ -0,0 +1 @@ +{"FileName":"3_1_bread.jpg","FilePath":"C:\\Users\\wantr\\Desktop\\food\\3_1_bread.jpg","ClassCollection":[{"Color":"#FFFF0000","Name":"Bread"}]} \ No newline at end of file diff --git a/example_dataset/food/3_1_friedchicken.jpg b/example_dataset/food/3_1_friedchicken.jpg new file mode 100644 index 0000000..f1da10c Binary files /dev/null and b/example_dataset/food/3_1_friedchicken.jpg differ diff --git a/example_dataset/food/3_1_friedchicken.json b/example_dataset/food/3_1_friedchicken.json new file mode 100644 index 0000000..36fc605 --- /dev/null +++ b/example_dataset/food/3_1_friedchicken.json @@ -0,0 +1 @@ +{"FileName":"3_1_friedchicken.jpg","FilePath":"C:\\Users\\wantr\\Desktop\\food\\3_1_friedchicken.jpg","ClassCollection":[{"Color":"#FFF79646","Name":"Chicken"}]} \ No newline at end of file diff --git a/example_dataset/food/3_1_pizza.jpg b/example_dataset/food/3_1_pizza.jpg new file mode 100644 index 0000000..72a357f Binary files /dev/null and b/example_dataset/food/3_1_pizza.jpg differ diff --git a/example_dataset/food/3_1_pizza.json b/example_dataset/food/3_1_pizza.json new file mode 100644 index 0000000..aea05b0 --- /dev/null +++ b/example_dataset/food/3_1_pizza.json @@ -0,0 +1 @@ +{"FileName":"3_1_pizza.jpg","FilePath":"C:\\Users\\wantr\\Desktop\\food\\3_1_pizza.jpg","ClassCollection":[]} \ No newline at end of file diff --git a/example_dataset/food/4_1_bread.jpg b/example_dataset/food/4_1_bread.jpg new file mode 100644 index 0000000..39a0802 Binary files /dev/null and b/example_dataset/food/4_1_bread.jpg differ diff --git a/example_dataset/food/4_1_bread.json b/example_dataset/food/4_1_bread.json new file mode 100644 index 0000000..d6e123c --- /dev/null +++ b/example_dataset/food/4_1_bread.json @@ -0,0 +1 @@ +{"FileName":"4_1_bread.jpg","FilePath":"C:\\Users\\wantr\\Desktop\\food\\4_1_bread.jpg","ClassCollection":[]} \ No newline at end of file diff --git a/example_dataset/food/___target_info.json b/example_dataset/food/___target_info.json new file mode 100644 index 0000000..2d417d5 --- /dev/null +++ b/example_dataset/food/___target_info.json @@ -0,0 +1 @@ +[{"Color":"#FFFF0000","Name":"Bread"},{"Color":"#FF008000","Name":"Pizza"},{"Color":"#FFFFFFFF","Name":"Hamburger"},{"Color":"#FFF79646","Name":"Chicken"}] \ No newline at end of file diff --git a/python/.idea/misc.xml b/python/.idea/misc.xml new file mode 100644 index 0000000..65531ca --- /dev/null +++ b/python/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/python/.idea/modules.xml b/python/.idea/modules.xml new file mode 100644 index 0000000..614b3c1 --- /dev/null +++ b/python/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/python/.idea/python.iml b/python/.idea/python.iml new file mode 100644 index 0000000..6711606 --- /dev/null +++ b/python/.idea/python.iml @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git a/python/.idea/vcs.xml b/python/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/python/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/python/.idea/workspace.xml b/python/.idea/workspace.xml new file mode 100644 index 0000000..9d2a4f5 --- /dev/null +++ b/python/.idea/workspace.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +