--- license: agpl-3.0 base_model: - Ultralytics/YOLOv8 library_name: ultralytics pipeline_tag: object-detection tags: - anime - face - yolov8 - face detection model-index: - name: Fuyucchi/yolov8_animeface results: - task: type: object-detection metrics: - type: precision value: 0.953 name: mAP50(box) - type: precision value: 0.956 name: Precision - type: recall value: 0.919 name: Recall - type: precision value: 0.532 name: mAP50-95(box) --- # yolov8_animeface Anime Face Detection using YOLOv8 ## Dataset Dataset was made created with 10 000 images manually annotated from safebooru. Split was train 70, val 20, test 10. ## Performance This model is based on yolov8x6. It has been trained on the said dataset for 300 epoch at 1280px*1280px. It took ~110 hours to train on a RTX A4000. On my dataset, the model performs particularly well with the default parameters. ``` Images Instances Box(P R mAP50 mAP50-95): 1002 1562 0.957 0.924 0.955 0.534 Speed: 1.3ms preprocess, 81.9ms inference, 0.0ms loss, 0.8ms postprocess per image ``` While it doesn't provide a huge mAP50-95, its predictions are always correct on the files I've tested. Confidence could be higher, but the model is very precise. ![](./demo/val/confusion_matrix.png "Confusion Matrix") *Confusion matrix of the model, generated on the test set* ![](./demo/val/PR_curve.png "PR curve") *PR curve of the model, generated on the test set* Other metrics are available in the `./demo/val` subfolder. ## Demo Manual annotation | yolov8_animeface :-------------------------:|:-------------------------: ![](./demo/val/val_batch1_labels.jpg "1st batch labels") | ![](./demo/val/val_batch1_pred.jpg "Prediction made by yolov8_animeface") ![](./demo/val/val_batch2_labels.jpg "2nd batch labels") | ![](./demo/val/val_batch2_pred.jpg "Prediction made by yolov8_animeface") ## Comparison with an existing model While we can argue about the comparison between two models from different generations, I believe it is interesting to compare this model with [zymk9's model](https://github.com/zymk9/yolov5_anime), based on yolov5. They both have the same purpose and were trained in the same fashion. On the same dataset with the same parameters (conf=0.001 & iou=0.6), yolov8x6-animeface produces better metrics than the one on yolov5x. yolov8-animeface: ``` Images Instances Box(P R mAP50 mAP50-95): 1002 1562 0.956 0.919 0.953 0.532 Speed: 1.2ms preprocess, 81.2ms inference, 0.0ms loss, 1.0ms postprocess per image ``` yolov5-anime: ``` Images Instances Box(P R mAP50 mAP50-95): 1003 1566 0.778 0.685 0.633 0.232 Speed: 1.5ms pre-process, 85.5ms inference, 1.4ms NMS per image at shape (32, 3, 1280, 1280) ``` yolov5-anime provides better results when images are resized at 640px, but it still is inferior to yolov8-animeface with the same parameters. Surprisingly enough, yolov5 is way more confident that yolov8. However, it also has way more false positives. Yolov8_animeface | Yolov5_anime :-------------------------:|:-------------------------: ![](./demo/comparison/yolov8_animeface/test_priconne.png "Test on Priconne with yolov8") | ![](./demo/comparison/yolov5_anime/test_priconne.jpg "Test on Priconne with yolov5") ![](./demo/comparison/yolov8_animeface/test_uma.png "Test on Uma with yolov8") | ![](./demo/comparison/yolov5_anime/test_uma.jpg "Test on Uma with yolov5") ## Conclusion While this model performs greatly on my dataset, my metrics can differ from yours. One lighter model might be released on a later occasion. Based on YOLOv8 by Jocher, G., Chaurasia, A., & Qiu, J. (2023). Ultralytics YOLO (Version 8.0.0) [Computer software]. https://github.com/ultralytics/ultralytics