https://github.com/5j54d93/cnns-fruits360
Train CNNs for the fruits360 data set in NTOU CS「Machine Vision」class.
https://github.com/5j54d93/cnns-fruits360
cnns cs fruits360 ntou opynb python
Last synced: 8 months ago
JSON representation
Train CNNs for the fruits360 data set in NTOU CS「Machine Vision」class.
- Host: GitHub
- URL: https://github.com/5j54d93/cnns-fruits360
- Owner: 5j54d93
- License: mit
- Created: 2022-03-07T14:31:29.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-03-07T14:44:24.000Z (over 3 years ago)
- Last Synced: 2024-05-20T22:42:57.631Z (over 1 year ago)
- Topics: cnns, cs, fruits360, ntou, opynb, python
- Language: Jupyter Notebook
- Homepage:
- Size: 18.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# CNNs fruits360



Train CNNs for the fruits360 data set in NTOU CS「Machine Vision」class.
## [CNN on a pretrained model](https://github.com/5j54d93/CNNs-fruits360/blob/main/CNN%20on%20a%20pre-trained%20model.ipynb)
Build a CNN on a pretrained model, ResNet50.
Finetune the pretrained model when training my CNN.
### 定義卷積神經網路架構:
```python
def fruit_model_on_pretrained(height,width,channel):
model = Sequential(name="fruit_pretrained")
pretrained = tf.keras.applications.resnet.ResNet50(include_top=False,input_shape=(100,100,3))
model.add(pretrained)
model.add(tf.keras.layers.GlobalAveragePooling2D())
model.add(Dense(16, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(2,activation='softmax'))
pretrained.trainable = False
model.compile(loss=tf.keras.losses.SparseCategoricalCrossentropy(),optimizer='adam', metrics=['accuracy'])
return model
model = fruit_model_on_pretrained(100,100,3)
model.summary()
```
## [CNN's neural architecture include ResBlock](https://github.com/5j54d93/CNNs-fruits360/blob/main/CNN's%20neural%20architecture%20include%20ResBlock.ipynb)
Build a CNN whose neural architecture includes ResBlock.
### 定義卷積神經網路架構:
```python
images = keras.layers.Input(x_train.shape[1:])
x = keras.layers.Conv2D(filters=16, kernel_size=[1,1], padding='same')(images)
block = keras.layers.Conv2D(filters=16, kernel_size=[3,3], padding="same")(x)
block = keras.layers.BatchNormalization()(block)
block = keras.layers.Activation("relu")(block)
block = keras.layers.Conv2D(filters=16, kernel_size=[3,3],padding="same")(block)
net = keras.layers.add([x,block])
net = keras.layers.BatchNormalization()(net)
net = keras.layers.Activation("relu")(net)
net = keras.layers.MaxPooling2D(pool_size=(2,2),name="block_1")(net)
x = keras.layers.Conv2D(filters=32, kernel_size=[1,1], padding='same')(net)
block = keras.layers.Conv2D(filters=32, kernel_size=[3,3], padding="same")(x)
block = keras.layers.BatchNormalization()(block)
block = keras.layers.Activation("relu")(block)
block = keras.layers.Conv2D(filters=32, kernel_size=[3,3],padding="same")(block)
net = keras.layers.add([x,block])net=keras.layers.BatchNormalization()(net)
net = keras.layers.Activation("relu")(net)
net = keras.layers.MaxPooling2D(pool_size=(2,2),name="block_2")(net)
x = keras.layers.Conv2D(filters=64, kernel_size=[1,1], padding='same')(net)
block = keras.layers.Conv2D(filters=64, kernel_size=[3,3], padding="same")(x)
block = keras.layers.BatchNormalization()(block)
block = keras.layers.Activation("relu")(block)
block = keras.layers.Conv2D(filters=64, kernel_size=[3,3],padding="same")(block)
net = keras.layers.add([x,block])
net = keras.layers.Activation("relu", name="block_3")(net)
net = keras.layers.BatchNormalization()(net)
net = keras.layers.Dropout(0.25)(net)
net = keras.layers.GlobalAveragePooling2D()(net)
net = keras.layers.Dense(units=nclasses,activation="softmax")(net)
model = keras.models.Model(inputs=images,outputs=net)
model.summary()
```
## License:MIT
This package is [MIT licensed](https://github.com/5j54d93/CNNs-fruits360/blob/main/LICENSE).