Skip to content

Commit

Permalink
Code coverage integration
Browse files Browse the repository at this point in the history
  • Loading branch information
OlafenwaMoses committed Aug 15, 2019
1 parent a8fe7bb commit 8f07915
Show file tree
Hide file tree
Showing 15 changed files with 155 additions and 154 deletions.
26 changes: 26 additions & 0 deletions .codecov.yml
@@ -0,0 +1,26 @@
codecov:
notify:
require_ci_to_pass: yes

coverage:
precision: 2
round: down
range: "70...100"

status:
project: yes
patch: yes
changes: no

parsers:
gcov:
branch_detection:
conditional: yes
loop: yes
method: no
macro: no

comment:
layout: "header, diff"
behavior: default
require_changes: no
4 changes: 3 additions & 1 deletion .travis.yml
Expand Up @@ -13,7 +13,6 @@ script:
- cd test
- mkdir data-models
- mkdir data-temp
- mkdir data-datasets
- wget -P data-models/ https://github.com/OlafenwaMoses/ImageAI/releases/download/1.0/DenseNet-BC-121-32.h5
- wget -P data-models/ https://github.com/OlafenwaMoses/ImageAI/releases/download/1.0/inception_v3_weights_tf_dim_ordering_tf_kernels.h5
- wget -P data-models/ https://github.com/OlafenwaMoses/ImageAI/releases/download/1.0/resnet50_weights_tf_dim_ordering_tf_kernels.h5
Expand All @@ -27,6 +26,9 @@ script:
- wget -P data-models/ https://github.com/OlafenwaMoses/ImageAI/releases/download/essential-v4/pretrained-yolov3.h5
- wget -P data-models/ https://github.com/OlafenwaMoses/ImageAI/releases/download/essential-v4/hololens-ex-60--loss-2.76.h5
- pytest -v
after_success:
- codecov
- coverage



Expand Down
2 changes: 1 addition & 1 deletion README.md
@@ -1,6 +1,6 @@
# ImageAI (v2.1.3)

