# [88th place solution] How a beginner just barely won a medal

88th place solution
I would like to thank everyone who made this wonderful competition possible. In addition, thank you to everyone who offered advice in my discussions. And the utmost thanks to my teammate
[@kotakatayama](https://www.kaggle.com/kotakatayama)
.
I have learned from various published notebooks. In particular, I have greatly benefited from the following notebooks.
I made a few changes to published notebooks and was able to finish in the medal range in the first time. I hope this will be helpful to kagglers like me who are aiming for a first medal.
Baseline
[Baseline UNet train + submit](https://www.kaggle.com/code/fnands/baseline-unet-train-submit)
Making dataset
[CZII making datasets for YOLO](https://www.kaggle.com/code/itsuki9180/czii-making-datasets-for-yolo)
[CZII making datasets for YOLO + synthetic data](https://www.kaggle.com/code/sersasj/czii-making-datasets-for-yolo-synthetic-data)
YOLO training
[CZII YOLO11 Training Baseline](https://www.kaggle.com/code/itsuki9180/czii-yolo11-training-baseline)
UNET training
[3D U-Net : Training Only](https://www.kaggle.com/code/ahsuna123/3d-u-net-training-only)
Validation
[3d-unet using 2d image encoder](https://www.kaggle.com/code/hengck23/3d-unet-using-2d-image-encoder)
Ensemble / Submission
[CZII|YOLO11+Unet3D-Monai|LB.707](https://www.kaggle.com/code/hideyukizushi/czii-yolo11-unet3d-monai-lb-707)
[CZII YOLO11 Submission Baseline with KDTree Update](https://www.kaggle.com/code/sersasj/czii-yolo11-submission-baseline-with-kdtree-update)
[CZII YOLO11 Submission Baseline](https://www.kaggle.com/code/itsuki9180/czii-yolo11-submission-baseline)
MY SOLUTION SUMMARY (PUBLIC= 0.730, PRIVATE = 0.723)
My solution is an ensemble of 7 YOLO models and 1 3dUnet. These models have different strengths from each other, and I have seen significant score improvement from the ensemble.
First I looked for any improvements in the published notebooks.
I found that multiple YOLO model ensembles can improve scores. Using
[this ensemble approach](https://www.kaggle.com/code/hideyukizushi/czii-yolo11-unet3d-monai-lb-707)
, about three YOLOs use is most effective.
However, it seemed wasteful to use only 3 YOLO models when creating 7 YOLO models during cross-validation. Therefore, we decided to modify the ensemble method slightly and only submit particles detected by two or more of the 7 YOLOs.
![](assets/906d7f8ae7f2bce220572bee.png)
1. TRAINING
1.1. Pretraining YOLO with
[synthetic data](https://www.kaggle.com/code/itsuki9180/czii-making-datasets-for-yolo)
(lr = 3e-4)
1.1. Fine tuning using the training data set provided by the competition(lr = 3e-5)
At this time, 7 expriments are split 6/1 for cross-validation (7 YOLO models are created)
Reducing the learning rate of fine tuning improved the CV and LB scores.
Hyperparameters other than lr is the same to
[this notebook](https://www.kaggle.com/code/itsuki9180/czii-yolo11-training-baseline)
1.3. 3dunet training
I used 3dunet in
[this notebook]((https://www.kaggle.com/code/hideyukizushi/czii-yolo11-unet3d-monai-lb-707)
) without change
2. ENSEMBLE
2.1. YOLO ensemble
Particles detected in two or more of the seven YOLOs were considered YOLO predictions
exp, group  grouped:
    group = group.reset_index(drop=)
    coords = group[[, , ]].values
    db = DBSCAN(eps=p_rad, min_samples=, metric=).fit(coords)
    labels = db.labels_ 
    group[] = labels
    group = group[group[] != -] 
     cluster_id  np.unique(labels):
2.2. YOLO + 3DUnet ensemble
Ensemble YOLO prediction with 3dUnet predictions in
[this way](https://www.kaggle.com/code/hideyukizushi/czii-yolo11-unet3d-monai-lb-707)
What we tried but didn't work well
1. Adding false positive particles to training
Many pointed out that the labels given in this competition were missed. Therefore, we gave labels to the false positives in the model and trained again, but this did not improve the scores.
2. Prediction by combining images from the side
YOLO training data was created using lateral cross sections and used in combination with the original YOLO to stabilize detection, but this did not improve scores.
Thank you for reading this far. I will participate in more competitions . I also look for members to work on this together!
I would welcome any suggestions or advice on how to improve this solution.