dataset:Verah/Curculionidae-alpha license:mit region:us
---
license: mit
datasets:
- Verah/Curculionidae-alpha
---
A simple retinanet_R_101_FPN model to detect (bounding box) and classify insects between these four species:
- Animalia Arthropoda Insecta Coleoptera Curculionidae Cactophagus spinolae
- Animalia Arthropoda Insecta Coleoptera Curculionidae Cyrtepistomus castaneus
- Animalia Arthropoda Insecta Coleoptera Curculionidae Diaprepes abbreviatus
- Animalia Arthropoda Insecta Coleoptera Curculionidae Larinus carlinae

![Training and Validation Loss](loss.png)


![Training and Validation Loss](example.png)

inference example, requires detectron2
```python
from detectron2.config import get_cfg
from detectron2.engine import DefaultPredictor
from detectron2 import model_zoo
import cv2

# edit all of these
image = cv2.imread("../../Datasets/inaturalist2021/custom2/val/imgs/01.jpg")
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file('COCO-Detection/retinanet_R_101_FPN_3x.yaml'))
cfg.MODEL.WEIGHTS = './out3/model_0002899.pth'
cfg.MODEL.DEVICE = 'cuda:0'

predictor = DefaultPredictor(cfg)
outputs = predictor(image)

threshold = 0.5
classes = ["Curculionidae Cactophagus spinolae", "Curculionidae Cyrtepistomus castaneus", "Curculionidae Diaprepes abbreviatus", "Curculionidae Larinus carlinae"]
# Display predictions
preds = outputs["instances"].pred_classes.tolist()
scores = outputs["instances"].scores.tolist()
bboxes = outputs["instances"].pred_boxes

print(preds,scores,bboxes)

for j, bbox in enumerate(bboxes):
    bbox = bbox.tolist()

    score = scores[j]
    pred = preds[j]
    if pred > 3:
        continue
    text = classes[pred]+ " "+ str(score)[:5]

    if score > threshold:
        x1, y1, x2, y2 = [int(i) for i in bbox]

        cv2.rectangle(image, (x1, y1), (x2, y2), (0, 0, 255), 1)
        if y1 < 5:
            y1 = 10
        image = cv2.putText(image, text, (0, y1), cv2.FONT_HERSHEY_SIMPLEX ,  
                   0.5, (0, 0, 255) , 1, cv2.LINE_AA) 
        print(text)

cv2.imshow('image', image)
cv2.waitKey(0)
```