[![Build Status](https://travis-ci.com/OlafenwaMoses/ImageAI.svg?branch=master)](https://travis-ci.com/OlafenwaMoses/ImageAI) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/OlafenwaMoses/ImageAI/blob/master/LICENSE)
[![Build Status](https://travis-ci.com/OlafenwaMoses/ImageAI.svg?branch=master)](https://travis-ci.com/OlafenwaMoses/ImageAI) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/OlafenwaMoses/ImageAI/blob/master/LICENSE) [![codecov](https://codecov.io/gh/TechnionYP5777/project-name/branch/master/graph/badge.svg)](https://codecov.io/gh/OlafenwaMoses/ImageAI) [![Build Status](https://travis-ci.org/TechnionYP5777/project-name.png)](https://codecov.io/gh/OlafenwaMoses/ImageAI)

A python library built to empower developers to build applications and systems with self-contained Deep Learning and Computer Vision capabilities using simple
and few lines of code.
Expand Down
Binary file not shown.
Binary file not shown.
31 changes: 31 additions & 0 deletions test/data-datasets/hololens/json/detection_config.json
@@ -0,0 +1,31 @@
{
"anchors" : [
[
59,
48,
131,
79,
211,
210
],
[
0,
0,
0,
0,
0,
0
],
[
0,
0,
0,
0,
0,
0
]
],
"labels" : [
"hololens"
]
}
21 changes: 11 additions & 10 deletions test/test_custom_object_detection.py
Expand Up @@ -14,15 +14,20 @@
model_json = os.path.join(main_folder, "data-json", "detection_config.json")



@pytest.mark.detection
@pytest.mark.yolov3
@pytest.mark.custom_detection
def test_object_detection_yolov3():
@pytest.fixture
def clear_keras_session():
try:
keras.backend.clear_session()
except:
None



@pytest.mark.detection
@pytest.mark.yolov3
@pytest.mark.custom_detection
def test_object_detection_yolov3(clear_keras_session):

detector = CustomObjectDetection()
detector.setModelTypeAsYOLOv3()
detector.setModelPath(model_path)
Expand Down Expand Up @@ -61,11 +66,7 @@ def test_object_detection_yolov3():
@pytest.mark.yolov3
@pytest.mark.custom_detection
@pytest.mark.array_io
def test_object_detection_yolov3_array_io():
try:
keras.backend.clear_session()
except:
None
def test_object_detection_yolov3_array_io(clear_keras_session):

image_input_array = cv2.imread(image_input)

Expand Down
30 changes: 6 additions & 24 deletions test/test_custom_recognition.py
Expand Up @@ -17,14 +17,11 @@ def images_to_image_array():




@pytest.mark.resnet
@pytest.mark.recognition_custom
def test_custom_recognition_model_resnet():

try:
keras.backend.clear_session()
except:
None

predictor = CustomImagePrediction()
predictor.setModelTypeAsResNet()
Expand All @@ -42,10 +39,7 @@ def test_custom_recognition_model_resnet():
@pytest.mark.resnet
@pytest.mark.recognition_custom
def test_custom_recognition_full_model_resnet():
try:
keras.backend.clear_session()
except:
None

predictor = CustomImagePrediction()
predictor.setModelPath(os.path.join(main_folder, "data-models", "idenprof_full_resnet_ex-001_acc-0.119792.h5"))
predictor.setJsonPath(model_json=os.path.join(main_folder, "data-json", "idenprof.json"))
Expand All @@ -61,10 +55,7 @@ def test_custom_recognition_full_model_resnet():
@pytest.mark.densenet
@pytest.mark.recognition_custom
def test_custom_recognition_model_densenet():
try:
keras.backend.clear_session()
except:
None

predictor = CustomImagePrediction()
predictor.setModelTypeAsDenseNet()
predictor.setModelPath(os.path.join(main_folder, "data-models", "idenprof_densenet-0.763500.h5"))
Expand All @@ -84,10 +75,7 @@ def test_custom_recognition_model_densenet():
@pytest.mark.recognition_custom
@pytest.mark.recognition_multi
def test_custom_recognition_model_resnet_multi():
try:
keras.backend.clear_session()
except:
None

predictor = CustomImagePrediction()
predictor.setModelTypeAsResNet()
predictor.setModelPath(os.path.join(main_folder, "data-models", "idenprof_resnet.h5"))
Expand All @@ -110,10 +98,7 @@ def test_custom_recognition_model_resnet_multi():
@pytest.mark.recognition_custom
@pytest.mark.recognition_multi
def test_custom_recognition_full_model_resnet_multi():
try:
keras.backend.clear_session()
except:
None

predictor = CustomImagePrediction()
predictor.setModelPath(os.path.join(main_folder, "data-models", "idenprof_full_resnet_ex-001_acc-0.119792.h5"))
predictor.setJsonPath(model_json=os.path.join(main_folder, "data-json", "idenprof.json"))
Expand All @@ -135,10 +120,7 @@ def test_custom_recognition_full_model_resnet_multi():
@pytest.mark.recognition_custom
@pytest.mark.recognition_multi
def test_custom_recognition_model_densenet_multi():
try:
keras.backend.clear_session()
except:
None

predictor = CustomImagePrediction()
predictor.setModelTypeAsDenseNet()
predictor.setModelPath(os.path.join(main_folder, "data-models", "idenprof_densenet-0.763500.h5"))
Expand Down
19 changes: 9 additions & 10 deletions test/test_custom_video_detection.py
Expand Up @@ -14,18 +14,21 @@
model_json = os.path.join(main_folder, "data-json", "detection_config.json")


@pytest.fixture
def clear_keras_session():
try:
keras.backend.clear_session()
except:
None


@pytest.mark.detection
@pytest.mark.custom_detection
@pytest.mark.video_detection
@pytest.mark.custom_video_detection
@pytest.mark.yolov3
def test_custom_video_detection_yolov3():
def test_custom_video_detection_yolov3(clear_keras_session):

try:
keras.backend.clear_session()
except:
None

detector = CustomVideoObjectDetection()
detector.setModelTypeAsYOLOv3()
Expand All @@ -46,12 +49,8 @@ def test_custom_video_detection_yolov3():
@pytest.mark.custom_video_detection
@pytest.mark.yolov3
@pytest.mark.custom_video_detection_analysis
def test_custom_video_detection_yolov3_analysis():
def test_custom_video_detection_yolov3_analysis(clear_keras_session):

try:
keras.backend.clear_session()
except:
None

detector = CustomVideoObjectDetection()
detector.setModelTypeAsYOLOv3()
Expand Down
14 changes: 9 additions & 5 deletions test/test_detection_model_training.py
Expand Up @@ -12,17 +12,21 @@
pretrained_model = os.path.join(main_folder, "data-models", "pretrained-yolov3.h5")


@pytest.fixture
def clear_keras_session():
try:
keras.backend.clear_session()
except:
None


@pytest.mark.detection
@pytest.mark.training
@pytest.mark.detection_training
@pytest.mark.detection_transfer_learning
@pytest.mark.yolov3
def test_detection_training():
def test_detection_training(clear_keras_session):

try:
keras.backend.clear_session()
except:
None

trainer = DetectionModelTrainer()
trainer.setModelTypeAsYOLOv3()
Expand Down
43 changes: 10 additions & 33 deletions test/test_image_recognition.py
Expand Up @@ -7,13 +7,13 @@

main_folder = os.getcwd()




@pytest.mark.squeezenet
@pytest.mark.recognition
def test_recognition_model_squeezenet():
try:
keras.backend.clear_session()
except:
None


predictor = ImagePrediction()
predictor.setModelTypeAsSqueezeNet()
Expand All @@ -29,10 +29,7 @@ def test_recognition_model_squeezenet():
@pytest.mark.resnet
@pytest.mark.recognition
def test_recognition_model_resnet():
try:
keras.backend.clear_session()
except:
None

predictor = ImagePrediction()
predictor.setModelTypeAsResNet()
predictor.setModelPath(os.path.join(main_folder, "data-models", "resnet50_weights_tf_dim_ordering_tf_kernels.h5"))
Expand All @@ -47,10 +44,7 @@ def test_recognition_model_resnet():
@pytest.mark.inceptionv3
@pytest.mark.recognition
def test_recognition_model_inceptionv3():
try:
keras.backend.clear_session()
except:
None

predictor = ImagePrediction()
predictor.setModelTypeAsInceptionV3()
predictor.setModelPath(os.path.join(main_folder, "data-models", "inception_v3_weights_tf_dim_ordering_tf_kernels.h5"))
Expand All @@ -65,10 +59,7 @@ def test_recognition_model_inceptionv3():
@pytest.mark.densenet
@pytest.mark.recognition
def test_recognition_model_densenet():
try:
keras.backend.clear_session()
except:
None

predictor = ImagePrediction()
predictor.setModelTypeAsDenseNet()
predictor.setModelPath(os.path.join(main_folder, "data-models", "DenseNet-BC-121-32.h5"))
Expand All @@ -85,10 +76,6 @@ def test_recognition_model_densenet():
@pytest.mark.recognition
def test_recognition_model_squeezenet_array_input():

try:
keras.backend.clear_session()
except:
None

predictor = ImagePrediction()
predictor.setModelTypeAsSqueezeNet()
Expand All @@ -105,10 +92,7 @@ def test_recognition_model_squeezenet_array_input():
@pytest.mark.resnet
@pytest.mark.recognition
def test_recognition_model_resnet_array_input():
try:
keras.backend.clear_session()
except:
None

predictor = ImagePrediction()
predictor.setModelTypeAsResNet()
predictor.setModelPath(os.path.join(main_folder, "data-models", "resnet50_weights_tf_dim_ordering_tf_kernels.h5"))
Expand All @@ -124,10 +108,7 @@ def test_recognition_model_resnet_array_input():
@pytest.mark.inceptionv3
@pytest.mark.recognition
def test_recognition_model_inceptionv3_array_input():
try:
keras.backend.clear_session()
except:
None

predictor = ImagePrediction()
predictor.setModelTypeAsInceptionV3()
predictor.setModelPath(os.path.join(main_folder, "data-models", "inception_v3_weights_tf_dim_ordering_tf_kernels.h5"))
Expand All @@ -143,10 +124,7 @@ def test_recognition_model_inceptionv3_array_input():
@pytest.mark.densenet
@pytest.mark.recognition
def test_recognition_model_densenet_array_input():
try:
keras.backend.clear_session()
except:
None

predictor = ImagePrediction()
predictor.setModelTypeAsDenseNet()
predictor.setModelPath(os.path.join(main_folder, "data-models", "DenseNet-BC-121-32.h5"))
Expand All @@ -159,4 +137,3 @@ def test_recognition_model_densenet_array_input():
assert isinstance(predictions[0], str)
assert isinstance(probabilities[0], float)

test_recognition_model_squeezenet()

0 comments on commit 8f07915

Please sign in to comment.